10 #ifndef Pythia8_SimpleTimeShower_H 11 #define Pythia8_SimpleTimeShower_H 13 #include "Pythia8/TimeShower.h" 14 #include "Pythia8/SimpleWeakShowerMEs.h" 31 chgType(0), gamType(0), weakType(0), isrType(0), system(0), systemRec(0),
32 MEtype(0), iMEpartner(-1), weakPol(0), oniumType(0), isHiddenValley(false),
33 colvType(0), MEmix(0.), MEorder(true), MEsplit(true), MEgluinoRec(false),
34 isFlexible(false), hasJunction(false),
flavour(), iAunt(),
35 mRad(), m2Rad(), mRec(), m2Rec(), mDip(), m2Dip(), m2DipCorr(), pT2(),
36 m2(), z(), mFlavour(), asymPol(), flexFactor(), pAccept() {}
37 TimeDipoleEnd(
int iRadiatorIn,
int iRecoilerIn,
double pTmaxIn = 0.,
38 int colIn = 0,
int chgIn = 0,
int gamIn = 0,
int weakTypeIn = 0,
39 int isrIn = 0,
int systemIn = 0,
int MEtypeIn = 0,
int iMEpartnerIn = -1,
40 int weakPolIn = 0,
int oniumTypeIn = 0,
41 bool isHiddenValleyIn =
false,
int colvTypeIn = 0,
double MEmixIn = 0.,
42 bool MEorderIn =
true,
bool MEsplitIn =
true,
bool MEgluinoRecIn =
false,
43 bool isFlexibleIn =
false,
bool hasJunctionIn =
false) :
44 iRadiator(iRadiatorIn), iRecoiler(iRecoilerIn), pTmax(pTmaxIn),
45 colType(colIn), chgType(chgIn), gamType(gamIn), weakType(weakTypeIn),
46 isrType(isrIn), system(systemIn), systemRec(systemIn), MEtype(MEtypeIn),
47 iMEpartner(iMEpartnerIn), weakPol(weakPolIn), oniumType(oniumTypeIn),
48 isHiddenValley(isHiddenValleyIn), colvType(colvTypeIn), MEmix(MEmixIn),
49 MEorder (MEorderIn), MEsplit(MEsplitIn), MEgluinoRec(MEgluinoRecIn),
50 isFlexible(isFlexibleIn), hasJunction(hasJunctionIn),
51 flavour(), iAunt(), mRad(), m2Rad(), mRec(), m2Rec(), mDip(), m2Dip(),
52 m2DipCorr(), pT2(), m2(), z(), mFlavour(), asymPol(), flexFactor(),
58 int colType, chgType, gamType, weakType, isrType, system, systemRec,
59 MEtype, iMEpartner, weakPol, oniumType;
63 bool MEorder, MEsplit, MEgluinoRec, isFlexible;
69 double mRad, m2Rad, mRec, m2Rec, mDip, m2Dip, m2DipCorr,
70 pT2, m2, z, mFlavour, asymPol, flexFactor, pAccept;
71 double m2A{0}, m2B{0}, m2C{0}, m2gg{-1};
88 pTLastBranch(), doQCDshower(), doQEDshowerByQ(), doQEDshowerByL(),
89 doQEDshowerByOther(), doQEDshowerByGamma(), doWeakShower(),
90 doMEcorrections(), doMEextended(), doMEafterFirst(),
91 doPhiPolAsym(), doPhiPolAsymHard(), doInterleave(),
92 doInterleaveResDec(), allowBeamRecoil(), dampenBeamRecoil(),
93 useFixedFacScale(), allowRescatter(), canVetoEmission(),
94 doHVshower(), brokenHVsym(), setLambdaHV(), globalRecoil(),
95 useLocalRecoilNow(), doSecondHard(), hasUserHooks(),
96 singleWeakEmission(), alphaSuseCMW(), vetoWeakJets(),
97 allowMPIdipole(), weakExternal(), recoilDeadCone(),
98 doDipoleRecoil(), doPartonVertex(), recoilRFUseParents(false),
99 pTmaxMatch(), pTdampMatch(), alphaSorder(), alphaSnfmax(),
100 nGluonToQuark(), weightGluonToQuark(), recoilStrategyRF(),
101 alphaEMorder(), nGammaToQuark(), nGammaToLepton(), nCHV(),
102 nFlavHV(), idHV(), alphaHVorder(), nMaxGlobalRecoil(), weakMode(),
103 pTdampFudge(), mc(), mb(), m2c(), m2b(), renormMultFac(),
104 factorMultFac(), fixedFacScale2(), alphaSvalue(), alphaS2pi(),
105 Lambda3flav(), Lambda4flav(), Lambda5flav(), Lambda3flav2(),
106 Lambda4flav2(), Lambda5flav2(), scaleGluonToQuark(),
107 extraGluonToQuark(), weightRF(1), pTcolCutMin(), pTcolCut(),
108 pT2colCut(), pTchgQCut(), pT2chgQCut(), pTchgLCut(), pT2chgLCut(),
109 pTweakCut(), pT2weakCut(), mMaxGamma(), m2MaxGamma(), mZ(),
110 gammaZ(), thetaWRat(), mW(), gammaW(), CFHV(), alphaHVfix(),
111 alphaHVref(), LambdaHV(), pThvCut(), pT2hvCut(), mHV(),
112 pTmaxFudgeMPI(), weakEnhancement(), vetoWeakDeltaR2(), twoHard(),
113 dopTlimit1(), dopTlimit2(), dopTdamp(), pT2damp(), kRad(), kEmt(),
114 pdfScale2(), doTrialNow(), canEnhanceEmission(),
115 canEnhanceTrial(), canEnhanceET(), doUncertaintiesNow(), dipSel(),
116 iDipSel(), nHard(), nFinalBorn(), nMaxGlobalBranch(), nGlobal(),
117 globalRecoilMode(), limitMUQ(), weakHardSize() { beamOffset = 0;
118 pdfMode = 0; useSystems =
true; }
124 virtual void init( BeamParticlePtr beamAPtrIn =
nullptr,
125 BeamParticlePtr beamBPtrIn =
nullptr)
override;
128 virtual bool limitPTmax(
Event& event,
double Q2Fac = 0.,
129 double Q2Ren = 0.)
override;
132 virtual int shower(
int iBeg,
int iEnd,
Event& event,
double pTmax,
133 int nBranchMax = 0)
override;
136 virtual int showerQED(
int i1,
int i2,
Event& event,
double pTmax = -1.)
142 virtual void prepareProcess(
Event& process,
Event&, vector<int>&)
override;
145 virtual void prepareGlobal(
Event& event)
override;
148 virtual void prepare(
int iSys,
Event& event,
bool limitPTmaxIn =
true)
152 virtual void rescatterUpdate(
int iSys,
Event& event)
override;
155 virtual void update(
int iSys,
Event& event,
bool hasWeakRad =
false)
159 virtual double pTnext(
Event& event,
double pTbegAll,
double pTendAll,
160 bool isFirstTrial =
false,
bool doTrialIn =
false)
override;
163 virtual double pTnextResDec()
override;
166 virtual bool branch(
Event& event,
bool isInterleaved =
false)
override;
173 virtual bool resonanceShower(
Event& process,
Event& event,
174 vector<int>& iPos,
double qRestart)
override;
177 virtual void list()
const override;
180 virtual bool initUncertainties()
override;
183 virtual bool initEnhancements()
override;
189 virtual int system()
const override {
return iSysSel;}
200 double noEmissionProbability(
double pTbegAll,
double pTendAll,
double m2dip,
201 int id,
int type,
double s = -1.,
double x = -1.)
override;
202 double pTnext( vector<TimeDipoleEnd> dipEnds,
Event event,
double pTbegAll,
203 double pTendAll,
double m2dip,
int id,
int type,
double s = -1.,
211 static const double MCMIN, MBMIN, SIMPLIFYROOT, XMARGIN, XMARGINCOMB,
212 WTRATIOMAX,TINYPDF, LARGEM2, THRESHM2, LAMBDA3MARGIN1ORD,
213 LAMBDA3MARGIN2ORD,WEAKPSWEIGHT, WG2QEXTRA, REJECTFACTOR,
215 static const int NLOOPMAX;
217 static const bool FIXRESCATTER, VETONEGENERGY;
218 static const double MAXVIRTUALITYFRACTION, MAXNEGENERGYFRACTION;
221 bool hasWeaklyRadiated;
223 double pTmaxFudge, pTLastBranch;
226 bool doQCDshower, doQEDshowerByQ, doQEDshowerByL, doQEDshowerByOther,
227 doQEDshowerByGamma, doWeakShower, doMEcorrections, doMEextended,
228 doMEafterFirst, doPhiPolAsym, doPhiPolAsymHard, doInterleave,
229 doInterleaveResDec, allowBeamRecoil, dampenBeamRecoil,
230 useFixedFacScale, allowRescatter, canVetoEmission, doHVshower,
231 brokenHVsym, setLambdaHV, globalRecoil, useLocalRecoilNow,
232 doSecondHard, hasUserHooks, singleWeakEmission, alphaSuseCMW,
233 vetoWeakJets, allowMPIdipole, weakExternal, recoilDeadCone,
234 doDipoleRecoil, doPartonVertex, recoilRFUseParents;
236 int pTmaxMatch, pTdampMatch, alphaSorder, alphaSnfmax, nGluonToQuark,
237 weightGluonToQuark, recoilStrategyRF, alphaEMorder, nGammaToQuark,
238 nGammaToLepton, nCHV, nFlavHV, idHV, alphaHVorder, nMaxGlobalRecoil,
240 double pTdampFudge, mc, mb, m2c, m2b, renormMultFac, factorMultFac,
241 fixedFacScale2, alphaSvalue, alphaS2pi, Lambda3flav, Lambda4flav,
242 Lambda5flav, Lambda3flav2, Lambda4flav2, Lambda5flav2,
243 scaleGluonToQuark, extraGluonToQuark, weightRF,
244 pTcolCutMin, pTcolCut, pT2colCut, pTchgQCut, pT2chgQCut,
245 pTchgLCut, pT2chgLCut, pTweakCut, pT2weakCut, mMaxGamma, m2MaxGamma,
246 mZ, gammaZ, thetaWRat, mW, gammaW, CFHV,
247 alphaHVfix, alphaHVref, LambdaHV, pThvCut, pT2hvCut, mHV,
248 pTmaxFudgeMPI, weakEnhancement, vetoWeakDeltaR2;
259 bool twoHard, dopTlimit1, dopTlimit2, dopTdamp;
260 double pT2damp, kRad, kEmt, pdfScale2;
263 bool doTrialNow, canEnhanceEmission, canEnhanceTrial, canEnhanceET,
265 string splittingNameNow, splittingNameSel;
266 map< double, pair<string,double> > enhanceFactors;
267 void storeEnhanceFactor(
double pT2,
string name,
double enhanceFactorIn)
268 { enhanceFactors.insert(make_pair(pT2,make_pair(name,enhanceFactorIn)));}
271 vector<TimeDipoleEnd> dipEnd;
276 void setupQCDdip(
int iSys,
int i,
int colTag,
int colSign,
Event& event,
277 bool isOctetOnium =
false,
bool limitPTmaxIn =
true);
278 void setupQEDdip(
int iSys,
int i,
int chgType,
int gamType,
Event& event,
279 bool limitPTmaxIn =
true);
280 void setupWeakdip(
int iSys,
int i,
int weakType,
Event& event,
281 bool limitPTmaxIn =
true);
283 void setupWeakdipExternal(
Event& event,
bool limitPTmaxIn =
true);
284 void setupHVdip(
int iSys,
int i,
int colvType,
Event& event,
285 bool limitPTmaxIn =
true);
292 void regenerateOniumDipoles(
Event & event);
295 void pT2nextQCD(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
299 void pT2nextQED(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
303 void pT2nextWeak(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
307 void pT2nextHV(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
311 void pT2nextOnium(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
318 int findMEparticle(
int id,
bool isHiddenColour =
false);
321 double gammaZmix(
Event& event,
int iRes,
int iDau1,
int iDau2);
325 Particle& emt,
bool cutEdge =
true);
332 double calcMEcorr(
int kind,
int combiIn,
double mixIn,
double x1,
333 double x2,
double r1,
double r2,
double r3 = 0.,
bool cutEdge =
true);
342 bool rescatterPropagateRecoil(
Event& event,
Vec4& pNew);
346 vector<int> hardPartons;
350 int nHard, nFinalBorn, nMaxGlobalBranch;
352 map<int,int> nProposed;
354 int nGlobal, globalRecoilMode;
359 void calcUncertainties(
bool accept,
double pAccept,
364 vector<Vec4> weakMomenta;
365 vector<int> weak2to2lines;
369 bool doFSRinResonances{};
370 int resDecScaleChoice{-1}, iHardResDecSav{}, nRecurseResDec{};
371 vector<int> idResDecSav;
372 vector<double> pTresDecSav;
375 bool skipFirstMECinHardProc;
376 vector<int> skipFirstMECinResDecIDs{};
379 bool doOniumShower{
false};
380 vector<SplitOniaPtr> oniumEmissions;
381 set<double> oniumThresholds;
SimpleTimeShower()
Constructor.
Definition: SimpleTimeShower.h:87
Definition: StandardModel.h:23
virtual double enhancePTmax() override
Potential enhancement factor of pTmax scale for hardest emission.
Definition: SimpleTimeShower.h:192
The Event class holds all info on the generated event.
Definition: Event.h:408
The TimeShower class does timelike showers.
Definition: TimeShower.h:33
TimeDipoleEnd()
Constructors.
Definition: SimpleTimeShower.h:30
int flavour
Properties specific to current trial emission.
Definition: SimpleTimeShower.h:68
Definition: StandardModel.h:106
shared_ptr< SplitOnia > emissionPtr
Pointer to an onium emission object, if present.
Definition: SimpleTimeShower.h:74
Definition: StandardModel.h:226
virtual bool getHasWeaklyRadiated() override
Tell whether FSR has done a weak emission.
Definition: SimpleTimeShower.h:186
Data on radiating dipole ends; only used inside SimpleTimeShower class.
Definition: SimpleTimeShower.h:25
virtual double pTLastInShower() override
Provide the pT scale of the last branching in the above shower.
Definition: SimpleTimeShower.h:195
virtual ~SimpleTimeShower() override
Destructor.
Definition: SimpleTimeShower.h:121
Definition: SimpleWeakShowerMEs.h:26
virtual int system() const override
Tell which system was the last processed one.
Definition: SimpleTimeShower.h:189
int iRadiator
Basic properties related to dipole and matrix element corrections.
Definition: SimpleTimeShower.h:56
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
The SimpleTimeShower class does timelike showers.
Definition: SimpleTimeShower.h:82