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 {
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() {}
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 {
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() {}
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() {}
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 {
196 virtual void initProc();
199 virtual void sigmaKin();
202 virtual double sigmaHat();
205 virtual void setIdColAcol();
208 virtual string name()
const {
return "f f' -> f f' (t-channel gamma*/Z0)";}
209 virtual int code()
const {
return 211;}
210 virtual string inFlux()
const {
return "ff";}
216 double mZ, mZS, thetaWRat, sigmagmgm, sigmagmZ, sigmaZZ;
224 class Sigma2ff2fftW :
public Sigma2Process {
232 virtual void initProc();
235 virtual void sigmaKin();
238 virtual double sigmaHat();
241 virtual void setIdColAcol();
244 virtual string name()
const {
return "f_1 f_2 -> f_3 f_4 (t-channel W+-)";}
245 virtual int code()
const {
return 212;}
246 virtual string inFlux()
const {
return "ff";}
251 double mW, mWS, thetaWRat, sigma0;
260 class Sigma2qq2QqtW :
public Sigma2Process {
265 Sigma2qq2QqtW(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn) {}
268 virtual void initProc();
271 virtual void sigmaKin();
274 virtual double sigmaHat();
277 virtual void setIdColAcol();
280 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
283 virtual string name()
const {
return nameSave;}
284 virtual int code()
const {
return codeSave;}
285 virtual string inFlux()
const {
return "ff";}
286 virtual int id3Mass()
const {
return idNew;}
293 double mW, mWS, thetaWRat, sigma0, openFracPos, openFracNeg;
301 class Sigma1ffbar2gmZ :
public Sigma1Process {
309 virtual void initProc();
312 virtual void sigmaKin();
315 virtual double sigmaHat();
318 virtual void setIdColAcol();
321 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
324 virtual string name()
const {
return "f fbar -> gamma*/Z0";}
325 virtual int code()
const {
return 221;}
326 virtual string inFlux()
const {
return "ffbarSame";}
327 virtual int resonanceA()
const {
return 23;}
333 double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
334 gamSum, intSum, resSum, gamProp, intProp, resProp;
337 ParticleDataEntry* particlePtr;
345 class Sigma1ffbar2W :
public Sigma1Process {
353 virtual void initProc();
356 virtual void sigmaKin();
359 virtual double sigmaHat();
362 virtual void setIdColAcol();
365 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
368 virtual string name()
const {
return "f fbar' -> W+-";}
369 virtual int code()
const {
return 222;}
370 virtual string inFlux()
const {
return "ffbarChg";}
371 virtual int resonanceA()
const {
return 24;}
376 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg;
379 ParticleDataEntry* particlePtr;
388 class Sigma2ffbar2ffbarsgm :
public Sigma2Process {
393 Sigma2ffbar2ffbarsgm() {}
396 virtual void sigmaKin();
399 virtual double sigmaHat();
402 virtual void setIdColAcol();
405 virtual string name()
const {
406 return "f fbar -> f' fbar' (s-channel gamma*)";}
407 virtual int code()
const {
return 223;}
408 virtual string inFlux()
const {
return "ffbarSame";}
409 virtual bool isSChannel()
const {
return true;}
423 class Sigma2ffbar2ffbarsgmZ :
public Sigma2Process {
428 Sigma2ffbar2ffbarsgmZ() {}
431 virtual void initProc();
434 virtual void sigmaKin();
437 virtual double sigmaHat();
440 virtual void setIdColAcol();
443 virtual string name()
const {
444 return "f fbar -> f' fbar' (s-channel gamma*/Z0)";}
445 virtual int code()
const {
return 224;}
446 virtual string inFlux()
const {
return "ffbarSame";}
447 virtual bool isSChannel()
const {
return true;}
448 virtual int idSChannel()
const {
return 23;}
449 virtual int resonanceA()
const {
return 23;}
455 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, colQ,
456 gamSumT, gamSumL, intSumT, intSumL, intSumA, resSumT, resSumL,
457 resSumA, gamProp, intProp, resProp, cThe;
459 vector<double> gamT, gamL, intT, intL, intA, resT, resL, resA, sigTLA;
462 ParticleDataEntry* particlePtr;
470 class Sigma2ffbar2ffbarsW :
public Sigma2Process {
475 Sigma2ffbar2ffbarsW() {}
478 virtual void initProc();
481 virtual void sigmaKin();
484 virtual double sigmaHat();
487 virtual void setIdColAcol();
490 virtual string name()
const {
491 return "f_1 fbar_2 -> f_3 fbar_4 (s-channel W+-)";}
492 virtual int code()
const {
return 225;}
493 virtual string inFlux()
const {
return "ffbarChg";}
494 virtual bool isSChannel()
const {
return true;}
495 virtual int idSChannel()
const {
return 24;}
496 virtual int resonanceA()
const {
return 24;}
502 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0;
505 ParticleDataEntry* particlePtr;
514 class Sigma2ffbar2FFbarsgmZ :
public Sigma2Process {
519 Sigma2ffbar2FFbarsgmZ(
int idIn,
int codeIn) : idNew(idIn),
523 virtual void initProc();
526 virtual void sigmaKin();
529 virtual double sigmaHat();
532 virtual void setIdColAcol();
535 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
538 virtual string name()
const {
return nameSave;}
539 virtual int code()
const {
return codeSave;}
540 virtual string inFlux()
const {
return "ffbarSame";}
541 virtual bool isSChannel()
const {
return true;}
542 virtual int id3Mass()
const {
return idNew;}
543 virtual int id4Mass()
const {
return idNew;}
544 virtual int resonanceA()
const {
return 23;}
549 int idNew, codeSave, gmZmode;
552 double ef, vf, af, mRes, GammaRes, m2Res, GamMRat, thetaWRat,
553 mr, betaf, cosThe, gamProp, intProp, resProp, openFracPair;
562 class Sigma2ffbar2FfbarsW :
public Sigma2Process {
567 Sigma2ffbar2FfbarsW(
int idIn,
int idIn2,
int codeIn) : idNew(idIn),
568 idNew2(idIn2), codeSave(codeIn) {}
571 virtual void initProc();
574 virtual void sigmaKin();
577 virtual double sigmaHat();
580 virtual void setIdColAcol();
583 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
586 virtual string name()
const {
return nameSave;}
587 virtual int code()
const {
return codeSave;}
588 virtual string inFlux()
const {
return "ffbarChg";}
589 virtual bool isSChannel()
const {
return true;}
590 virtual int id3Mass()
const {
return idNew;}
591 virtual int id4Mass()
const {
return idPartner;}
592 virtual int resonanceA()
const {
return 24;}
597 int idNew, idNew2, codeSave, idPartner;
600 double V2New, mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
601 openFracPos, openFracNeg;
609 class Sigma2ffbargmZWgmZW :
public Sigma2Process {
614 Sigma2ffbargmZWgmZW() {}
624 void setupProd(
Event& process,
int i1,
int i2,
int i3,
int i4,
628 complex fGK(
int i1,
int i2,
int i3,
int i4,
int i5,
int i6);
631 double xiGK(
double tHnow,
double uHnow);
634 double xjGK(
double tHnow,
double uHnow);
644 class Sigma2ffbar2gmZgmZ :
public Sigma2ffbargmZWgmZW {
649 Sigma2ffbar2gmZgmZ() {}
652 virtual void initProc();
655 virtual void sigmaKin();
658 virtual double sigmaHat();
661 virtual void setIdColAcol();
664 virtual double weightDecayFlav(
Event& process);
667 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
670 virtual string name()
const {
return "f fbar -> gamma*/Z0 gamma*/Z0";}
671 virtual int code()
const {
return 231;}
672 virtual string inFlux()
const {
return "ffbarSame";}
673 virtual int id3Mass()
const {
return 23;}
674 virtual int id4Mass()
const {
return 23;}
679 int gmZmode, i1, i2, i3, i4, i5, i6;
680 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
681 gamSum3, intSum3, resSum3, gamProp3, intProp3, resProp3,
682 gamSum4, intSum4, resSum4, gamProp4, intProp4, resProp4,
683 c3LL, c3LR, c3RL, c3RR, c4LL, c4LR, c4RL, c4RR, flavWt;
686 ParticleDataEntry* particlePtr;
694 class Sigma2ffbar2ZW :
public Sigma2ffbargmZWgmZW {
702 virtual void initProc();
705 virtual void sigmaKin();
708 virtual double sigmaHat();
711 virtual void setIdColAcol();
714 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
717 virtual string name()
const {
return "f fbar' -> Z0 W+- (no gamma*!)";}
718 virtual int code()
const {
return 232;}
719 virtual string inFlux()
const {
return "ffbarChg";}
720 virtual int id3Mass()
const {
return 23;}
721 virtual int id4Mass()
const {
return 24;}
722 virtual int resonanceA()
const {
return 24;}
727 double mW, widW, mWS, mwWS, sin2thetaW, cos2thetaW, thetaWRat, cotT,
728 thetaWpt, thetaWmm, lun, lde, sigma0, openFracPos, openFracNeg;
736 class Sigma2ffbar2WW :
public Sigma2ffbargmZWgmZW {
744 virtual void initProc();
747 virtual void sigmaKin();
750 virtual double sigmaHat();
753 virtual void setIdColAcol();
756 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
759 virtual string name()
const {
return "f fbar -> W+ W-";}
760 virtual int code()
const {
return 233;}
761 virtual string inFlux()
const {
return "ffbarSame";}
762 virtual int id3Mass()
const {
return 24;}
763 virtual int id4Mass()
const {
return -24;}
764 virtual int resonanceA()
const {
return 23;}
769 double mZ, widZ, mZS, mwZS, thetaWRat, sigma0, cgg, cgZ, cZZ, cfg,
770 cfZ, cff, gSS, gTT, gST, gUU, gSU, openFracPair;
778 class Sigma2ffbargmZggm :
public Sigma2Process {
783 Sigma2ffbargmZggm() {}
786 virtual void initProc();
789 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
795 double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
796 gamSum, intSum, resSum, gamProp, intProp, resProp;
807 ParticleDataEntry* particlePtr;
815 class Sigma2qqbar2gmZg :
public Sigma2ffbargmZggm {
820 Sigma2qqbar2gmZg() {}
823 virtual void sigmaKin();
826 virtual double sigmaHat();
829 virtual void setIdColAcol();
832 virtual string name()
const {
return "q qbar -> gamma*/Z0 g";}
833 virtual int code()
const {
return 241;}
834 virtual string inFlux()
const {
return "qqbarSame";}
835 virtual int id3Mass()
const {
return 23;}
848 class Sigma2qg2gmZq :
public Sigma2ffbargmZggm {
856 virtual void sigmaKin();
859 virtual double sigmaHat();
862 virtual void setIdColAcol();
865 virtual string name()
const {
return "q g-> gamma*/Z0 q";}
866 virtual int code()
const {
return 242;}
867 virtual string inFlux()
const {
return "qg";}
868 virtual int id3Mass()
const {
return 23;}
881 class Sigma2ffbar2gmZgm :
public Sigma2ffbargmZggm {
886 Sigma2ffbar2gmZgm() {}
889 virtual void sigmaKin();
892 virtual double sigmaHat();
895 virtual void setIdColAcol();
898 virtual string name()
const {
return "f fbar -> gamma*/Z0 gamma";}
899 virtual int code()
const {
return 243;}
900 virtual string inFlux()
const {
return "ffbarSame";}
901 virtual int id3Mass()
const {
return 23;}
914 class Sigma2fgm2gmZf :
public Sigma2ffbargmZggm {
922 virtual void sigmaKin();
925 virtual double sigmaHat();
928 virtual void setIdColAcol();
931 virtual string name()
const {
return "f gamma -> gamma*/Z0 f";}
932 virtual int code()
const {
return 244;}
933 virtual string inFlux()
const {
return "fgm";}
934 virtual int id3Mass()
const {
return 23;}
947 class Sigma2ffbarWggm :
public Sigma2Process {
955 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
965 class Sigma2qqbar2Wg :
public Sigma2ffbarWggm {
973 virtual void initProc();
976 virtual void sigmaKin();
979 virtual double sigmaHat();
982 virtual void setIdColAcol();
985 virtual string name()
const {
return "q qbar' -> W+- g";}
986 virtual int code()
const {
return 251;}
987 virtual string inFlux()
const {
return "ffbarChg";}
988 virtual int id3Mass()
const {
return 24;}
993 double sigma0, openFracPos, openFracNeg;
1001 class Sigma2qg2Wq :
public Sigma2ffbarWggm {
1009 virtual void initProc();
1012 virtual void sigmaKin();
1015 virtual double sigmaHat();
1018 virtual void setIdColAcol();
1021 virtual string name()
const {
return "q g-> W+- q'";}
1022 virtual int code()
const {
return 252;}
1023 virtual string inFlux()
const {
return "qg";}
1024 virtual int id3Mass()
const {
return 24;}
1029 double sigma0, openFracPos, openFracNeg;
1037 class Sigma2ffbar2Wgm :
public Sigma2ffbarWggm {
1042 Sigma2ffbar2Wgm() {}
1045 virtual void initProc();
1048 virtual void sigmaKin();
1051 virtual double sigmaHat();
1054 virtual void setIdColAcol();
1057 virtual string name()
const {
return "f fbar' -> W+- gamma";}
1058 virtual int code()
const {
return 253;}
1059 virtual string inFlux()
const {
return "ffbarChg";}
1060 virtual int id3Mass()
const {
return 24;}
1065 double sigma0, openFracPos, openFracNeg;
1073 class Sigma2fgm2Wf :
public Sigma2ffbarWggm {
1081 virtual void initProc();
1084 virtual void sigmaKin();
1087 virtual double sigmaHat();
1090 virtual void setIdColAcol();
1093 virtual string name()
const {
return "f gamma -> W+- f'";}
1094 virtual int code()
const {
return 254;}
1095 virtual string inFlux()
const {
return "fgm";}
1096 virtual int id3Mass()
const {
return 24;}
1101 double sigma0, openFracPos, openFracNeg;
1108 class Sigma2gmgm2ffbar :
public Sigma2Process {
1113 Sigma2gmgm2ffbar(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn) {}
1116 virtual void initProc();
1119 virtual void sigmaKin();
1122 virtual double sigmaHat() {
return sigma;}
1125 virtual void setIdColAcol();
1128 virtual string name()
const {
return nameSave;}
1129 virtual int code()
const {
return codeSave;}
1130 virtual string inFlux()
const {
return "gmgm";}
1131 virtual int id3Mass()
const {
return idMass;}
1132 virtual int id4Mass()
const {
return idMass;}
1137 int idNew, codeSave, idMass, idNow;
1139 double ef4, s34Avg, sigTU, sigma, openFracPair;
1153 : idNew(idIn), codeSave(codeIn), inFluxSave(inFluxIn) {}
1156 virtual void initProc();
1159 virtual void sigmaKin();
1162 virtual double sigmaHat() {
return sigma;}
1165 virtual void setIdColAcol();
1168 virtual string name()
const {
return nameSave;}
1169 virtual int code()
const {
return codeSave;}
1170 virtual string inFlux()
const {
return inFluxSave;}
1171 virtual int id3Mass()
const {
return idMass;}
1172 virtual int id4Mass()
const {
return idMass;}
1177 int idNew, codeSave, idMass, idNow;
1178 string nameSave, inFluxSave;
1179 double ef2, s34Avg, sigTU, sigma, openFracPair;
1194 : codeSave(codeIn), inFluxSave(inFluxIn) {}
1197 virtual void initProc();
1200 virtual void sigmaKin();
1203 virtual double sigmaHat();
1206 virtual void setIdColAcol();
1209 virtual string name()
const {
return nameSave;}
1210 virtual int code()
const {
return codeSave;}
1211 virtual string inFlux()
const {
return inFluxSave;}
1217 double sigUS, sigma0;
1218 string nameSave, inFluxSave;
1233 : codeSave(codeIn), inFluxSave(inFluxIn) {}
1236 virtual void initProc();
1239 virtual void sigmaKin();
1242 virtual double sigmaHat();
1245 virtual void setIdColAcol();
1248 virtual string name()
const {
return nameSave;}
1249 virtual int code()
const {
return codeSave;}
1250 virtual string inFlux()
const {
return inFluxSave;}
1256 double sigUS, sigma0;
1257 string nameSave, inFluxSave;
1265 #endif // Pythia8_SigmaEW_H