CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ExternalDecayDriver.cc
Go to the documentation of this file.
2 
10 #include "HepMC/GenEvent.h"
12 
13 using namespace gen;
14 using namespace edm;
15 
16 CLHEP::HepRandomEngine* decayRandomEngine = nullptr;
17 
19  : fIsInitialized(false),
20  fTauolaInterface(0),
21  fEvtGenInterface(0),
22  fPhotosInterface(0)
23 {
24  std::vector<std::string> extGenNames =
25  pset.getParameter< std::vector<std::string> >("parameterSets");
26 
27  for (unsigned int ip=0; ip<extGenNames.size(); ++ip ){
28  std::string curSet = extGenNames[ip];
29  if ( curSet == "EvtGen" || curSet == "EvtGenLHC91"){
30  fEvtGenInterface = (EvtGenInterfaceBase*)(EvtGenFactory::get()->create("EvtGenLHC91", pset.getUntrackedParameter< ParameterSet >(curSet)));
34  }
35  else if ( curSet == "Tauola" || curSet == "Tauolapp113a" ){
36  // this is for old tauola27 (+pretauola)
37  //
38  // --> fTauolaInterface = new gen::TauolaInterface(pset.getUntrackedParameter< ParameterSet >(curSet));
39  //
40  // for tauola++, here it should be something like:
41  //
42  fTauolaInterface = (TauolaInterfaceBase*)(TauolaFactory::get()->create("Tauolapp113a", pset.getUntrackedParameter< ParameterSet >(curSet)));
43  fPhotosInterface = (PhotosInterfaceBase*)(PhotosFactory::get()->create("Photos2155", pset.getUntrackedParameter< ParameterSet >(curSet)));
48  }
49  else if ( curSet == "Photos" || curSet == "Photos2155" ){
50  if ( !fPhotosInterface ){
53  }
54  }
55  }
56 }
57 
59 {
60  if ( fEvtGenInterface ) delete fEvtGenInterface;
61  if ( fTauolaInterface ) delete fTauolaInterface;
62  if ( fPhotosInterface ) delete fPhotosInterface;
63 }
64 
65 HepMC::GenEvent* ExternalDecayDriver::decay( HepMC::GenEvent* evt )
66 {
67 
68  if ( !fIsInitialized ) return evt;
69 
70  if ( fEvtGenInterface )
71  {
72  evt = fEvtGenInterface->decay( evt );
73  if ( !evt ) return 0;
74  }
75 
76  if ( fTauolaInterface )
77  {
78  evt = fTauolaInterface->decay( evt );
79  if ( !evt ) return 0;
80  }
81 
82  if ( fPhotosInterface )
83  {
84  evt = fPhotosInterface->apply( evt );
85  if ( !evt ) return 0;
86  }
87 
88  return evt;
89 }
90 
92 {
93 
94  if ( fIsInitialized ) return;
95 
96  if ( fTauolaInterface )
97  {
98  fTauolaInterface->init( es );
99  for ( std::vector<int>::const_iterator i=fTauolaInterface->operatesOnParticles().begin();
100  i!=fTauolaInterface->operatesOnParticles().end(); i++ )
101  fPDGs.push_back( *i );
102  }
103 
104  if ( fEvtGenInterface )
105  {
107  for ( std::vector<int>::const_iterator i=fEvtGenInterface->operatesOnParticles().begin();
108  i!=fEvtGenInterface->operatesOnParticles().end(); i++ )
109  fPDGs.push_back( *i );
110  }
111 
112 
113  if ( fPhotosInterface )
114  {
116 // for tauola++
117  if ( fPhotosInterface )
118  {
119  for ( unsigned int iss=0; iss<fPhotosInterface->specialSettings().size(); iss++ )
120  {
122  }
123  }
124  }
125 
126 // this is specific to old tauola27 only, because it calls up photos automatically
127 //
128 //
129 // if ( fTauolaInterface )
130 // {
131 // // override !
132 // fSpecialSettings.clear();
133 // fSpecialSettings.push_back( "QED-brem-off:15" );
134 // }
135 
136  fIsInitialized = true;
137 
138  return;
139 }
140 
142 {
144  // similar for EvtGen and/or Photos, if needs be
145  return;
146 }
147 
148 void ExternalDecayDriver::setRandomEngine(CLHEP::HepRandomEngine* v)
149 {
154 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
virtual void init()=0
virtual void configureOnlyFor(int)=0
TauolaInterfaceBase * fTauolaInterface
CLHEP::HepRandomEngine * decayRandomEngine
virtual void init(const edm::EventSetup &)
PhotosInterfaceBase * fPhotosInterface
static const std::string kTauola
HepMC::GenEvent * decay(HepMC::GenEvent *)
static const std::string kPhotos
double v[5][pyjets_maxn]
virtual void setRandomEngine(CLHEP::HepRandomEngine *decayRandomEngine)=0
void init(const edm::EventSetup &)
static const std::string kPythia6
virtual HepMC::GenEvent * apply(HepMC::GenEvent *evt)
static const std::string kEvtGen
std::vector< std::string > exSharedResources
virtual const std::vector< int > & operatesOnParticles()
std::vector< std::string > fSpecialSettings
static const std::string kFortranInstance
EvtGenInterfaceBase * fEvtGenInterface
ExternalDecayDriver(const edm::ParameterSet &)
virtual HepMC::GenEvent * decay(HepMC::GenEvent *evt)
virtual HepMC::GenEvent * decay(HepMC::GenEvent *evt)
virtual const std::vector< std::string > & specialSettings()
virtual const std::vector< int > & operatesOnParticles()
volatile std::atomic< bool > shutdown_flag false
virtual void setRandomEngine(CLHEP::HepRandomEngine *v)=0
void setRandomEngine(CLHEP::HepRandomEngine *)
virtual void setRandomEngine(CLHEP::HepRandomEngine *v)=0
T get(const Candidate &c)
Definition: component.h:55
virtual void avoidTauLeptonicDecays()=0