10 #ifndef Pythia8_SigmaSUSY_H
11 #define Pythia8_SigmaSUSY_H
13 #include "Pythia8/PhaseSpace.h"
14 #include "Pythia8/PythiaComplex.h"
15 #include "Pythia8/SigmaProcess.h"
16 #include "Pythia8/SusyCouplings.h"
32 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
48 Sigma2qqbar2chi0chi0(
int id3chiIn,
int id4chiIn,
int codeIn) {
58 if (id3chi == 2) id3 = 1000023;
59 if (id3chi == 3) id3 = 1000025;
60 if (id3chi == 4) id3 = 1000035;
61 if (id3chi == 5) id3 = 1000045;
63 if (id4chi == 2) id4 = 1000023;
64 if (id4chi == 3) id4 = 1000025;
65 if (id4chi == 4) id4 = 1000035;
66 if (id4chi == 5) id4 = 1000045;
71 virtual void initProc();
74 virtual void sigmaKin();
77 virtual double sigmaHat();
80 virtual void setIdColAcol();
86 virtual string name()
const {
return nameSave;}
87 virtual int code()
const {
return codeSave;}
88 virtual string inFlux()
const {
return "ff";}
89 virtual int id3Mass()
const {
return abs(id3);}
90 virtual int id4Mass()
const {
return abs(id4);}
91 virtual int resonanceA()
const {
return 23;}
92 virtual bool isSUSY()
const {
return true;}
93 virtual double getSigma0()
const {
return sigma0;}
98 int id3chi, id4chi, codeSave;
102 double sigma0, ui, uj, ti, tj, openFracPair;
105 CoupSUSY* coupSUSYPtr;
113 class Sigma2qqbar2charchi0 :
public Sigma2qqbar2chi0chi0 {
118 Sigma2qqbar2charchi0(
int id3chiIn,
int id4chiIn,
int codeIn) {
126 id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
127 if (id3chi < 0) id3 = -id3;
130 if (id4chi == 2) id4 = 1000023;
131 if (id4chi == 3) id4 = 1000025;
132 if (id4chi == 4) id4 = 1000035;
133 if (id4chi == 5) id4 = 1000045;
138 virtual void sigmaKin();
141 virtual double sigmaHat();
143 virtual int resonanceA()
const {
return 24;}
155 class Sigma2qqbar2charchar :
public Sigma2qqbar2chi0chi0 {
160 Sigma2qqbar2charchar(
int id3chiIn,
int id4chiIn,
int codeIn) {
168 id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
169 id4 = (abs(id4chi) == 2) ? -1000037 : -1000024;
174 virtual void sigmaKin();
177 virtual double sigmaHat();
185 class Sigma2qg2chi0squark :
public Sigma2Process {
190 Sigma2qg2chi0squark() { };
193 Sigma2qg2chi0squark(
int id3chiIn,
int id4sqIn,
bool isUp,
int codeIn) {
202 if (id3chi == 2) id3 = 1000023;
203 if (id3chi == 3) id3 = 1000025;
204 if (id3chi == 4) id3 = 1000035;
205 if (id3chi == 5) id3 = 1000045;
206 id4 = 1000001 + (isUp ? 1 : 0);
207 if (id4sq == 2) id4 = 1000003 + (isUp ? 1 : 0);
208 if (id4sq == 3) id4 = 1000005 + (isUp ? 1 : 0);
209 if (id4sq == 4) id4 = 2000001 + (isUp ? 1 : 0);
210 if (id4sq == 5) id4 = 2000003 + (isUp ? 1 : 0);
211 if (id4sq == 6) id4 = 2000005 + (isUp ? 1 : 0);
216 virtual void initProc();
219 virtual void sigmaKin();
222 virtual double sigmaHat();
225 virtual void setIdColAcol();
228 virtual string name()
const {
return nameSave;}
229 virtual int code()
const {
return codeSave;}
230 virtual string inFlux()
const {
return "qg";}
231 virtual int id3Mass()
const {
return abs(id3);}
232 virtual int id4Mass()
const {
return abs(id4);}
233 virtual bool isSUSY()
const {
return true;}
238 int id3chi, id4sq, codeSave;
242 double sigma0, ui, uj, ti, tj, openFracPair;
245 CoupSUSY* coupSUSYPtr;
253 class Sigma2qg2charsquark :
public Sigma2qg2chi0squark {
258 Sigma2qg2charsquark(
int id3chiIn,
int id4sqIn,
bool isUp,
int codeIn) {
267 if (abs(id3chi) == 2) id3Sav = 1000037;
268 if (isUp) id3Sav = -id3Sav;
269 id4Sav = 1000001 + (isUp ? 1 : 0);
270 if (id4sq == 2) id4Sav = 1000003 + (isUp ? 1 : 0);
271 if (id4sq == 3) id4Sav = 1000005 + (isUp ? 1 : 0);
272 if (id4sq == 4) id4Sav = 2000001 + (isUp ? 1 : 0);
273 if (id4sq == 5) id4Sav = 2000003 + (isUp ? 1 : 0);
274 if (id4sq == 6) id4Sav = 2000005 + (isUp ? 1 : 0);
283 virtual void initProc();
286 virtual double sigmaHat();
289 virtual void setIdColAcol();
302 class Sigma2qq2squarksquark :
public Sigma2Process {
307 Sigma2qq2squarksquark() {}
310 Sigma2qq2squarksquark(
int id3In,
int id4In,
int codeIn) {
323 virtual void initProc();
326 virtual void sigmaKin();
329 virtual double sigmaHat();
332 virtual void setIdColAcol();
335 virtual string name()
const {
return nameSave;}
336 virtual int code()
const {
return codeSave;}
337 virtual string inFlux()
const {
return "qq";}
338 virtual int id3Mass()
const {
return abs(id3Sav);}
339 virtual int id4Mass()
const {
return abs(id4Sav);}
340 virtual bool isSUSY()
const {
return true;}
345 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
351 vector<double> m2Neut, m2Char;
354 double sigmaChar, sigmaNeut, sigmaGlu;
355 double sigmaCharNeut, sigmaCharGlu, sigmaNeutGlu;
360 vector<double> tNeut, uNeut, tChar, uChar;
361 double sumCt, sumCu, sumNt, sumNu, sumGt, sumGu, sumInterference;
364 CoupSUSY* coupSUSYPtr;
371 class Sigma2qqbar2squarkantisquark :
public Sigma2Process {
376 Sigma2qqbar2squarkantisquark() {}
379 Sigma2qqbar2squarkantisquark(
int id3In,
int id4In,
int codeIn) {
384 id4Sav = -abs(id4In);
393 virtual void initProc();
396 virtual void sigmaKin();
399 virtual double sigmaHat();
402 virtual void setIdColAcol();
405 virtual string name()
const {
return nameSave;}
406 virtual int code()
const {
return codeSave;}
407 virtual string inFlux()
const {
return "qq";}
408 virtual int id3Mass()
const {
return abs(id3Sav);}
409 virtual int id4Mass()
const {
return abs(id4Sav);}
410 virtual bool isSUSY()
const {
return true;}
415 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
421 vector<double> m2Neut;
426 double sigmaEW, sigmaGlu, sigmaEWG;
430 vector<double> tNeut, uNeut;
432 double sumColS, sumColT, sumInterference;
435 CoupSUSY* coupSUSYPtr;
443 class Sigma2gg2squarkantisquark :
public Sigma2Process {
448 Sigma2gg2squarkantisquark() {
452 Sigma2gg2squarkantisquark(
int id34In,
int codeIn) {
456 id3Sav = abs(id34In);
457 id4Sav = -abs(id34In);
466 virtual void initProc();
469 virtual void sigmaKin();
472 virtual double sigmaHat() {
return sigma;}
475 virtual void setIdColAcol();
478 virtual string name()
const {
return nameSave;}
479 virtual int code()
const {
return codeSave;}
480 virtual string inFlux()
const {
return "gg";}
481 virtual int id3Mass()
const {
return abs(id3Sav);}
482 virtual int id4Mass()
const {
return abs(id4Sav);}
483 virtual bool isSUSY()
const {
return true;}
488 int id3Sav, id4Sav, codeSave;
490 double sigma, m2Sq, openFracPair;
493 CoupSUSY* coupSUSYPtr;
501 class Sigma2qg2squarkgluino :
public Sigma2Process {
506 Sigma2qg2squarkgluino() {}
509 Sigma2qg2squarkgluino(
int id3In,
int codeIn) {
521 virtual void initProc();
524 virtual void sigmaKin();
527 virtual double sigmaHat();
530 virtual void setIdColAcol();
533 virtual string name()
const {
return nameSave;}
534 virtual int code()
const {
return codeSave;}
535 virtual string inFlux()
const {
return "qg";}
536 virtual int id3Mass()
const {
return abs(id3Sav);}
537 virtual int id4Mass()
const {
return 1000021;}
538 virtual bool isSUSY()
const {
return true;}
543 int id3Sav, codeSave;
545 double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
548 CoupSUSY* coupSUSYPtr;
556 class Sigma2gg2gluinogluino :
public Sigma2Process {
561 Sigma2gg2gluinogluino() {
565 virtual void initProc();
568 virtual void sigmaKin();
571 virtual double sigmaHat() {
return sigma;}
574 virtual void setIdColAcol();
577 virtual string name()
const {
return "g g -> gluino gluino";}
578 virtual int code()
const {
return 1201;}
579 virtual string inFlux()
const {
return "gg";}
580 virtual int id3Mass()
const {
return 1000021;}
581 virtual int id4Mass()
const {
return 1000021;}
582 virtual bool isSUSY()
const {
return true;}
587 double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
590 CoupSUSY* coupSUSYPtr;
598 class Sigma2qqbar2gluinogluino :
public Sigma2Process {
603 Sigma2qqbar2gluinogluino() {
608 virtual void initProc();
611 virtual void sigmaKin();
614 virtual double sigmaHat();
617 virtual void setIdColAcol();
620 virtual string name()
const {
return "q qbar -> gluino gluino";}
621 virtual int code()
const {
return 1202;}
622 virtual string inFlux()
const {
return "qq";}
623 virtual int id3Mass()
const {
return 1000021;}
624 virtual int id4Mass()
const {
return 1000021;}
625 virtual bool isSUSY()
const {
return true;}
630 double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
633 CoupSUSY* coupSUSYPtr;
639 class Sigma1qq2antisquark :
public Sigma1Process {
643 Sigma1qq2antisquark() {}
646 Sigma1qq2antisquark(
int id3In) {
653 virtual void initProc();
656 virtual void sigmaKin();
659 virtual double sigmaHat();
662 virtual void setIdColAcol();
665 virtual string name()
const {
return nameSave;}
666 virtual int code()
const {
return codeSave;}
667 virtual string inFlux()
const {
return "qq";}
668 virtual bool isSUSY()
const {
return true;}
669 virtual bool isRPV()
const {
return true;}
670 virtual int resonanceA()
const {
return idRes;}
675 double mRes, GammaRes, m2Res, sigBW, widthOut;
680 CoupSUSY* coupSUSYPtr;
707 if (id4chi == 2) id4 = 1000023;
708 if (id4chi == 3) id4 = 1000025;
709 if (id4chi == 4) id4 = 1000035;
710 if (id4chi == 5) id4 = 1000045;
715 virtual void initProc();
718 virtual void sigmaKin();
721 virtual double sigmaHat();
724 virtual void setIdColAcol();
730 virtual string name()
const {
return nameSave;}
731 virtual int code()
const {
return codeSave;}
732 virtual string inFlux()
const {
return "ff";}
733 virtual int id3Mass()
const {
return abs(id3);}
734 virtual int id4Mass()
const {
return abs(id4);}
735 virtual int resonanceA()
const {
return 23;}
736 virtual bool isSUSY()
const {
return true;}
737 virtual double getSigma0()
const {
return sigma0;}
742 int id3chi, id4chi, codeSave;
746 double sigma0, ui, uj, ti, tj, openFracPair;
769 id4 = (abs(id4chi) == 2) ? 1000037 : 1000024;
770 if (id4chi < 0) id4 = -id4;
774 virtual void initProc();
777 virtual void sigmaKin();
780 virtual double sigmaHat();
783 virtual void setIdColAcol();
785 virtual int resonanceA()
const {
return 24;}
810 id4Sav = -abs(id4In);
818 virtual void initProc();
821 virtual void sigmaKin();
824 virtual double sigmaHat();
827 virtual void setIdColAcol();
830 virtual string name()
const {
return nameSave;}
831 virtual int code()
const {
return codeSave;}
832 virtual string inFlux()
const {
return "qq";}
833 virtual int id3Mass()
const {
return abs(id3Sav);}
834 virtual int id4Mass()
const {
return abs(id4Sav);}
835 virtual bool isSUSY()
const {
return true;}
840 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
845 vector<double> m2Neut;
853 vector<double> tNeut, uNeut;
855 double sumColS, sumColT, sumInterference;
866 #endif // Pythia8_SigmaSUSY_H