23 #ifndef EVTPYTHIAENGINE_HH 24 #define EVTPYTHIAENGINE_HH 35 #include "Pythia8/ParticleData.h" 36 #include "Pythia8/Pythia.h" 47 EvtPythiaEngine( std::string xmlDir =
"./xmldoc",
48 bool convertPhysCodes =
false,
bool useEvtGenRandom =
true );
50 virtual ~EvtPythiaEngine();
58 void updateParticleLists();
59 void updatePhysicsParameters();
61 void createPythiaParticle(
EvtId& particleId,
int PDGCode );
62 bool validPDGCode(
int PDGCode );
63 void updatePythiaDecayTable(
EvtId& particleId,
int aliasInt,
int PDGCode );
64 void storeDaughterInfo(
EvtParticle* theParticle,
int startInt );
66 void clearDaughterVectors();
67 void clearPythiaModeMap();
69 void createDaughterEvtParticles(
EvtParticle* theParent );
73 std::unique_ptr<Pythia8::Pythia> _genericPythiaGen;
74 std::unique_ptr<Pythia8::Pythia> _aliasPythiaGen;
75 Pythia8::Pythia* _thePythiaGenerator;
77 std::vector<int> _daugPDGVector;
78 std::vector<EvtVector4R> _daugP4Vector;
80 typedef std::map<int, std::vector<int>> PythiaModeMap;
81 PythiaModeMap _pythiaModeMap;
83 bool _convertPhysCodes, _initialised, _useEvtGenRandom;
85 std::unique_ptr<EvtPythiaRandom> _evtgenRandom;
87 std::map<int, int> _addedPDGCodes;
virtual void initialise()=0
virtual bool doDecay(EvtParticle *theMother)=0