/
TauolappInterface.h
55 lines (55 loc) · 1.7 KB
/
TauolappInterface.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef gen_TauolaInterface_TauolappInterface_h
#define gen_TauolaInterface_TauolappInterface_h
#include "HepPDT/ParticleDataTable.hh"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "GeneratorInterface/TauolaInterface/interface/TauolaInterfaceBase.h"
namespace HepMC
{
class GenEvent;
}
namespace CLHEP
{
class HepRandomEngine;
}
namespace gen {
extern "C" {
void ranmar_( float *rvec, int *lenv );
void rmarin_( int*, int*, int* );
}
class TauolappInterface : public TauolaInterfaceBase {
public:
// ctor & dtor
TauolappInterface( const edm::ParameterSet& );
~TauolappInterface();
void enablePolarization() { fPolarization = true; return; }
void disablePolarization() { fPolarization = false; return; }
void init( const edm::EventSetup& );
const std::vector<int>& operatesOnParticles() { return fPDGs; }
HepMC::GenEvent* decay( HepMC::GenEvent* );
void statistics() ;
void setRandomEngine(CLHEP::HepRandomEngine* v) { fRandomEngine = v; }
static double flat();
private:
// member function(s)
void decodeMDTAU( int );
void selectDecayByMDTAU();
int selectLeptonic();
int selectHadronic();
//
static CLHEP::HepRandomEngine* fRandomEngine;
std::vector<int> fPDGs;
bool fPolarization;
edm::ESHandle<HepPDT::ParticleDataTable> fPDGTable ;
edm::ParameterSet* fPSet;
bool fIsInitialized;
int fMDTAU;
bool fSelectDecayByEvent;
std::vector<int> fLeptonModes;
std::vector<int> fHadronModes;
std::vector<double> fScaledLeptonBrRatios;
std::vector<double> fScaledHadronBrRatios;
};
}
#endif