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;
68 double mRad, m2Rad, mRec, m2Rec, mDip, m2Dip, m2DipCorr,
69 pT2, m2, z, mFlavour, asymPol, flexFactor, pAccept;
70 double m2A{0}, m2B{0}, m2C{0}, m2gg{-1};
87 pTLastBranch(), doQCDshower(), doQEDshowerByQ(), doQEDshowerByL(),
88 doQEDshowerByOther(), doQEDshowerByGamma(), doWeakShower(),
89 doMEcorrections(), doMEextended(), doMEafterFirst(), doPhiPolAsym(),
90 doPhiPolAsymHard(), doInterleave(), doInterleaveResDec(),
91 allowBeamRecoil(), dampenBeamRecoil(), useFixedFacScale(),
92 allowRescatter(), canVetoEmission(), doHVshower(), brokenHVsym(),
93 setLambdaHV(), globalRecoil(), useLocalRecoilNow(), doSecondHard(),
94 hasUserHooks(), singleWeakEmission(), alphaSuseCMW(), vetoWeakJets(),
95 allowMPIdipole(), weakExternal(), recoilDeadCone(),
96 doDipoleRecoil(), doPartonVertex(), recoilRFUseParents(false),
97 pTmaxMatch(), pTdampMatch(), alphaSorder(), alphaSnfmax(),
98 nGluonToQuark(), weightGluonToQuark(), recoilStrategyRF(),
99 alphaEMorder(), nGammaToQuark(), nGammaToLepton(), nCHV(),
100 nFlavHV(), idHV(), alphaHVorder(), nMaxGlobalRecoil(), weakMode(),
101 pTdampFudge(), mc(), mb(), m2c(), m2b(), renormMultFac(),
102 factorMultFac(), fixedFacScale2(), alphaSvalue(), alphaSmax(), alphaS2pi(),
103 Lambda3flav(), Lambda4flav(), Lambda5flav(), Lambda3flav2(),
104 Lambda4flav2(), Lambda5flav2(), scaleGluonToQuark(),
105 extraGluonToQuark(), weightRF(1), pTcolCutMin(), pTcolCut(),
106 pT2colCut(), pTchgQCut(), pT2chgQCut(), pTchgLCut(), pT2chgLCut(),
107 pTweakCut(), pT2weakCut(), mMaxGamma(), m2MaxGamma(), mZ(),
108 gammaZ(), thetaWRat(), mW(), gammaW(), CFHV(), alphaHVfix(),
109 alphaHVref(), LambdaHV(), pThvCut(), pT2hvCut(), mHV(),
110 pTmaxFudgeMPI(), weakEnhancement(), vetoWeakDeltaR2(),
111 twoHard(), dopTlimit1(), dopTlimit2(), dopTdamp(), pT2damp(),
112 kRad(), kEmt(), pdfScale2(), doTrialNow(), canEnhanceEmission(),
113 canEnhanceTrial(), canEnhanceET(), doUncertaintiesNow(), dipSel(),
114 iDipSel(), nHard(), nFinalBorn(), nMaxGlobalBranch(), nGlobal(),
115 globalRecoilMode(), limitMUQ(), weakHardSize() { beamOffset = 0;
116 pdfMode = 0; useSystems =
true; }
126 virtual bool limitPTmax(
Event& event,
double Q2Fac = 0.,
127 double Q2Ren = 0.)
override;
130 virtual int shower(
int iBeg,
int iEnd,
Event& event,
double pTmax,
131 int nBranchMax = 0)
override;
134 virtual int showerQED(
int i1,
int i2,
Event& event,
double pTmax = -1.)
140 virtual void prepareProcess(
Event& process,
Event&, vector<int>&)
override;
143 virtual void prepareGlobal(
Event& event)
override;
146 virtual void prepare(
int iSys,
Event& event,
bool limitPTmaxIn =
true)
150 virtual void rescatterUpdate(
int iSys,
Event& event)
override;
153 virtual void update(
int iSys,
Event& event,
bool hasWeakRad =
false)
157 virtual double pTnext(
Event& event,
double pTbegAll,
double pTendAll,
158 bool isFirstTrial =
false,
bool doTrialIn =
false)
override;
161 virtual double pTnextResDec()
override;
164 virtual bool branch(
Event& event,
bool isInterleaved =
false)
override;
171 virtual bool resonanceShower(
Event& process,
Event& event,
172 vector<int>& iPos,
double qRestart)
override;
175 virtual void list()
const override;
178 virtual bool initUncertainties()
override;
181 virtual bool initEnhancements()
override;
187 virtual int system()
const override {
return iSysSel;}
198 double noEmissionProbability(
double pTbegAll,
double pTendAll,
double m2dip,
199 int id,
int type,
double s = -1.,
double x = -1.)
override;
200 double pTnext( vector<TimeDipoleEnd> dipEnds,
Event event,
double pTbegAll,
201 double pTendAll,
double m2dip,
int id,
int type,
double s = -1.,
209 static const double MCMIN, MBMIN, SIMPLIFYROOT, XMARGIN, XMARGINCOMB,
210 WTRATIOMAX,TINYPDF, LARGEM2, THRESHM2, LAMBDA3MARGIN1ORD,
211 LAMBDA3MARGIN2ORD,WEAKPSWEIGHT, WG2QEXTRA, REJECTFACTOR,
213 static const int NLOOPMAX;
215 static const bool FIXRESCATTER, VETONEGENERGY;
216 static const double MAXVIRTUALITYFRACTION, MAXNEGENERGYFRACTION;
219 bool hasWeaklyRadiated;
221 double pTmaxFudge, pTLastBranch;
224 bool doQCDshower, doQEDshowerByQ, doQEDshowerByL, doQEDshowerByOther,
225 doQEDshowerByGamma, doWeakShower, doMEcorrections, doMEextended,
226 doMEafterFirst, doPhiPolAsym, doPhiPolAsymHard, doInterleave,
227 doInterleaveResDec, allowBeamRecoil, dampenBeamRecoil,
228 useFixedFacScale, allowRescatter, canVetoEmission, doHVshower,
229 brokenHVsym, setLambdaHV, globalRecoil, useLocalRecoilNow,
230 doSecondHard, hasUserHooks, singleWeakEmission, alphaSuseCMW,
231 vetoWeakJets, allowMPIdipole, weakExternal, recoilDeadCone,
232 doDipoleRecoil, doPartonVertex, recoilRFUseParents;
234 int pTmaxMatch, pTdampMatch, alphaSorder, alphaSnfmax, nGluonToQuark,
235 weightGluonToQuark, recoilStrategyRF, alphaEMorder, nGammaToQuark,
236 nGammaToLepton, nCHV, nFlavHV, idHV, alphaHVorder, nMaxGlobalRecoil,
238 double pTdampFudge, mc, mb, m2c, m2b, renormMultFac,
239 factorMultFac, fixedFacScale2, alphaSvalue, alphaSmax, alphaS2pi,
240 Lambda3flav, Lambda4flav, Lambda5flav, Lambda3flav2, Lambda4flav2,
241 Lambda5flav2, scaleGluonToQuark, extraGluonToQuark, weightRF,
242 pTcolCutMin, pTcolCut, pT2colCut, pTchgQCut, pT2chgQCut,
243 pTchgLCut, pT2chgLCut, pTweakCut, pT2weakCut, mMaxGamma, m2MaxGamma,
244 mZ, gammaZ, thetaWRat, mW, gammaW, CFHV,
245 alphaHVfix, alphaHVref, LambdaHV, pThvCut, pT2hvCut, mHV,
246 pTmaxFudgeMPI, weakEnhancement, vetoWeakDeltaR2;
249 bool doLOT{
false}, doHOT{
false};
250 double cEmitG{0.}, cEmitQ{0.}, cEmitC{0.}, cEmitB{0.},
251 cSplit{0.}, cSplitC{0.}, cSplitB{0.}, hEmitHard{0.}, hEmitColl{0.},
252 hEmitSoft{0.}, hSplitHard{0.}, hSplitColl{0.};
255 void finiteOversample(
int colTypeAbs,
double& overFacLog,
256 double& overFacLin,
double& overFacSplit);
271 bool twoHard, dopTlimit1, dopTlimit2, dopTdamp;
272 double pT2damp, kRad, kEmt, pdfScale2;
275 bool doTrialNow, canEnhanceEmission, canEnhanceTrial, canEnhanceET,
277 string splittingNameNow, splittingNameSel;
278 map< double, pair<string,double> > enhanceFactors;
279 void storeEnhanceFactor(
double pT2,
string name,
double enhanceFactorIn)
280 { enhanceFactors.insert(make_pair(pT2,make_pair(name,enhanceFactorIn)));}
283 vector<TimeDipoleEnd> dipEnd;
288 void setupQCDdip(
int iSys,
int i,
int colTag,
int colSign,
Event& event,
289 bool isOctetOnium =
false,
bool limitPTmaxIn =
true);
290 void setupQEDdip(
int iSys,
int i,
int chgType,
int gamType,
Event& event,
291 bool limitPTmaxIn =
true);
292 void setupWeakdip(
int iSys,
int i,
int weakType,
Event& event,
293 bool limitPTmaxIn =
true);
295 void setupWeakdipExternal(
Event& event,
bool limitPTmaxIn =
true);
296 void setupHVdip(
int iSys,
int i,
int colvType,
Event& event,
297 bool limitPTmaxIn =
true);
304 void regenerateOniumDipoles(
Event & event);
307 void pT2nextQCD(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
311 void pT2nextQED(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
315 void pT2nextWeak(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
319 void pT2nextHV(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
323 void pT2nextOnium(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
330 int findMEparticle(
int id,
bool isHiddenColour =
false);
333 double gammaZmix(
Event& event,
int iRes,
int iDau1,
int iDau2);
337 Particle& emt,
bool cutEdge =
true);
344 double calcMEcorr(
int kind,
int combiIn,
double mixIn,
double x1,
345 double x2,
double r1,
double r2,
double r3 = 0.,
bool cutEdge =
true);
354 bool rescatterPropagateRecoil(
Event& event,
Vec4& pNew);
358 vector<int> hardPartons;
362 int nHard, nFinalBorn, nMaxGlobalBranch;
364 map<int,int> nProposed;
366 int nGlobal, globalRecoilMode;
371 void calcUncertainties(
bool accept,
double pAccept,
376 vector<Vec4> weakMomenta;
377 vector<int> weak2to2lines;
381 bool doFSRinResonances{};
382 int resDecScaleChoice{-1}, iHardResDecSav{}, nRecurseResDec{};
383 vector<int> idResDecSav;
384 vector<double> pTresDecSav;
387 bool skipFirstMECinHardProc;
388 vector<int> skipFirstMECinResDecIDs{};
391 bool doOniumShower{
false};
392 vector<SplitOniaPtr> oniumEmissions;
393 set<double> oniumThresholds;
SimpleTimeShower()
Constructor.
Definition: SimpleTimeShower.h:86
Definition: StandardModel.h:23
virtual double enhancePTmax() override
Potential enhancement factor of pTmax scale for hardest emission.
Definition: SimpleTimeShower.h:190
The Event class holds all info on the generated event.
Definition: Event.h:408
The TimeShower class does timelike showers.
Definition: TimeShower.h:33
Definition: BeamParticle.h:133
TimeDipoleEnd()
Constructors.
Definition: SimpleTimeShower.h:30
int flavour
Properties specific to current trial emission.
Definition: SimpleTimeShower.h:67
Definition: StandardModel.h:113
shared_ptr< SplitOnia > emissionPtr
Pointer to an onium emission object, if present.
Definition: SimpleTimeShower.h:73
Definition: StandardModel.h:233
virtual bool getHasWeaklyRadiated() override
Tell whether FSR has done a weak emission.
Definition: SimpleTimeShower.h:184
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:193
virtual ~SimpleTimeShower() override
Destructor.
Definition: SimpleTimeShower.h:119
Definition: SimpleWeakShowerMEs.h:26
virtual int system() const override
Tell which system was the last processed one.
Definition: SimpleTimeShower.h:187
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:81