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(), doPhiPolAsym(),
91 doPhiPolAsymHard(), doInterleave(), doInterleaveResDec(),
92 allowBeamRecoil(), dampenBeamRecoil(), useFixedFacScale(),
93 allowRescatter(), canVetoEmission(), doHVshower(), brokenHVsym(),
94 setLambdaHV(), globalRecoil(), useLocalRecoilNow(), doSecondHard(),
95 hasUserHooks(), singleWeakEmission(), alphaSuseCMW(), vetoWeakJets(),
96 allowMPIdipole(), weakExternal(), recoilDeadCone(), doDipoleRecoil(),
97 doPartonVertex(), pTmaxMatch(), pTdampMatch(), alphaSorder(),
98 alphaSnfmax(), nGluonToQuark(), weightGluonToQuark(), recoilStrategyRF(),
99 alphaEMorder(), nGammaToQuark(), nGammaToLepton(), nCHV(), nFlavHV(),
100 idHV(), alphaHVorder(), nMaxGlobalRecoil(), weakMode(), pTdampFudge(),
101 mc(), mb(), m2c(), m2b(), renormMultFac(), factorMultFac(),
102 fixedFacScale2(), alphaSvalue(), alphaS2pi(), Lambda3flav(),
103 Lambda4flav(), Lambda5flav(), Lambda3flav2(), Lambda4flav2(),
104 Lambda5flav2(), scaleGluonToQuark(), extraGluonToQuark(), pTcolCutMin(),
105 pTcolCut(), pT2colCut(), pTchgQCut(), pT2chgQCut(), pTchgLCut(),
106 pT2chgLCut(), pTweakCut(), pT2weakCut(), mMaxGamma(), m2MaxGamma(),
107 mZ(), gammaZ(), thetaWRat(),
108 mW(), gammaW(), CFHV(), alphaHVfix(), alphaHVref(), LambdaHV(),
109 pThvCut(), pT2hvCut(), mHV(), pTmaxFudgeMPI(), weakEnhancement(),
110 vetoWeakDeltaR2(), twoHard(), dopTlimit1(), dopTlimit2(), dopTdamp(),
111 pT2damp(), kRad(), kEmt(), pdfScale2(), doTrialNow(), canEnhanceEmission(),
112 canEnhanceTrial(), canEnhanceET(), doUncertaintiesNow(), dipSel(),
113 iDipSel(), nHard(), nFinalBorn(), nMaxGlobalBranch(), nGlobal(),
114 globalRecoilMode(), limitMUQ(), weakHardSize() { beamOffset = 0;
115 pdfMode = 0; useSystems =
true; }
125 virtual bool limitPTmax(
Event& event,
double Q2Fac = 0.,
126 double Q2Ren = 0.)
override;
129 virtual int shower(
int iBeg,
int iEnd,
Event& event,
double pTmax,
130 int nBranchMax = 0)
override;
133 virtual int showerQED(
int i1,
int i2,
Event& event,
double pTmax)
override;
138 virtual void prepareProcess(
Event& process,
Event&, vector<int>&)
override;
141 virtual void prepareGlobal(
Event& event)
override;
144 virtual void prepare(
int iSys,
Event& event,
bool limitPTmaxIn =
true)
148 virtual void rescatterUpdate(
int iSys,
Event& event)
override;
151 virtual void update(
int iSys,
Event& event,
bool hasWeakRad =
false)
155 virtual double pTnext(
Event& event,
double pTbegAll,
double pTendAll,
156 bool isFirstTrial =
false,
bool doTrialIn =
false)
override;
159 virtual double pTnextResDec()
override;
162 virtual bool branch(
Event& event,
bool isInterleaved =
false)
override;
169 virtual bool resonanceShower(
Event& process,
Event& event,
170 vector<int>& iPos,
double qRestart)
override;
173 virtual void list()
const override;
176 virtual bool initUncertainties()
override;
179 virtual bool initEnhancements()
override;
185 virtual int system()
const override {
return iSysSel;}
196 double noEmissionProbability(
double pTbegAll,
double pTendAll,
double m2dip,
197 int id,
int type,
double s = -1.,
double x = -1.)
override;
198 double pTnext( vector<TimeDipoleEnd> dipEnds,
Event event,
double pTbegAll,
199 double pTendAll,
double m2dip,
int id,
int type,
double s = -1.,
207 static const double MCMIN, MBMIN, SIMPLIFYROOT, XMARGIN, XMARGINCOMB,
208 WTRATIOMAX,TINYPDF, LARGEM2, THRESHM2, LAMBDA3MARGIN1ORD,
209 LAMBDA3MARGIN2ORD,WEAKPSWEIGHT, WG2QEXTRA, REJECTFACTOR,
211 static const int NLOOPMAX;
213 static const bool FIXRESCATTER, VETONEGENERGY;
214 static const double MAXVIRTUALITYFRACTION, MAXNEGENERGYFRACTION;
217 bool hasWeaklyRadiated;
219 double pTmaxFudge, pTLastBranch;
222 bool doQCDshower, doQEDshowerByQ, doQEDshowerByL, doQEDshowerByOther,
223 doQEDshowerByGamma, doWeakShower, doMEcorrections, doMEextended,
224 doMEafterFirst, doPhiPolAsym, doPhiPolAsymHard, doInterleave,
225 doInterleaveResDec, allowBeamRecoil, dampenBeamRecoil,
226 useFixedFacScale, allowRescatter, canVetoEmission, doHVshower,
227 brokenHVsym, setLambdaHV, globalRecoil, useLocalRecoilNow,
228 doSecondHard, hasUserHooks, singleWeakEmission, alphaSuseCMW,
229 vetoWeakJets, allowMPIdipole, weakExternal, recoilDeadCone,
230 doDipoleRecoil, doPartonVertex;
232 int pTmaxMatch, pTdampMatch, alphaSorder, alphaSnfmax, nGluonToQuark,
233 weightGluonToQuark, recoilStrategyRF, alphaEMorder, nGammaToQuark,
234 nGammaToLepton, nCHV, nFlavHV, idHV, alphaHVorder, nMaxGlobalRecoil,
236 double pTdampFudge, mc, mb, m2c, m2b, renormMultFac, factorMultFac,
237 fixedFacScale2, alphaSvalue, alphaS2pi, Lambda3flav, Lambda4flav,
238 Lambda5flav, Lambda3flav2, Lambda4flav2, Lambda5flav2,
239 scaleGluonToQuark, extraGluonToQuark, pTcolCutMin, pTcolCut,
240 pT2colCut, pTchgQCut, pT2chgQCut, pTchgLCut, pT2chgLCut,
241 pTweakCut, pT2weakCut, mMaxGamma, m2MaxGamma,
242 mZ, gammaZ, thetaWRat, mW, gammaW, CFHV,
243 alphaHVfix, alphaHVref, LambdaHV, pThvCut, pT2hvCut, mHV,
244 pTmaxFudgeMPI, weakEnhancement, vetoWeakDeltaR2;
255 bool twoHard, dopTlimit1, dopTlimit2, dopTdamp;
256 double pT2damp, kRad, kEmt, pdfScale2;
259 bool doTrialNow, canEnhanceEmission, canEnhanceTrial, canEnhanceET,
261 string splittingNameNow, splittingNameSel;
262 map< double, pair<string,double> > enhanceFactors;
263 void storeEnhanceFactor(
double pT2,
string name,
double enhanceFactorIn)
264 { enhanceFactors.insert(make_pair(pT2,make_pair(name,enhanceFactorIn)));}
267 vector<TimeDipoleEnd> dipEnd;
272 void setupQCDdip(
int iSys,
int i,
int colTag,
int colSign,
Event& event,
273 bool isOctetOnium =
false,
bool limitPTmaxIn =
true);
274 void setupQEDdip(
int iSys,
int i,
int chgType,
int gamType,
Event& event,
275 bool limitPTmaxIn =
true);
276 void setupWeakdip(
int iSys,
int i,
int weakType,
Event& event,
277 bool limitPTmaxIn =
true);
279 void setupWeakdipExternal(
Event& event,
bool limitPTmaxIn =
true);
280 void setupHVdip(
int iSys,
int i,
int colvType,
Event& event,
281 bool limitPTmaxIn =
true);
288 void regenerateOniumDipoles(
Event & event);
291 void pT2nextQCD(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
295 void pT2nextQED(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
299 void pT2nextWeak(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
303 void pT2nextHV(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
307 void pT2nextOnium(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
314 int findMEparticle(
int id,
bool isHiddenColour =
false);
317 double gammaZmix(
Event& event,
int iRes,
int iDau1,
int iDau2);
321 Particle& emt,
bool cutEdge =
true);
328 double calcMEcorr(
int kind,
int combiIn,
double mixIn,
double x1,
329 double x2,
double r1,
double r2,
double r3 = 0.,
bool cutEdge =
true);
338 bool rescatterPropagateRecoil(
Event& event,
Vec4& pNew);
342 vector<int> hardPartons;
346 int nHard, nFinalBorn, nMaxGlobalBranch;
348 map<int,int> nProposed;
350 int nGlobal, globalRecoilMode;
355 void calcUncertainties(
bool accept,
double pAccept,
360 vector<Vec4> weakMomenta;
361 vector<int> weak2to2lines;
365 bool doFSRinResonances{};
366 int resDecScaleChoice{-1}, iHardResDecSav{}, nRecurseResDec{};
367 vector<int> idResDecSav;
368 vector<double> pTresDecSav;
371 bool skipFirstMECinHardProc;
372 vector<int> skipFirstMECinResDecIDs{};
375 bool doOniumShower{
false};
376 vector<SplitOniaPtr> oniumEmissions;
377 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:188
The Event class holds all info on the generated event.
Definition: Event.h:453
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: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:182
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:191
virtual ~SimpleTimeShower() override
Destructor.
Definition: SimpleTimeShower.h:118
Definition: SimpleWeakShowerMEs.h:26
virtual int system() const override
Tell which system was the last processed one.
Definition: SimpleTimeShower.h:185
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