CMS 3D CMS Logo

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