9 #ifndef Pythia8_SigmaEW_H
10 #define Pythia8_SigmaEW_H
12 #include "Pythia8/PythiaComplex.h"
13 #include "Pythia8/SigmaProcess.h"
23 class Sigma2qg2qgamma :
public Sigma2Process {
28 Sigma2qg2qgamma() : sigUS(), sigma0() {}
31 virtual void sigmaKin();
34 virtual double sigmaHat();
37 virtual void setIdColAcol();
40 virtual string name()
const {
return "q g -> q gamma (udscb)";}
41 virtual int code()
const {
return 201;}
42 virtual string inFlux()
const {
return "qg";}
55 class Sigma2qqbar2ggamma :
public Sigma2Process {
60 Sigma2qqbar2ggamma() : sigma0() {}
63 virtual void sigmaKin();
66 virtual double sigmaHat();
69 virtual void setIdColAcol();
72 virtual string name()
const {
return "q qbar -> g gamma";}
73 virtual int code()
const {
return 202;}
74 virtual string inFlux()
const {
return "qqbarSame";}
87 class Sigma2gg2ggamma :
public Sigma2Process {
92 Sigma2gg2ggamma() : chargeSum(), sigma() {}
95 virtual void initProc();
98 virtual void sigmaKin();
101 virtual double sigmaHat() {
return sigma;}
104 virtual void setIdColAcol();
107 virtual string name()
const {
return "g g -> g gamma";}
108 virtual int code()
const {
return 203;}
109 virtual string inFlux()
const {
return "gg";}
114 double chargeSum, sigma;
122 class Sigma2ffbar2gammagamma :
public Sigma2Process {
127 Sigma2ffbar2gammagamma() : sigTU(), sigma0() {}
130 virtual void sigmaKin();
133 virtual double sigmaHat();
136 virtual void setIdColAcol();
139 virtual string name()
const {
return "f fbar -> gamma gamma";}
140 virtual int code()
const {
return 204;}
141 virtual string inFlux()
const {
return "ffbarSame";}
146 double sigTU, sigma0;
154 class Sigma2gg2gammagamma :
public Sigma2Process {
159 Sigma2gg2gammagamma() : charge2Sum(), sigma() {}
162 virtual void initProc();
165 virtual void sigmaKin();
168 virtual double sigmaHat() {
return sigma;}
171 virtual void setIdColAcol();
174 virtual string name()
const {
return "g g -> gamma gamma";}
175 virtual int code()
const {
return 205;}
176 virtual string inFlux()
const {
return "gg";}
180 double charge2Sum, sigma;
188 class Sigma2ff2fftgmZ :
public Sigma2Process {
193 Sigma2ff2fftgmZ() : gmZmode(), mZ(), mZS(), thetaWRat(), sigmagmgm(),
194 sigmagmZ(), sigmaZZ() {}
197 virtual void initProc();
200 virtual void sigmaKin();
203 virtual double sigmaHat();
206 virtual void setIdColAcol();
209 virtual string name()
const {
return "f f' -> f f' (t-channel gamma*/Z0)";}
210 virtual int code()
const {
return 211;}
211 virtual string inFlux()
const {
return "ff";}
217 double mZ, mZS, thetaWRat, sigmagmgm, sigmagmZ, sigmaZZ;
225 class Sigma2ff2fftW :
public Sigma2Process {
230 Sigma2ff2fftW() : mW(), mWS(), thetaWRat(), sigma0() {}
233 virtual void initProc();
236 virtual void sigmaKin();
239 virtual double sigmaHat();
242 virtual void setIdColAcol();
245 virtual string name()
const {
return "f_1 f_2 -> f_3 f_4 (t-channel W+-)";}
246 virtual int code()
const {
return 212;}
247 virtual string inFlux()
const {
return "ff";}
252 double mW, mWS, thetaWRat, sigma0;
261 class Sigma2qq2QqtW :
public Sigma2Process {
266 Sigma2qq2QqtW(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn), mW(),
267 mWS(), thetaWRat(), sigma0(), openFracPos(), openFracNeg() {}
270 virtual void initProc();
273 virtual void sigmaKin();
276 virtual double sigmaHat();
279 virtual void setIdColAcol();
282 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
285 virtual string name()
const {
return nameSave;}
286 virtual int code()
const {
return codeSave;}
287 virtual string inFlux()
const {
return "ff";}
288 virtual int id3Mass()
const {
return idNew;}
295 double mW, mWS, thetaWRat, sigma0, openFracPos, openFracNeg;
303 class Sigma1ffbar2gmZ :
public Sigma1Process {
308 Sigma1ffbar2gmZ() : gmZmode(), mRes(), GammaRes(), m2Res(), GamMRat(),
309 thetaWRat(), gamSum(), intSum(), resSum(), gamProp(), intProp(),
310 resProp(), particlePtr() {}
313 virtual void initProc();
316 virtual void sigmaKin();
319 virtual double sigmaHat();
322 virtual void setIdColAcol();
325 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
328 virtual string name()
const {
return "f fbar -> gamma*/Z0";}
329 virtual int code()
const {
return 221;}
330 virtual string inFlux()
const {
return "ffbarSame";}
331 virtual int resonanceA()
const {
return 23;}
337 double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
338 gamSum, intSum, resSum, gamProp, intProp, resProp;
341 ParticleDataEntry* particlePtr;
349 class Sigma1ffbar2W :
public Sigma1Process {
354 Sigma1ffbar2W() : mRes(), GammaRes(), m2Res(), GamMRat(), thetaWRat(),
355 sigma0Pos(), sigma0Neg(), particlePtr() {}
358 virtual void initProc();
361 virtual void sigmaKin();
364 virtual double sigmaHat();
367 virtual void setIdColAcol();
370 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
373 virtual string name()
const {
return "f fbar' -> W+-";}
374 virtual int code()
const {
return 222;}
375 virtual string inFlux()
const {
return "ffbarChg";}
376 virtual int resonanceA()
const {
return 24;}
381 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg;
384 ParticleDataEntry* particlePtr;
393 class Sigma2ffbar2ffbarsgm :
public Sigma2Process {
398 Sigma2ffbar2ffbarsgm() : idNew(), sigma0() {}
401 virtual void sigmaKin();
404 virtual double sigmaHat();
407 virtual void setIdColAcol();
410 virtual string name()
const {
411 return "f fbar -> f' fbar' (s-channel gamma*)";}
412 virtual int code()
const {
return 223;}
413 virtual string inFlux()
const {
return "ffbarSame";}
414 virtual bool isSChannel()
const {
return true;}
428 class Sigma2ffbar2ffbarsgmZ :
public Sigma2Process {
433 Sigma2ffbar2ffbarsgmZ() : gmZmode(), mRes(), GammaRes(), m2Res(),
434 GamMRat(), thetaWRat(), colQ(), gamSumT(), gamSumL(), intSumT(),
435 intSumL(), intSumA(), resSumT(), resSumL(), resSumA(), gamProp(),
436 intProp(), resProp(), cThe(), particlePtr() {}
439 virtual void initProc();
442 virtual void sigmaKin();
445 virtual double sigmaHat();
448 virtual void setIdColAcol();
451 virtual string name()
const {
452 return "f fbar -> f' fbar' (s-channel gamma*/Z0)";}
453 virtual int code()
const {
return 224;}
454 virtual string inFlux()
const {
return "ffbarSame";}
455 virtual bool isSChannel()
const {
return true;}
456 virtual int idSChannel()
const {
return 23;}
457 virtual int resonanceA()
const {
return 23;}
463 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, colQ,
464 gamSumT, gamSumL, intSumT, intSumL, intSumA, resSumT, resSumL,
465 resSumA, gamProp, intProp, resProp, cThe;
467 vector<double> gamT, gamL, intT, intL, intA, resT, resL, resA, sigTLA;
470 ParticleDataEntry* particlePtr;
478 class Sigma2ffbar2ffbarsW :
public Sigma2Process {
483 Sigma2ffbar2ffbarsW() : id3New(), id4New(), mRes(), GammaRes(), m2Res(),
484 GamMRat(), thetaWRat(), sigma0(), particlePtr() {}
487 virtual void initProc();
490 virtual void sigmaKin();
493 virtual double sigmaHat();
496 virtual void setIdColAcol();
499 virtual string name()
const {
500 return "f_1 fbar_2 -> f_3 fbar_4 (s-channel W+-)";}
501 virtual int code()
const {
return 225;}
502 virtual string inFlux()
const {
return "ffbarChg";}
503 virtual bool isSChannel()
const {
return true;}
504 virtual int idSChannel()
const {
return 24;}
505 virtual int resonanceA()
const {
return 24;}
511 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0;
514 ParticleDataEntry* particlePtr;
523 class Sigma2ffbar2FFbarsgmZ :
public Sigma2Process {
528 Sigma2ffbar2FFbarsgmZ(
int idIn,
int codeIn) : idNew(idIn),
529 codeSave(codeIn), gmZmode(), isPhysical(), ef(), vf(), af(), mRes(),
530 GammaRes(), m2Res(), GamMRat(), thetaWRat(), mr(), betaf(), cosThe(),
531 gamProp(), intProp(), resProp(), openFracPair() {}
534 virtual void initProc();
537 virtual void sigmaKin();
540 virtual double sigmaHat();
543 virtual void setIdColAcol();
546 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
549 virtual string name()
const {
return nameSave;}
550 virtual int code()
const {
return codeSave;}
551 virtual string inFlux()
const {
return "ffbarSame";}
552 virtual bool isSChannel()
const {
return true;}
553 virtual int id3Mass()
const {
return idNew;}
554 virtual int id4Mass()
const {
return idNew;}
555 virtual int resonanceA()
const {
return 23;}
560 int idNew, codeSave, gmZmode;
563 double ef, vf, af, mRes, GammaRes, m2Res, GamMRat, thetaWRat,
564 mr, betaf, cosThe, gamProp, intProp, resProp, openFracPair;
573 class Sigma2ffbar2FfbarsW :
public Sigma2Process {
578 Sigma2ffbar2FfbarsW(
int idIn,
int idIn2,
int codeIn) : idNew(idIn),
579 idNew2(idIn2), codeSave(codeIn), idPartner(), isPhysical(), V2New(),
580 mRes(), GammaRes(), m2Res(), GamMRat(), thetaWRat(), sigma0(),
581 openFracPos(), openFracNeg() {}
584 virtual void initProc();
587 virtual void sigmaKin();
590 virtual double sigmaHat();
593 virtual void setIdColAcol();
596 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
599 virtual string name()
const {
return nameSave;}
600 virtual int code()
const {
return codeSave;}
601 virtual string inFlux()
const {
return "ffbarChg";}
602 virtual bool isSChannel()
const {
return true;}
603 virtual int id3Mass()
const {
return idNew;}
604 virtual int id4Mass()
const {
return idPartner;}
605 virtual int resonanceA()
const {
return 24;}
610 int idNew, idNew2, codeSave, idPartner;
613 double V2New, mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
614 openFracPos, openFracNeg;
622 class Sigma2ffbargmZWgmZW :
public Sigma2Process {
627 Sigma2ffbargmZWgmZW() {}
637 void setupProd(
Event& process,
int i1,
int i2,
int i3,
int i4,
641 complex fGK(
int i1,
int i2,
int i3,
int i4,
int i5,
int i6);
644 double xiGK(
double tHnow,
double uHnow);
647 double xjGK(
double tHnow,
double uHnow);
657 class Sigma2ffbar2gmZgmZ :
public Sigma2ffbargmZWgmZW {
662 Sigma2ffbar2gmZgmZ() : gmZmode(), i1(), i2(), i3(), i4(), i5(), i6(),
663 mRes(), GammaRes(), m2Res(), GamMRat(), thetaWRat(), sigma0(), gamSum3(),
664 intSum3(), resSum3(), gamProp3(), intProp3(), resProp3(), gamSum4(),
665 intSum4(), resSum4(), gamProp4(), intProp4(), resProp4(), c3LL(), c3LR(),
666 c3RL(), c3RR(), c4LL(), c4LR(), c4RL(), c4RR(), flavWt(),
670 virtual void initProc();
673 virtual void sigmaKin();
676 virtual double sigmaHat();
679 virtual void setIdColAcol();
682 virtual double weightDecayFlav(
Event& process);
685 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
688 virtual string name()
const {
return "f fbar -> gamma*/Z0 gamma*/Z0";}
689 virtual int code()
const {
return 231;}
690 virtual string inFlux()
const {
return "ffbarSame";}
691 virtual int id3Mass()
const {
return 23;}
692 virtual int id4Mass()
const {
return 23;}
697 int gmZmode, i1, i2, i3, i4, i5, i6;
698 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
699 gamSum3, intSum3, resSum3, gamProp3, intProp3, resProp3,
700 gamSum4, intSum4, resSum4, gamProp4, intProp4, resProp4,
701 c3LL, c3LR, c3RL, c3RR, c4LL, c4LR, c4RL, c4RR, flavWt;
704 ParticleDataEntry* particlePtr;
712 class Sigma2ffbar2ZW :
public Sigma2ffbargmZWgmZW {
717 Sigma2ffbar2ZW() : mW(), widW(), mWS(), mwWS(), sin2thetaW(), cos2thetaW(),
718 thetaWRat(), cotT(), thetaWpt(), thetaWmm(), lun(), lde(), sigma0(),
719 openFracPos(), openFracNeg() {}
722 virtual void initProc();
725 virtual void sigmaKin();
728 virtual double sigmaHat();
731 virtual void setIdColAcol();
734 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
737 virtual string name()
const {
return "f fbar' -> Z0 W+- (no gamma*!)";}
738 virtual int code()
const {
return 232;}
739 virtual string inFlux()
const {
return "ffbarChg";}
740 virtual int id3Mass()
const {
return 23;}
741 virtual int id4Mass()
const {
return 24;}
742 virtual int resonanceA()
const {
return 24;}
747 double mW, widW, mWS, mwWS, sin2thetaW, cos2thetaW, thetaWRat, cotT,
748 thetaWpt, thetaWmm, lun, lde, sigma0, openFracPos, openFracNeg;
756 class Sigma2ffbar2WW :
public Sigma2ffbargmZWgmZW {
761 Sigma2ffbar2WW() : mZ(), widZ(), mZS(), mwZS(), thetaWRat(), sigma0(),
762 cgg(), cgZ(), cZZ(), cfg(), cfZ(), cff(), gSS(), gTT(), gST(), gUU(),
763 gSU(), openFracPair() {}
766 virtual void initProc();
769 virtual void sigmaKin();
772 virtual double sigmaHat();
775 virtual void setIdColAcol();
778 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
781 virtual string name()
const {
return "f fbar -> W+ W-";}
782 virtual int code()
const {
return 233;}
783 virtual string inFlux()
const {
return "ffbarSame";}
784 virtual int id3Mass()
const {
return 24;}
785 virtual int id4Mass()
const {
return -24;}
786 virtual int resonanceA()
const {
return 23;}
791 double mZ, widZ, mZS, mwZS, thetaWRat, sigma0, cgg, cgZ, cZZ, cfg,
792 cfZ, cff, gSS, gTT, gST, gUU, gSU, openFracPair;
800 class Sigma2ffbargmZggm :
public Sigma2Process {
805 Sigma2ffbargmZggm() : gmZmode(), mRes(), GammaRes(), m2Res(), GamMRat(),
806 thetaWRat(), gamSum(), intSum(), resSum(), gamProp(), intProp(), resProp(),
810 virtual void initProc();
813 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
819 double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
820 gamSum, intSum, resSum, gamProp, intProp, resProp;
831 ParticleDataEntry* particlePtr;
839 class Sigma2qqbar2gmZg :
public Sigma2ffbargmZggm {
844 Sigma2qqbar2gmZg() : sigma0() {}
847 virtual void sigmaKin();
850 virtual double sigmaHat();
853 virtual void setIdColAcol();
856 virtual string name()
const {
return "q qbar -> gamma*/Z0 g";}
857 virtual int code()
const {
return 241;}
858 virtual string inFlux()
const {
return "qqbarSame";}
859 virtual int id3Mass()
const {
return 23;}
872 class Sigma2qg2gmZq :
public Sigma2ffbargmZggm {
877 Sigma2qg2gmZq() : sigma0() {}
880 virtual void sigmaKin();
883 virtual double sigmaHat();
886 virtual void setIdColAcol();
889 virtual string name()
const {
return "q g-> gamma*/Z0 q";}
890 virtual int code()
const {
return 242;}
891 virtual string inFlux()
const {
return "qg";}
892 virtual int id3Mass()
const {
return 23;}
905 class Sigma2ffbar2gmZgm :
public Sigma2ffbargmZggm {
910 Sigma2ffbar2gmZgm() : sigma0() {}
913 virtual void sigmaKin();
916 virtual double sigmaHat();
919 virtual void setIdColAcol();
922 virtual string name()
const {
return "f fbar -> gamma*/Z0 gamma";}
923 virtual int code()
const {
return 243;}
924 virtual string inFlux()
const {
return "ffbarSame";}
925 virtual int id3Mass()
const {
return 23;}
938 class Sigma2fgm2gmZf :
public Sigma2ffbargmZggm {
943 Sigma2fgm2gmZf() : sigma0() {}
946 virtual void sigmaKin();
949 virtual double sigmaHat();
952 virtual void setIdColAcol();
955 virtual string name()
const {
return "f gamma -> gamma*/Z0 f";}
956 virtual int code()
const {
return 244;}
957 virtual string inFlux()
const {
return "fgm";}
958 virtual int id3Mass()
const {
return 23;}
971 class Sigma2ffbarWggm :
public Sigma2Process {
979 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
989 class Sigma2qqbar2Wg :
public Sigma2ffbarWggm {
994 Sigma2qqbar2Wg() : sigma0(), openFracPos(), openFracNeg() {}
997 virtual void initProc();
1000 virtual void sigmaKin();
1003 virtual double sigmaHat();
1006 virtual void setIdColAcol();
1009 virtual string name()
const {
return "q qbar' -> W+- g";}
1010 virtual int code()
const {
return 251;}
1011 virtual string inFlux()
const {
return "ffbarChg";}
1012 virtual int id3Mass()
const {
return 24;}
1017 double sigma0, openFracPos, openFracNeg;
1025 class Sigma2qg2Wq :
public Sigma2ffbarWggm {
1030 Sigma2qg2Wq() : sigma0(), openFracPos(), openFracNeg() {}
1033 virtual void initProc();
1036 virtual void sigmaKin();
1039 virtual double sigmaHat();
1042 virtual void setIdColAcol();
1045 virtual string name()
const {
return "q g-> W+- q'";}
1046 virtual int code()
const {
return 252;}
1047 virtual string inFlux()
const {
return "qg";}
1048 virtual int id3Mass()
const {
return 24;}
1053 double sigma0, openFracPos, openFracNeg;
1061 class Sigma2ffbar2Wgm :
public Sigma2ffbarWggm {
1066 Sigma2ffbar2Wgm() : sigma0(), openFracPos(), openFracNeg() {}
1069 virtual void initProc();
1072 virtual void sigmaKin();
1075 virtual double sigmaHat();
1078 virtual void setIdColAcol();
1081 virtual string name()
const {
return "f fbar' -> W+- gamma";}
1082 virtual int code()
const {
return 253;}
1083 virtual string inFlux()
const {
return "ffbarChg";}
1084 virtual int id3Mass()
const {
return 24;}
1089 double sigma0, openFracPos, openFracNeg;
1097 class Sigma2fgm2Wf :
public Sigma2ffbarWggm {
1102 Sigma2fgm2Wf() : sigma0(), openFracPos(), openFracNeg() {}
1105 virtual void initProc();
1108 virtual void sigmaKin();
1111 virtual double sigmaHat();
1114 virtual void setIdColAcol();
1117 virtual string name()
const {
return "f gamma -> W+- f'";}
1118 virtual int code()
const {
return 254;}
1119 virtual string inFlux()
const {
return "fgm";}
1120 virtual int id3Mass()
const {
return 24;}
1125 double sigma0, openFracPos, openFracNeg;
1132 class Sigma2gmgm2ffbar :
public Sigma2Process {
1137 Sigma2gmgm2ffbar(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn),
1138 idMass(), idNow(), ef4(), s34Avg(), sigTU(), sigma(), openFracPair() {}
1141 virtual void initProc();
1144 virtual void sigmaKin();
1147 virtual double sigmaHat() {
return sigma;}
1150 virtual void setIdColAcol();
1153 virtual string name()
const {
return nameSave;}
1154 virtual int code()
const {
return codeSave;}
1155 virtual string inFlux()
const {
return "gmgm";}
1156 virtual int id3Mass()
const {
return idMass;}
1157 virtual int id4Mass()
const {
return idMass;}
1162 int idNew, codeSave, idMass, idNow;
1164 double ef4, s34Avg, sigTU, sigma, openFracPair;
1172 class Sigma2ggm2qqbar :
public Sigma2Process {
1177 Sigma2ggm2qqbar(
int idIn,
int codeIn,
string inFluxIn =
"ggm")
1178 : idNew(idIn), codeSave(codeIn), idMass(), idNow(), inFluxSave(inFluxIn),
1179 ef2(), s34Avg(), sigTU(), sigma(), openFracPair() {}
1182 virtual void initProc();
1185 virtual void sigmaKin();
1188 virtual double sigmaHat() {
return sigma;}
1191 virtual void setIdColAcol();
1194 virtual string name()
const {
return nameSave;}
1195 virtual int code()
const {
return codeSave;}
1196 virtual string inFlux()
const {
return inFluxSave;}
1197 virtual int id3Mass()
const {
return idMass;}
1198 virtual int id4Mass()
const {
return idMass;}
1203 int idNew, codeSave, idMass, idNow;
1204 string nameSave, inFluxSave;
1205 double ef2, s34Avg, sigTU, sigma, openFracPair;
1214 class Sigma2qgm2qg :
public Sigma2Process {
1219 Sigma2qgm2qg(
int codeIn,
string inFluxIn =
"qgm")
1220 : codeSave(codeIn), sigUS(), sigma0(), inFluxSave(inFluxIn) {}
1223 virtual void initProc();
1226 virtual void sigmaKin();
1229 virtual double sigmaHat();
1232 virtual void setIdColAcol();
1235 virtual string name()
const {
return nameSave;}
1236 virtual int code()
const {
return codeSave;}
1237 virtual string inFlux()
const {
return inFluxSave;}
1243 double sigUS, sigma0;
1244 string nameSave, inFluxSave;
1253 class Sigma2qgm2qgm :
public Sigma2Process {
1258 Sigma2qgm2qgm(
int codeIn,
string inFluxIn =
"qgm")
1259 : codeSave(codeIn), sigUS(), sigma0(), inFluxSave(inFluxIn) {}
1262 virtual void initProc();
1265 virtual void sigmaKin();
1268 virtual double sigmaHat();
1271 virtual void setIdColAcol();
1274 virtual string name()
const {
return nameSave;}
1275 virtual int code()
const {
return codeSave;}
1276 virtual string inFlux()
const {
return inFluxSave;}
1282 double sigUS, sigma0;
1283 string nameSave, inFluxSave;
1291 #endif // Pythia8_SigmaEW_H