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 = -1.)
139 virtual void prepareProcess(
Event& process,
Event&, vector<int>&)
override;
142 virtual void prepareGlobal(
Event& event)
override;
145 virtual void prepare(
int iSys,
Event& event,
bool limitPTmaxIn =
true)
149 virtual void rescatterUpdate(
int iSys,
Event& event)
override;
152 virtual void update(
int iSys,
Event& event,
bool hasWeakRad =
false)
156 virtual double pTnext(
Event& event,
double pTbegAll,
double pTendAll,
157 bool isFirstTrial =
false,
bool doTrialIn =
false)
override;
160 virtual double pTnextResDec()
override;
163 virtual bool branch(
Event& event,
bool isInterleaved =
false)
override;
170 virtual bool resonanceShower(
Event& process,
Event& event,
171 vector<int>& iPos,
double qRestart)
override;
174 virtual void list()
const override;
177 virtual bool initUncertainties()
override;
180 virtual bool initEnhancements()
override;
186 virtual int system()
const override {
return iSysSel;}
197 double noEmissionProbability(
double pTbegAll,
double pTendAll,
double m2dip,
198 int id,
int type,
double s = -1.,
double x = -1.)
override;
199 double pTnext( vector<TimeDipoleEnd> dipEnds,
Event event,
double pTbegAll,
200 double pTendAll,
double m2dip,
int id,
int type,
double s = -1.,
208 static const double MCMIN, MBMIN, SIMPLIFYROOT, XMARGIN, XMARGINCOMB,
209 WTRATIOMAX,TINYPDF, LARGEM2, THRESHM2, LAMBDA3MARGIN1ORD,
210 LAMBDA3MARGIN2ORD,WEAKPSWEIGHT, WG2QEXTRA, REJECTFACTOR,
212 static const int NLOOPMAX;
214 static const bool FIXRESCATTER, VETONEGENERGY;
215 static const double MAXVIRTUALITYFRACTION, MAXNEGENERGYFRACTION;
218 bool hasWeaklyRadiated;
220 double pTmaxFudge, pTLastBranch;
223 bool doQCDshower, doQEDshowerByQ, doQEDshowerByL, doQEDshowerByOther,
224 doQEDshowerByGamma, doWeakShower, doMEcorrections, doMEextended,
225 doMEafterFirst, doPhiPolAsym, doPhiPolAsymHard, doInterleave,
226 doInterleaveResDec, allowBeamRecoil, dampenBeamRecoil,
227 useFixedFacScale, allowRescatter, canVetoEmission, doHVshower,
228 brokenHVsym, setLambdaHV, globalRecoil, useLocalRecoilNow,
229 doSecondHard, hasUserHooks, singleWeakEmission, alphaSuseCMW,
230 vetoWeakJets, allowMPIdipole, weakExternal, recoilDeadCone,
231 doDipoleRecoil, doPartonVertex;
233 int pTmaxMatch, pTdampMatch, alphaSorder, alphaSnfmax, nGluonToQuark,
234 weightGluonToQuark, recoilStrategyRF, alphaEMorder, nGammaToQuark,
235 nGammaToLepton, nCHV, nFlavHV, idHV, alphaHVorder, nMaxGlobalRecoil,
237 double pTdampFudge, mc, mb, m2c, m2b, renormMultFac, factorMultFac,
238 fixedFacScale2, alphaSvalue, alphaS2pi, Lambda3flav, Lambda4flav,
239 Lambda5flav, Lambda3flav2, Lambda4flav2, Lambda5flav2,
240 scaleGluonToQuark, extraGluonToQuark, pTcolCutMin, pTcolCut,
241 pT2colCut, pTchgQCut, pT2chgQCut, pTchgLCut, pT2chgLCut,
242 pTweakCut, pT2weakCut, mMaxGamma, m2MaxGamma,
243 mZ, gammaZ, thetaWRat, mW, gammaW, CFHV,
244 alphaHVfix, alphaHVref, LambdaHV, pThvCut, pT2hvCut, mHV,
245 pTmaxFudgeMPI, weakEnhancement, vetoWeakDeltaR2;
256 bool twoHard, dopTlimit1, dopTlimit2, dopTdamp;
257 double pT2damp, kRad, kEmt, pdfScale2;
260 bool doTrialNow, canEnhanceEmission, canEnhanceTrial, canEnhanceET,
262 string splittingNameNow, splittingNameSel;
263 map< double, pair<string,double> > enhanceFactors;
264 void storeEnhanceFactor(
double pT2,
string name,
double enhanceFactorIn)
265 { enhanceFactors.insert(make_pair(pT2,make_pair(name,enhanceFactorIn)));}
268 vector<TimeDipoleEnd> dipEnd;
273 void setupQCDdip(
int iSys,
int i,
int colTag,
int colSign,
Event& event,
274 bool isOctetOnium =
false,
bool limitPTmaxIn =
true);
275 void setupQEDdip(
int iSys,
int i,
int chgType,
int gamType,
Event& event,
276 bool limitPTmaxIn =
true);
277 void setupWeakdip(
int iSys,
int i,
int weakType,
Event& event,
278 bool limitPTmaxIn =
true);
280 void setupWeakdipExternal(
Event& event,
bool limitPTmaxIn =
true);
281 void setupHVdip(
int iSys,
int i,
int colvType,
Event& event,
282 bool limitPTmaxIn =
true);
289 void regenerateOniumDipoles(
Event & event);
292 void pT2nextQCD(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
296 void pT2nextQED(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
300 void pT2nextWeak(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
304 void pT2nextHV(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
308 void pT2nextOnium(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
315 int findMEparticle(
int id,
bool isHiddenColour =
false);
318 double gammaZmix(
Event& event,
int iRes,
int iDau1,
int iDau2);
322 Particle& emt,
bool cutEdge =
true);
329 double calcMEcorr(
int kind,
int combiIn,
double mixIn,
double x1,
330 double x2,
double r1,
double r2,
double r3 = 0.,
bool cutEdge =
true);
339 bool rescatterPropagateRecoil(
Event& event,
Vec4& pNew);
343 vector<int> hardPartons;
347 int nHard, nFinalBorn, nMaxGlobalBranch;
349 map<int,int> nProposed;
351 int nGlobal, globalRecoilMode;
356 void calcUncertainties(
bool accept,
double pAccept,
361 vector<Vec4> weakMomenta;
362 vector<int> weak2to2lines;
366 bool doFSRinResonances{};
367 int resDecScaleChoice{-1}, iHardResDecSav{}, nRecurseResDec{};
368 vector<int> idResDecSav;
369 vector<double> pTresDecSav;
372 bool skipFirstMECinHardProc;
373 vector<int> skipFirstMECinResDecIDs{};
376 bool doOniumShower{
false};
377 vector<SplitOniaPtr> oniumEmissions;
378 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:189
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: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:183
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:192
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:186
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