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/HardDiffraction.h" 17 #include "Pythia8/Info.h" 18 #include "Pythia8/JunctionSplitting.h" 19 #include "Pythia8/MergingHooks.h" 20 #include "Pythia8/MultipartonInteractions.h" 21 #include "Pythia8/ParticleData.h" 22 #include "Pythia8/PartonSystems.h" 23 #include "Pythia8/PartonVertex.h" 24 #include "Pythia8/PhysicsBase.h" 25 #include "Pythia8/PythiaStdlib.h" 26 #include "Pythia8/ResonanceDecays.h" 27 #include "Pythia8/RHadrons.h" 28 #include "Pythia8/Settings.h" 29 #include "Pythia8/Settings.h" 30 #include "Pythia8/SharedPointers.h" 31 #include "Pythia8/SigmaTotal.h" 32 #include "Pythia8/SpaceShower.h" 33 #include "Pythia8/StandardModel.h" 34 #include "Pythia8/StringLength.h" 35 #include "Pythia8/TimeShower.h" 36 #include "Pythia8/UserHooks.h" 53 bool init( TimeShowerPtr timesDecPtrIn, TimeShowerPtr timesPtrIn,
54 SpaceShowerPtr spacePtrIn,
RHadrons* rHadronsPtrIn,
55 MergingHooksPtr mergingHooksPtr, PartonVertexPtr partonVertexPtrIn,
56 StringIntPtr stringInteractionPtrIn,
81 bool hasVetoedDiff()
const {
return doDiffVeto;}
82 bool hasVetoedMerging()
const {
return doMergingVeto;}
86 void statistics(
bool reset =
false) {
88 void resetStatistics() {
if (doMPI) multiMB.resetStatistics(); }
102 weightsSimpleShower.getEnhancedTrialPT();
108 weightsSimpleShower.getEnhancedTrialWeight();
118 TimeShowerPtr timesPtr{};
140 static const int NTRY;
143 bool doNonDiff{}, doDiffraction{}, doMPI{}, doMPIMB{}, doMPISDA{},
144 doMPISDB{}, doMPICD{}, doMPIinit{}, doISR{}, doFSRduringProcess{},
145 doFSRafterProcess{}, doFSRinResonances{}, doInterleaveResDec{},
146 doRemnants{}, doSecondHard{}, hasOneLeptonBeam{}, hasTwoLeptonBeams{},
147 hasPointLeptons{}, canVetoPT{}, canVetoStep{}, canVetoMPIStep{},
148 canVetoEarly{}, canSetScale{}, allowRH{}, earlyResDec{},
149 vetoWeakJets{}, canReconResSys{}, doReconnect{}, doHardDiff{},
150 forceResonanceCR{}, doNDgamma{}, doMPIgmgm{}, showUnresGamma{};
152 double mMinDiff{}, mWidthDiff{}, pMaxDiff{}, vetoWeakDeltaR2{};
156 int nMPI{}, nISR{}, nFSRinProc{}, nFSRinRes{}, nISRhard{}, nFSRhard{},
157 typeLatest{}, nVetoStep{}, typeVetoStep{}, nVetoMPIStep{}, iSysNow{},
158 reconnectMode{}, hardDiffSide{}, sampleTypeDiff{};
159 double pTsaveMPI{}, pTsaveISR{}, pTsaveFSR{}, pTvetoPT{};
162 bool isNonDiff{}, isDiffA{}, isDiffB{}, isDiffC{}, isDiff{},
163 isSingleDiff{}, isDoubleDiff{}, isCentralDiff{},
164 isResolved{}, isResolvedA{}, isResolvedB{}, isResolvedC{},
165 isHardDiffA{}, isHardDiffB{}, isHardDiff{}, doDiffVeto{},
166 hardDiffSet{}, isElastic{}, twoHard{};
167 int sizeProcess{}, sizeEvent{}, nHardDone{}, nHardDoneRHad{}, iDS{};
169 vector<bool> inRHadDecay;
170 vector<int> iPosBefShow;
173 bool hasGammaA{}, hasGammaB{}, beamHasGamma{}, beamAisGamma{},
174 beamBisGamma{}, beamAhasGamma{}, beamBhasGamma{}, beamAhasResGamma{},
175 beamBhasResGamma{}, beamHasResGamma{}, isGammaHadronDir{},
177 int gammaMode{}, gammaModeEvent{}, gammaOffset{};
178 double eCMsaveGamma{};
181 PartonVertexPtr partonVertexPtr{};
201 ColRecPtr colourReconnectionPtr{};
210 int decideResolvedDiff(
Event& process);
213 bool setupUnresolvedSys(
Event& process,
Event& event);
216 void setupHardSys(
Event& process,
Event& event);
219 void setupResolvedDiff(
Event& process);
222 void leaveResolvedDiff(
int iHardLoop,
Event& process,
Event& event);
225 void setupHardDiff(
Event& process);
228 void leaveHardDiff(
Event& process,
Event& event,
bool physical =
true);
231 bool setupResolvedLeptonGamma(
Event& process);
235 void leaveResolvedLeptonGamma(
Event& process,
Event& event,
236 bool physical =
true);
239 void saveGammaModeEvent(
int gammaModeA,
int gammaModeB);
242 void cleanEventFromGamma(
Event& event);
245 MergingHooksPtr mergingHooksPtr{};
248 bool doEnhanceTrial{};
249 int nTrialEmissions{};
251 double pTLastBranch{};
252 int typeLastBranch{};
254 bool canRemoveEvent{}, canRemoveEmission{}, doMergingVeto{};
bool hasVetoed() const
Tell whether failure was due to vetoing.
Definition: PartonLevel.h:80
bool wzDecayShowers(Event &event)
Perform decays and showers of W and Z emitted in shower.
Definition: PartonLevel.cc:2956
bool resonanceShowers(Event &process, Event &event, bool skipForR)
Definition: PartonLevel.cc:2624
Definition: PhysicsBase.h:27
void registerSubObject(PhysicsBase &pb)
Register a sub object that should have its information in sync with this.
Definition: PhysicsBase.cc:56
void statistics(bool resetStat=false)
Print statistics on number of multiparton-interactions processes.
Definition: MultipartonInteractions.cc:2871
The Event class holds all info on the generated event.
Definition: Event.h:453
virtual void onInitInfoPtr() override
Definition: PartonLevel.h:125
Definition: BeamParticle.h:133
double getEnhancedTrialWeight()
Get enhanced trial emission weight.
Definition: PartonLevel.h:106
int typeLastInShower()
Provide the type of the last branching in the shower.
Definition: PartonLevel.h:95
bool next(Event &process, Event &event)
Generate the next parton-level process.
Definition: PartonLevel.cc:335
Definition: JunctionSplitting.h:30
double pTLastInShower()
Provide the pT scale of the last branching in the shower.
Definition: PartonLevel.h:93
SpaceShowerPtr spacePtr
Pointer to spacelike showers.
Definition: PartonLevel.h:121
void accumulate()
Definition: MultipartonInteractions.h:206
Definition: RHadrons.h:29
bool canEnhanceTrial()
Check of any trial emissions could have been enhanced.
Definition: PartonLevel.h:98
double getEnhancedTrialPT()
Get enhanced trial emission evolution variable.
Definition: PartonLevel.h:100
Definition: PartonLevel.h:45
void setBeamID(int iPDFA=0)
Switch to new beam particle identities; for similar hadrons only.
Definition: PartonLevel.h:66
void setupShowerSys(Event &process, Event &event)
Perform showers in resonance decay chains. (For special cases.)
Definition: PartonLevel.cc:1651
void initSwitchID(const vector< int > &idAListIn)
Special setup to allow switching between beam PDFs for MPI handling.
Definition: MultipartonInteractions.h:142
Definition: HardDiffraction.h:31
PartonLevel()=default
Constructor.
BeamParticle * beamHadAPtr
Spare copies of normal beam pointers.
Definition: PartonLevel.h:113
bool init(TimeShowerPtr timesDecPtrIn, TimeShowerPtr timesPtrIn, SpaceShowerPtr spacePtrIn, RHadrons *rHadronsPtrIn, MergingHooksPtr mergingHooksPtr, PartonVertexPtr partonVertexPtrIn, StringIntPtr stringInteractionPtrIn, bool useAsTrial)
Initialization of all classes at the parton level.
Definition: PartonLevel.cc:30
void resetTrial()
Reset PartonLevel object for trial shower usage.
Definition: PartonLevel.cc:310
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
void accumulate()
Accumulate, print and reset statistics.
Definition: PartonLevel.h:85
Info * infoPtr
Definition: PhysicsBase.h:78
Definition: MultipartonInteractions.h:100
Definition: BeamRemnants.h:35
void initSwitchID(const vector< int > &idAList)
Definition: PartonLevel.h:61
Definition: ResonanceDecays.h:28
TimeShowerPtr timesDecPtr
Pointers to timelike showers for resonance decays and the rest.
Definition: PartonLevel.h:117
void setBeamID(int iPDFAin)
Switch to new beam particle identities, and possibly PDFs.
Definition: MultipartonInteractions.h:147