9 #ifndef Pythia8_ProcessLevel_H
10 #define Pythia8_ProcessLevel_H
12 #include "Pythia8/Basics.h"
13 #include "Pythia8/BeamParticle.h"
14 #include "Pythia8/Event.h"
15 #include "Pythia8/Info.h"
16 #include "Pythia8/ParticleData.h"
17 #include "Pythia8/PartonDistributions.h"
18 #include "Pythia8/ProcessContainer.h"
19 #include "Pythia8/PythiaStdlib.h"
20 #include "Pythia8/ResonanceDecays.h"
21 #include "Pythia8/Settings.h"
22 #include "Pythia8/SigmaTotal.h"
23 #include "Pythia8/SusyCouplings.h"
24 #include "Pythia8/SLHAinterface.h"
25 #include "Pythia8/StandardModel.h"
26 #include "Pythia8/UserHooks.h"
40 ProcessLevel() : iLHACont(-1) {}
46 bool init( Info* infoPtrIn, Settings& settings,
47 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
48 BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
49 BeamParticle* beamGamAPtrIn, BeamParticle* beamGamBPtrIn,
50 BeamParticle* beamVMDAPtrIn, BeamParticle* beamVMDBPtrIn,
51 Couplings* couplingsPtrIn, SigmaTotal* sigmaTotPtrIn,
bool doLHAin,
52 SLHAinterface* slhaInterfacePtrIn, UserHooks* userHooksPtrIn,
53 vector<SigmaProcess*>& sigmaPtrs, vector<PhaseSpace*>& phaseSpacePtrs);
56 void setLHAPtr( LHAup* lhaUpPtrIn) {lhaUpPtr = lhaUpPtrIn;
57 if (iLHACont >= 0) containerPtrs[iLHACont]->setLHAPtr(lhaUpPtr);}
60 bool next(
Event& process);
63 bool nextLHAdec(
Event& process);
66 void accumulate(
bool doAccumulate =
true);
69 void statistics(
bool reset =
false);
72 void resetStatistics();
75 void findJunctions(
Event& junEvent);
78 void initDecays( Info* infoPtrIn, Settings &settings,
79 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn, LHAup* lhaUpPtrIn) {
81 resonanceDecays.init( infoPtrIn, particleDataPtrIn, rndmPtrIn);
82 containerLHAdec.setLHAPtr(lhaUpPtrIn, particleDataPtrIn, &settings,
84 bool nextDecays(
Event& process) {
return resonanceDecays.next( process);}
89 static const int MAXLOOP;
92 bool doSecondHard, doSameCuts, allHardSame, noneHardSame,
93 someHardSame, cutsAgree, cutsOverlap, doResDecays, doISR, doMPI;
95 double mHatMin1, mHatMax1, pTHatMin1, pTHatMax1, mHatMin2, mHatMax2,
96 pTHatMin2, pTHatMax2, sigmaND;
103 vector<ProcessContainer*> containerPtrs;
104 int iContainer, iLHACont;
108 vector<ProcessContainer*> container2Ptrs;
113 ProcessContainer containerLHAdec;
119 ParticleData* particleDataPtr;
125 BeamParticle* beamAPtr;
126 BeamParticle* beamBPtr;
129 BeamParticle* beamGamAPtr;
130 BeamParticle* beamGamBPtr;
133 BeamParticle* beamVMDAPtr;
134 BeamParticle* beamVMDBPtr;
137 Couplings* couplingsPtr;
140 SigmaTotal* sigmaTotPtr;
143 SLHAinterface* slhaInterfacePtr;
146 UserHooks* userHooksPtr;
152 ResonanceDecays resonanceDecays;
155 GammaKinematics gammaKin;
158 bool nextOne(
Event& process);
161 bool nextTwo(
Event& process);
164 bool roomForRemnants();
167 void combineProcessRecords(
Event& process,
Event& process2);
170 bool checkColours(
Event& process);
173 void statistics2(
bool reset);
181 #endif // Pythia8_ProcessLevel_H