CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EvtGenLHCInterface.h
Go to the documentation of this file.
1 #ifndef gen_EvtGenLHCInterface_h
2 #define gen_EvtGenLHCInterface_h
3 
5 #include <memory>
6 #include <string>
7 
8 // user include files
11 
14 
15 #include "EvtGen/EvtGen.hh"
16 #include "EvtGenBase/EvtId.hh"
17 #include "EvtGenBase/EvtPDL.hh"
18 #include "EvtGenBase/EvtDecayTable.hh"
19 #include "EvtGenBase/EvtSpinType.hh"
20 #include "EvtGenBase/EvtVector4R.hh"
21 #include "EvtGenBase/EvtParticle.hh"
22 #include "EvtGenBase/EvtScalarParticle.hh"
23 #include "EvtGenBase/EvtStringParticle.hh"
24 #include "EvtGenBase/EvtDiracParticle.hh"
25 #include "EvtGenBase/EvtVectorParticle.hh"
26 #include "EvtGenBase/EvtRaritaSchwingerParticle.hh"
27 #include "EvtGenBase/EvtTensorParticle.hh"
28 #include "EvtGenBase/EvtHighSpinParticle.hh"
29 #include "EvtGenBase/EvtStdHep.hh"
30 #include "EvtGenBase/EvtSecondary.hh"
31 #include "EvtGenModels/EvtPythia.hh"
34 
35 class myEvtRandomEngine;
36 
37 
38 namespace HepMC {
39  class GenParticle;
40  class GenEvent;
41 }
42 
43 namespace gen {
44  class Pythia6Service;
45 
47  public:
48 
49  // ctor & dtor
52 
53  void init();
54  const std::vector<int>& operatesOnParticles() { return m_PDGs; }
55  HepMC::GenEvent* decay( HepMC::GenEvent* );
56  void addToHepMC(HepMC::GenParticle* partHep, EvtId idEvt, HepMC::GenEvent* theEvent, bool del_daug);
57  void go_through_daughters(EvtParticle* part);
58  void update_candlist( int theIndex, HepMC::GenParticle *thePart );
59  void setRandomEngine(CLHEP::HepRandomEngine* v);
60  static double flat();
61 
62  // from Pythia
63  // void call_pygive(const std::string& iParm );
64 
65  private:
66 
68 
69  EvtGen *m_EvtGen;
70  std::vector<EvtId> forced_Evt; // EvtId's of particles with forced decay
71  std::vector<int> forced_Hep; // HepId's of particles with forced decay
72  int nforced; // number of particles with forced decay
73  int ntotal, npartial, nevent; // generic counters
74 
75  int nPythia;
76  bool usePythia;
77  // std::vector<std::string> pythia_params; // Pythia stuff
78 
79  // Adding parameters for polarization of spin-1/2 particles
80  std::vector<int> polarize_ids;
81  std::vector<double> polarize_pol;
82  std::map<int, float> polarizations;
83 
84  int nlist;
86  int index[10]; // list of candidates to be forced
87 
89 
90  bool useDefault;
94  std::vector<std::string> forced_names;
95 
96  static CLHEP::HepRandomEngine* fRandomEngine;
97  };
98 }
99 #endif
std::vector< int > polarize_ids
const std::vector< int > & operatesOnParticles()
theIndex(0)
std::map< int, float > polarizations
HepMC::GenParticle * listp[10]
myEvtRandomEngine * the_engine
double v[5][pyjets_maxn]
std::vector< double > polarize_pol
void addToHepMC(HepMC::GenParticle *partHep, EvtId idEvt, HepMC::GenEvent *theEvent, bool del_daug)
HepMC::GenEvent * decay(HepMC::GenEvent *)
Pythia6Service * m_Py6Service
void setRandomEngine(CLHEP::HepRandomEngine *v)
std::vector< EvtId > forced_Evt
void go_through_daughters(EvtParticle *part)
part
Definition: HCALResponse.h:20
EvtGenLHCInterface(const edm::ParameterSet &)
std::vector< std::string > forced_names
void update_candlist(int theIndex, HepMC::GenParticle *thePart)
static double flat()
static CLHEP::HepRandomEngine * fRandomEngine
std::vector< int > forced_Hep