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 
7 // user include files
10 
13 
14 #include "CLHEP/Random/RandFlat.h"
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 namespace CLHEP {
35  class HepRandomEngine;
36  class RandFlat;
37 }
38 
39 namespace HepMC {
40  class GenParticle;
41  class GenEvent;
42 }
43 
44 namespace gen {
45 
46  class Pythia6Service;
47 
49  {
50  public:
51 
52  // ctor & dtor
55 
56  void init();
57  const std::vector<int>& operatesOnParticles() { return m_PDGs; }
58  HepMC::GenEvent* decay( HepMC::GenEvent* );
59  void addToHepMC(HepMC::GenParticle* partHep, EvtId idEvt, HepMC::GenEvent* theEvent, bool del_daug);
60  void go_through_daughters(EvtParticle* part);
61  void update_candlist( int theIndex, HepMC::GenParticle *thePart );
62 
63  // from Pythia
64  // void call_pygive(const std::string& iParm );
65 
66  private:
67 
69 
70  std::vector<int> m_PDGs;
71 
72  CLHEP::RandFlat* m_flat;
73  EvtGen *m_EvtGen;
74  std::vector<EvtId> forced_Evt; // EvtId's of particles with forced decay
75  std::vector<int> forced_Hep; // HepId's of particles with forced decay
76  int nforced; // number of particles with forced decay
77  int ntotal, npartial, nevent; // generic counters
78 
79  int nPythia;
80  bool usePythia;
81  // std::vector<std::string> pythia_params; // Pythia stuff
82 
83  // Adding parameters for polarization of spin-1/2 particles
84  std::vector<int> polarize_ids;
85  std::vector<double> polarize_pol;
86  std::map<int, float> polarizations;
87 
88  int nlist;
90  int index[10]; // list of candidates to be forced
91 
92  };
93 
94 }
95 
96 #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< int > polarize_ids
std::vector< EvtId > forced_Evt
void go_through_daughters(EvtParticle *part)
Pythia6Service * m_Py6Service
std::map< int, float > polarizations
HepMC::GenParticle * listp[10]
std::vector< double > polarize_pol
std::vector< int > m_PDGs
CLHEP::RandFlat * m_flat
EvtGenInterface(const edm::ParameterSet &)
part
Definition: HCALResponse.h:20
const std::vector< int > & operatesOnParticles()
std::vector< int > forced_Hep