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 softRS,settings,particleData,rndm,beamA,beamB,coupSM,info, direInfo)
41 double mZ, gammaZ, thetaW, mW, gammaW, aem0, enhance;
42 bool doQEDshowerByQ, doQEDshowerByL;
48 double aem2Pi (
double pT2);
50 bool useFastFunctions() {
return true; }
54 virtual int nEmissions() {
return 1; }
55 virtual bool isPartial() {
return true; }
57 virtual bool canUseForBranching() {
return true; }
60 virtual double coupling (
double = 0.,
double = 0.,
double = 0.,
double = -1.,
61 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>()) {
62 return (aem0 / (2.*M_PI));
64 virtual double couplingScale2 (
double = 0.,
double = 0.,
double = 0.,
65 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>()) {
80 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
81 coupSM, info, direInfo){}
83 bool canRadiate (
const Event&, pair<int,int>,
84 unordered_map<string,bool> = unordered_map<string,bool>(),
86 bool canRadiate (
const Event&,
int,
int,
99 int radBefID(
int idRadAfter,
int idEmtAfter);
102 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
103 int colEmtAfter,
int acolEmtAfter);
109 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
113 double pT2Old,
double m2dip,
int order = -1);
130 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
131 coupSM, info, direInfo){}
133 bool canRadiate (
const Event&, pair<int,int>,
134 unordered_map<string,bool> = unordered_map<string,bool>(),
136 bool canRadiate (
const Event&,
int,
int,
149 int radBefID(
int idRadAfter,
int idEmtAfter);
152 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
153 int colEmtAfter,
int acolEmtAfter);
159 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
163 double pT2Old,
double m2dip,
int order = -1);
180 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
181 coupSM, info, direInfo){}
183 bool canRadiate (
const Event&, pair<int,int>,
184 unordered_map<string,bool> = unordered_map<string,bool>(),
186 bool canRadiate (
const Event&,
int,
int,
199 int radBefID(
int idRadAfter,
int idEmtAfter);
202 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
203 int colEmtAfter,
int acolEmtAfter);
209 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
213 double pT2Old,
double m2dip,
int order = -1);
230 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
231 coupSM, info, direInfo){}
233 bool canRadiate (
const Event&, pair<int,int>,
234 unordered_map<string,bool> = unordered_map<string,bool>(),
236 bool canRadiate (
const Event&,
int,
int,
249 int radBefID(
int idRadAfter,
int idEmtAfter);
252 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
253 int colEmtAfter,
int acolEmtAfter);
259 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
263 double pT2Old,
double m2dip,
int order = -1);
280 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
281 coupSM, info, direInfo){}
283 bool canRadiate (
const Event&, pair<int,int>,
284 unordered_map<string,bool> = unordered_map<string,bool>(),
286 bool canRadiate (
const Event&,
int,
int,
299 int radBefID(
int idRadAfter,
int idEmtAfter);
302 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
303 int colEmtAfter,
int acolEmtAfter);
309 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
313 double pT2Old,
double m2dip,
int order = -1);
330 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
331 coupSM, info, direInfo){}
333 bool canRadiate (
const Event&, pair<int,int>,
334 unordered_map<string,bool> = unordered_map<string,bool>(),
336 bool canRadiate (
const Event&,
int,
int,
349 int radBefID(
int idRadAfter,
int idEmtAfter);
352 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
353 int colEmtAfter,
int acolEmtAfter);
359 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
363 double pT2Old,
double m2dip,
int order = -1);
382 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
383 coupSM, info, direInfo){}
385 bool canRadiate (
const Event&, pair<int,int>,
386 unordered_map<string,bool> = unordered_map<string,bool>(),
388 bool canRadiate (
const Event&,
int,
int,
401 int radBefID(
int idRadAfter,
int idEmtAfter);
404 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
405 int colEmtAfter,
int acolEmtAfter);
411 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
415 double pT2Old,
double m2dip,
int order = -1);
434 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
435 coupSM, info, direInfo) {
436 widthToAA = particleDataPtr->particleDataEntryPtr(25)->resWidthChan(
437 particleDataPtr->m0(25), 22, 22);
438 widthTot = settings->parm(
"MEM:WidthH");
441 bool canRadiate (
const Event&, pair<int,int>,
442 unordered_map<string,bool> = unordered_map<string,bool>(),
444 bool canRadiate (
const Event&,
int iRadBef,
int iRecBef,
446 bool isPartial() {
return false; }
449 if (rad->
id() == 22 && emt->
id() == 22)
return true;
454 double coupling (
double = 0.,
double = 0.,
double = 0.,
double = -1.,
455 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>());
466 int radBefID(
int idRadAfter,
int idEmtAfter);
471 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
472 int colEmtAfter,
int acolEmtAfter);
478 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
482 double pT2Old,
double m2dip,
int order = -1);
490 double widthToAA, widthTot;
503 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
504 coupSM, info, direInfo) {
505 widthToGG = particleDataPtr->particleDataEntryPtr(25)->resWidthChan(
506 particleDataPtr->m0(25), 21, 21);
507 widthTot = settings->parm(
"MEM:WidthH");
510 bool canRadiate (
const Event&, pair<int,int>,
511 unordered_map<string,bool> = unordered_map<string,bool>(),
513 bool canRadiate (
const Event&,
int iRadBef,
int iRecBef,
515 bool isPartial() {
return false; }
518 if (rad->
id() == 21 && emt->
id() == 21)
return true;
523 double coupling (
double = 0.,
double = 0.,
double = 0.,
double = -1.,
524 pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>());
535 int radBefID(
int idRadAfter,
int idEmtAfter);
540 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
541 int colEmtAfter,
int acolEmtAfter);
547 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
551 double pT2Old,
double m2dip,
int order = -1);
559 double widthToGG, widthTot;
572 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
573 coupSM, info, direInfo){}
575 bool canRadiate (
const Event&, pair<int,int>,
576 unordered_map<string,bool> = unordered_map<string,bool>(),
578 bool canRadiate (
const Event&,
int iRadBef,
int iRecBef,
590 int radBefID(
int idRadAfter,
int idEmtAfter);
595 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
596 int colEmtAfter,
int acolEmtAfter);
598 vector<pair<int,int> > radAndEmtCols(
int iRad,
int,
Event state) {
599 vector< pair<int,int> > ret;
600 if (state[iRad].idAbs() != 24)
return ret;
609 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
613 double pT2Old,
double m2dip,
int order = -1);
632 DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
633 coupSM, info, direInfo){}
635 bool canRadiate (
const Event&, pair<int,int>,
636 unordered_map<string,bool> = unordered_map<string,bool>(),
638 bool canRadiate (
const Event&,
int,
int,
651 int radBefID(
int idRadAfter,
int idEmtAfter);
654 pair<int,int>
radBefCols(
int colRadAfter,
int acolRadAfter,
655 int colEmtAfter,
int acolEmtAfter);
661 double zSplit(
double zMinAbs,
double zMaxAbs,
double m2dip);
665 double pT2Old,
double m2dip,
int order = -1);
Definition: DireSplittingsEW.h:73
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:565
The Event class holds all info on the generated event.
Definition: Event.h:453
Definition: DireSplittingsEW.h:173
Definition: BeamParticle.h:133
Definition: DireSplittingsEW.h:273
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:625
Definition: DireBasics.h:374
void init()
The SplittingEW class.
Definition: DireSplittingsEW.cc:22
Definition: StandardModel.h:106
Definition: DireSplittingsEW.h:223
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:60
Definition: DireSplittingsEW.h:323
Definition: DireSplittingsEW.h:375
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:41
virtual int kinMap()
Definition: DireSplittings.h:123
Definition: DireSplittingsEW.h:123
virtual int couplingType(int, int)
Definition: DireSplittingsEW.h:59
virtual vector< int > radAndEmt(int idDaughter, int)
Definition: DireSplittingsEW.h:52
Definition: StandardModel.h:135
DireSplittingEW(string idIn, int softRS, Settings *settings, ParticleData *particleData, Rndm *rndm, BeamParticle *beamA, BeamParticle *beamB, CoupSM *coupSM, Info *info, DireInfo *direInfo)
Constructor and destructor.
Definition: DireSplittingsEW.h:30
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:496
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:195
Definition: DireSplittingsEW.h:427
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