8 #ifndef Pythia8_DireSplittingsEW_H 9 #define Pythia8_DireSplittingsEW_H 11 #define DIRE_SPLITTINGSEW_VERSION "2.002" 13 #include "Pythia8/Basics.h" 14 #include "Pythia8/BeamParticle.h" 15 #include "Pythia8/ParticleData.h" 16 #include "Pythia8/PythiaStdlib.h" 17 #include "Pythia8/Settings.h" 19 #include "Pythia8/DireSplittingsQCD.h" 34 coupSM,info, direInfo) {
init();}
40 double mZ, gammaZ, thetaW, mW, gammaW, aem0, enhance;
41 bool doQEDshowerByQ, doQEDshowerByL;
47 double aem2Pi (
double pT2);
49 bool useFastFunctions() {
return true; }
53 virtual int nEmissions() {
return 1; }
54 virtual bool isPartial() {
return true; }
56 virtual bool canUseForBranching() {
return true; }
59 virtual double coupling (
double = 0.,
double = 0.,
double = 0.,
double = -1.,
60 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>()) {
61 return (aem0 / (2.*M_PI));
63 virtual double couplingScale2 (
double = 0.,
double = 0.,
double = 0.,
64 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>()) {
79 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
80 coupSM, info, direInfo){}
82 bool canRadiate (
const Event&, pair<int,int>,
83 unordered_map<string,bool> = unordered_map<string,bool>(),
85 bool canRadiate (
const Event&,
int,
int,
98 int radBefID(
int idRadAfter,
int idEmtAfter);
101 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
102 int colEmtAfter,
int acolEmtAfter);
108 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
112 double pT2Old,
double m2dip,
int order = -1);
129 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
130 coupSM, info, direInfo){}
132 bool canRadiate (
const Event&, pair<int,int>,
133 unordered_map<string,bool> = unordered_map<string,bool>(),
135 bool canRadiate (
const Event&,
int,
int,
148 int radBefID(
int idRadAfter,
int idEmtAfter);
151 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
152 int colEmtAfter,
int acolEmtAfter);
158 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
162 double pT2Old,
double m2dip,
int order = -1);
179 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
180 coupSM, info, direInfo){}
182 bool canRadiate (
const Event&, pair<int,int>,
183 unordered_map<string,bool> = unordered_map<string,bool>(),
185 bool canRadiate (
const Event&,
int,
int,
198 int radBefID(
int idRadAfter,
int idEmtAfter);
201 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
202 int colEmtAfter,
int acolEmtAfter);
208 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
212 double pT2Old,
double m2dip,
int order = -1);
229 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
230 coupSM, info, direInfo){}
232 bool canRadiate (
const Event&, pair<int,int>,
233 unordered_map<string,bool> = unordered_map<string,bool>(),
235 bool canRadiate (
const Event&,
int,
int,
248 int radBefID(
int idRadAfter,
int idEmtAfter);
251 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
252 int colEmtAfter,
int acolEmtAfter);
258 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
262 double pT2Old,
double m2dip,
int order = -1);
279 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
280 coupSM, info, direInfo){}
282 bool canRadiate (
const Event&, pair<int,int>,
283 unordered_map<string,bool> = unordered_map<string,bool>(),
285 bool canRadiate (
const Event&,
int,
int,
298 int radBefID(
int idRadAfter,
int idEmtAfter);
301 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
302 int colEmtAfter,
int acolEmtAfter);
308 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
312 double pT2Old,
double m2dip,
int order = -1);
329 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
330 coupSM, info, direInfo){}
332 bool canRadiate (
const Event&, pair<int,int>,
333 unordered_map<string,bool> = unordered_map<string,bool>(),
335 bool canRadiate (
const Event&,
int,
int,
348 int radBefID(
int idRadAfter,
int idEmtAfter);
351 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
352 int colEmtAfter,
int acolEmtAfter);
358 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
362 double pT2Old,
double m2dip,
int order = -1);
381 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
382 coupSM, info, direInfo){}
384 bool canRadiate (
const Event&, pair<int,int>,
385 unordered_map<string,bool> = unordered_map<string,bool>(),
387 bool canRadiate (
const Event&,
int,
int,
400 int radBefID(
int idRadAfter,
int idEmtAfter);
403 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
404 int colEmtAfter,
int acolEmtAfter);
410 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
414 double pT2Old,
double m2dip,
int order = -1);
433 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
434 coupSM, info, direInfo) {
435 widthToAA = particleDataPtr->particleDataEntryPtr(25)->resWidthChan(
436 particleDataPtr->m0(25), 22, 22);
437 widthTot = settings->parm(
"MEM:WidthH");
440 bool canRadiate (
const Event&, pair<int,int>,
441 unordered_map<string,bool> = unordered_map<string,bool>(),
443 bool canRadiate (
const Event&,
int iRadBef,
int iRecBef,
445 bool isPartial() {
return false; }
448 if (rad->
id() == 22 && emt->
id() == 22)
return true;
453 double coupling (
double = 0.,
double = 0.,
double = 0.,
double = -1.,
454 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>());
465 int radBefID(
int idRadAfter,
int idEmtAfter);
470 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
471 int colEmtAfter,
int acolEmtAfter);
477 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
481 double pT2Old,
double m2dip,
int order = -1);
489 double widthToAA, widthTot;
502 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
503 coupSM, info, direInfo) {
504 widthToGG = particleDataPtr->particleDataEntryPtr(25)->resWidthChan(
505 particleDataPtr->m0(25), 21, 21);
506 widthTot = settings->parm(
"MEM:WidthH");
509 bool canRadiate (
const Event&, pair<int,int>,
510 unordered_map<string,bool> = unordered_map<string,bool>(),
512 bool canRadiate (
const Event&,
int iRadBef,
int iRecBef,
514 bool isPartial() {
return false; }
517 if (rad->
id() == 21 && emt->
id() == 21)
return true;
522 double coupling (
double = 0.,
double = 0.,
double = 0.,
double = -1.,
523 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>());
534 int radBefID(
int idRadAfter,
int idEmtAfter);
539 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
540 int colEmtAfter,
int acolEmtAfter);
546 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
550 double pT2Old,
double m2dip,
int order = -1);
558 double widthToGG, widthTot;
571 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
572 coupSM, info, direInfo){}
574 bool canRadiate (
const Event&, pair<int,int>,
575 unordered_map<string,bool> = unordered_map<string,bool>(),
577 bool canRadiate (
const Event&,
int iRadBef,
int iRecBef,
589 int radBefID(
int idRadAfter,
int idEmtAfter);
594 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
595 int colEmtAfter,
int acolEmtAfter);
597 vector<pair<int,int> > radAndEmtCols(
int iRad,
int,
Event state) {
598 vector< pair<int,int> > ret;
599 if (state[iRad].idAbs() != 24)
return ret;
608 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
612 double pT2Old,
double m2dip,
int order = -1);
631 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
632 coupSM, info, direInfo){}
634 bool canRadiate (
const Event&, pair<int,int>,
635 unordered_map<string,bool> = unordered_map<string,bool>(),
637 bool canRadiate (
const Event&,
int,
int,
650 int radBefID(
int idRadAfter,
int idEmtAfter);
653 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
654 int colEmtAfter,
int acolEmtAfter);
660 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
664 double pT2Old,
double m2dip,
int order = -1);
Definition: DireSplittingsEW.h:72
virtual vector< int > recPositions(const Event &, int, int)
Definition: DireSplittings.h:146
virtual double symmetryFactor(int, int)
Return symmetry factor for splitting.
Definition: DireSplittings.h:160
Definition: DireSplittingsEW.h:564
The Event class holds all info on the generated event.
Definition: Event.h:408
Definition: DireSplittingsEW.h:172
Definition: DireSplittingsEW.h:272
Definition: DireSplittingsQCD.h:27
virtual double gaugeFactor(int, int)
Return color factor for splitting.
Definition: DireSplittings.h:157
void id(int idIn)
Member functions for input.
Definition: Event.h:88
virtual double overestimateInt(double, double, double, double, int=-1)
New overestimates, z-integrated versions.
Definition: DireSplittings.h:189
Definition: DireSplittingsEW.h:624
Definition: DireBasics.h:374
void init()
The SplittingEW class.
Definition: DireSplittingsEW.cc:22
Definition: StandardModel.h:106
DireSplittingEW(string idIn, int softRS, Settings *settings, ParticleData *particleData, Rndm *rndm, BeamParticlePtr beamA, BeamParticlePtr beamB, CoupSM *coupSM, Info *info, DireInfo *direInfo)
Constructor and destructor.
Definition: DireSplittingsEW.h:30
Definition: DireSplittingsEW.h:222
virtual double coupling(double=0., double=0., double=0., double=-1., pair< int, bool >=pair< int, bool >(), pair< int, bool >=pair< int, bool >())
Definition: DireSplittingsEW.h:59
Definition: DireSplittingsEW.h:322
Definition: DireSplittingsEW.h:374
virtual bool calc(const Event &=Event(), int=-1)
Functions to calculate the kernel from SplitInfo information.
Definition: DireSplittings.h:203
double mZ
Z0 and W+- properties needed for gamma/Z0 mixing and weak showers.
Definition: DireSplittingsEW.h:40
virtual int kinMap()
Definition: DireSplittings.h:123
Definition: DireSplittingsEW.h:122
virtual int couplingType(int, int)
Definition: DireSplittingsEW.h:58
virtual vector< int > radAndEmt(int idDaughter, int)
Definition: DireSplittingsEW.h:51
Definition: StandardModel.h:135
virtual double overestimateDiff(double, double, int=-1)
Return kernel for new splitting.
Definition: DireSplittings.h:193
The PartonSystems class describes the whole set of subcollisions.
Definition: PartonSystems.h:42
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
Definition: DireSplittingsEW.h:495
Definition: DireSplittingsEW.h:25
virtual int radBefID(int, int)
Return id of recombined radiator (before splitting!)
Definition: DireSplittings.h:150
This class holds a map of all ParticleDataEntries.
Definition: ParticleData.h:422
virtual pair< int, int > radBefCols(int, int, int, int)
Return colours of recombined radiator (before splitting!)
Definition: DireSplittings.h:153
Definition: DireBasics.h:82
virtual int sisterID(int)
Return id of emission.
Definition: DireSplittings.h:129
Definition: Settings.h:196
Definition: DireSplittingsEW.h:426
virtual double zSplit(double, double, double)
Pick z for new splitting.
Definition: DireSplittings.h:186
double aem2Pi(double pT2)
Definition: DireSplittingsEW.cc:53
virtual int motherID(int)
Return id of mother after splitting.
Definition: DireSplittings.h:126