9 #ifndef Pythia8_PartonLevel_H
10 #define Pythia8_PartonLevel_H
12 #include "Pythia8/Basics.h"
13 #include "Pythia8/BeamParticle.h"
14 #include "Pythia8/BeamRemnants.h"
15 #include "Pythia8/Event.h"
16 #include "Pythia8/Info.h"
17 #include "Pythia8/MultipartonInteractions.h"
18 #include "Pythia8/ParticleData.h"
19 #include "Pythia8/PartonSystems.h"
20 #include "Pythia8/PythiaStdlib.h"
21 #include "Pythia8/ResonanceDecays.h"
22 #include "Pythia8/RHadrons.h"
23 #include "Pythia8/Settings.h"
24 #include "Pythia8/SigmaTotal.h"
25 #include "Pythia8/SpaceShower.h"
26 #include "Pythia8/StandardModel.h"
27 #include "Pythia8/TimeShower.h"
28 #include "Pythia8/UserHooks.h"
29 #include "Pythia8/MergingHooks.h"
43 PartonLevel() : userHooksPtr(0) {}
46 bool init( Info* infoPtrIn, Settings& settings,
47 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
48 BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
49 BeamParticle* beamPomAPtrIn, BeamParticle* beamPomBPtrIn,
50 Couplings* couplingsPtrIn, PartonSystems* partonSystemsPtrIn,
51 SigmaTotal* sigmaTotPtr, TimeShower* timesDecPtrIn,
52 TimeShower* timesPtrIn, SpaceShower* spacePtrIn,
53 RHadrons* rHadronsPtrIn, UserHooks* userHooksPtrIn,
54 MergingHooks* mergingHooksPtr,
bool useAsTrial);
60 void setupShowerSys(
Event& process,
Event& event);
61 bool resonanceShowers(
Event& process,
Event& event,
bool skipForR);
64 bool wzDecayShowers(
Event& event);
67 bool hasVetoed()
const {
return doVeto;}
70 void accumulate() {
if (isResolved && !isDiff) multiPtr->accumulate();}
71 void statistics(
bool reset =
false) {
72 if (doMPI) multiMB.statistics(reset);}
76 void resetStatistics() {
if (doMPI) multiMB.resetStatistics(); }
81 double pTLastInShower(){
return pTLastBranch; }
83 int typeLastInShower(){
return typeLastBranch; }
88 static const int NTRY;
91 bool doNonDiff, doDiffraction, doMPI, doMPIMB, doMPISDA, doMPISDB,
92 doMPICD, doMPIinit, doISR, doFSRduringProcess, doFSRafterProcess,
93 doFSRinResonances, doRemnants, doSecondHard, hasLeptonBeams,
94 hasPointLeptons, canVetoPT, canVetoStep, canVetoMPIStep,
95 canVetoEarly, canSetScale, allowRH, earlyResDec, vetoWeakJets,
97 double mMinDiff, mWidthDiff, pMaxDiff, vetoWeakDeltaR2;
101 int nMPI, nISR, nFSRinProc, nFSRinRes, nISRhard, nFSRhard,
102 typeLatest, nVetoStep, typeVetoStep, nVetoMPIStep, iSysNow;
103 double pTsaveMPI, pTsaveISR, pTsaveFSR, pTvetoPT;
106 bool isNonDiff, isDiffA, isDiffB, isDiffC, isDiff, isSingleDiff,
107 isDoubleDiff, isCentralDiff, isResolved, isResolvedA,
108 isResolvedB, isResolvedC;
109 int sizeProcess, sizeEvent, nHardDone, nHardDoneRHad, iDS;
111 vector<bool> inRHadDecay;
112 vector<int> iPosBefShow;
118 ParticleData* particleDataPtr;
124 BeamParticle* beamAPtr;
125 BeamParticle* beamBPtr;
128 BeamParticle* beamHadAPtr;
129 BeamParticle* beamHadBPtr;
130 BeamParticle* beamPomAPtr;
131 BeamParticle* beamPomBPtr;
134 Couplings* couplingsPtr;
137 PartonSystems* partonSystemsPtr;
140 UserHooks* userHooksPtr;
143 TimeShower* timesDecPtr;
144 TimeShower* timesPtr;
147 SpaceShower* spacePtr;
150 MultipartonInteractions multiMB;
151 MultipartonInteractions multiSDA;
152 MultipartonInteractions multiSDB;
153 MultipartonInteractions multiCD;
154 MultipartonInteractions* multiPtr;
157 BeamRemnants remnants;
159 BeamRemnants remnantsCD;
162 RHadrons* rHadronsPtr;
165 ResonanceDecays resonanceDecays;
168 int decideResolvedDiff(
Event& process);
171 bool setupUnresolvedSys(
Event& process,
Event& event);
174 void setupHardSys(
Event& process,
Event& event);
177 void setupResolvedDiff(
Event& process);
180 void leaveResolvedDiff(
int iHardLoop,
Event& process,
Event& event);
183 MergingHooks* mergingHooksPtr;
191 bool canRemoveEvent, canRemoveEmission;
199 #endif // Pythia8_PartonLevel_H