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"
24 class Sigma2SUSY :
public Sigma2Process {
29 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
30 void setPointers(
string processIn);
38 class Sigma2qqbar2chi0chi0 :
public Sigma2SUSY {
43 Sigma2qqbar2chi0chi0() : id3chi(), id4chi(), codeSave(), sigma0(),
44 ui(), uj(), ti(), tj(), openFracPair() {};
47 Sigma2qqbar2chi0chi0(
int id3chiIn,
int id4chiIn,
int codeIn) : sigma0(),
48 ui(), uj(), ti(), tj(), openFracPair() {
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;
111 class Sigma2qqbar2charchi0 :
public Sigma2qqbar2chi0chi0 {
116 Sigma2qqbar2charchi0(
int id3chiIn,
int id4chiIn,
int codeIn) {
124 id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
125 if (id3chi < 0) id3 = -id3;
128 if (id4chi == 2) id4 = 1000023;
129 if (id4chi == 3) id4 = 1000025;
130 if (id4chi == 4) id4 = 1000035;
131 if (id4chi == 5) id4 = 1000045;
136 virtual void sigmaKin();
139 virtual double sigmaHat();
141 virtual int resonanceA()
const {
return 24;}
153 class Sigma2qqbar2charchar :
public Sigma2qqbar2chi0chi0 {
158 Sigma2qqbar2charchar(
int id3chiIn,
int id4chiIn,
int codeIn) {
166 id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
167 id4 = (abs(id4chi) == 2) ? -1000037 : -1000024;
172 virtual void sigmaKin();
175 virtual double sigmaHat();
183 class Sigma2qg2chi0squark :
public Sigma2SUSY {
188 Sigma2qg2chi0squark() : id3chi(), id4sq(), codeSave(), sigma0(),
189 ui(), uj(), ti(), tj(), openFracPair() { };
192 Sigma2qg2chi0squark(
int id3chiIn,
int id4sqIn,
bool isUp,
int codeIn) :
193 sigma0(), ui(), uj(), ti(), tj(), openFracPair() {
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;
251 class Sigma2qg2charsquark :
public Sigma2qg2chi0squark {
256 Sigma2qg2charsquark(
int id3chiIn,
int id4sqIn,
bool isUp,
int codeIn) {
265 if (abs(id3chi) == 2) id3Sav = 1000037;
266 if (isUp) id3Sav = -id3Sav;
267 id4Sav = 1000001 + (isUp ? 1 : 0);
268 if (id4sq == 2) id4Sav = 1000003 + (isUp ? 1 : 0);
269 if (id4sq == 3) id4Sav = 1000005 + (isUp ? 1 : 0);
270 if (id4sq == 4) id4Sav = 2000001 + (isUp ? 1 : 0);
271 if (id4sq == 5) id4Sav = 2000003 + (isUp ? 1 : 0);
272 if (id4sq == 6) id4Sav = 2000005 + (isUp ? 1 : 0);
281 virtual void initProc();
284 virtual void sigmaKin();
287 virtual double sigmaHat();
290 virtual void setIdColAcol();
303 class Sigma2qq2squarksquark :
public Sigma2SUSY {
308 Sigma2qq2squarksquark() : id3Sav(), id4Sav(), codeSave(), iGen3(), iGen4(),
309 nNeut(), isUD(), onlyQCD(), m2Glu(), sigmaChar(), sigmaNeut(), sigmaGlu(),
310 sigmaCharNeut(), sigmaCharGlu(), sigmaNeutGlu(), openFracPair(), tGlu(),
311 uGlu(), sumCt(), sumCu(), sumNt(), sumNu(), sumGt(), sumGu(),
315 Sigma2qq2squarksquark(
int id3In,
int id4In,
int codeIn) : iGen3(), iGen4(),
316 nNeut(), isUD(), onlyQCD(), m2Glu(), sigmaChar(), sigmaNeut(), sigmaGlu(),
317 sigmaCharNeut(), sigmaCharGlu(), sigmaNeutGlu(), openFracPair(), tGlu(),
318 uGlu(), sumCt(), sumCu(), sumNt(), sumNu(), sumGt(), sumGu(),
332 virtual void initProc();
335 virtual void sigmaKin();
338 virtual double sigmaHat();
341 virtual void setIdColAcol();
344 virtual string name()
const {
return nameSave;}
345 virtual int code()
const {
return codeSave;}
346 virtual string inFlux()
const {
return "qq";}
347 virtual int id3Mass()
const {
return abs(id3Sav);}
348 virtual int id4Mass()
const {
return abs(id4Sav);}
349 virtual bool isSUSY()
const {
return true;}
354 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
360 vector<double> m2Neut, m2Char;
363 double sigmaChar, sigmaNeut, sigmaGlu;
364 double sigmaCharNeut, sigmaCharGlu, sigmaNeutGlu;
369 vector<double> tNeut, uNeut, tChar, uChar;
370 double sumCt, sumCu, sumNt, sumNu, sumGt, sumGu, sumInterference;
378 class Sigma2qqbar2squarkantisquark :
public Sigma2SUSY {
383 Sigma2qqbar2squarkantisquark() : id3Sav(), id4Sav(), codeSave(), iGen3(),
384 iGen4(), nNeut(), isUD(), isCC(), onlyQCD(), m2Glu(), xW(), openFracPair(),
385 sigmaEW(), sigmaGlu(), sigmaEWG(), tGlu(), uGlu(), sumColS(), sumColT(),
389 Sigma2qqbar2squarkantisquark(
int id3In,
int id4In,
int codeIn) : iGen3(),
390 iGen4(), nNeut(), isUD(), isCC(), onlyQCD(), m2Glu(), xW(), openFracPair(),
391 sigmaEW(), sigmaGlu(), sigmaEWG(), tGlu(), uGlu(), sumColS(), sumColT(),
397 id4Sav = -abs(id4In);
406 virtual void initProc();
409 virtual void sigmaKin();
412 virtual double sigmaHat();
415 virtual void setIdColAcol();
418 virtual string name()
const {
return nameSave;}
419 virtual int code()
const {
return codeSave;}
420 virtual string inFlux()
const {
return "qq";}
421 virtual int id3Mass()
const {
return abs(id3Sav);}
422 virtual int id4Mass()
const {
return abs(id4Sav);}
423 virtual bool isSUSY()
const {
return true;}
428 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
430 bool isUD, isCC, onlyQCD;
434 vector<double> m2Neut;
439 double sigmaEW, sigmaGlu, sigmaEWG;
443 vector<double> tNeut, uNeut;
445 double sumColS, sumColT, sumInterference;
453 class Sigma2gg2squarkantisquark :
public Sigma2SUSY {
458 Sigma2gg2squarkantisquark() : id3Sav(), id4Sav(), codeSave(), sigma(),
459 m2Sq(), openFracPair() { }
462 Sigma2gg2squarkantisquark(
int id34In,
int codeIn) : sigma(), m2Sq(),
467 id3Sav = abs(id34In);
468 id4Sav = -abs(id34In);
477 virtual void initProc();
480 virtual void sigmaKin();
483 virtual double sigmaHat() {
return sigma;}
486 virtual void setIdColAcol();
489 virtual string name()
const {
return nameSave;}
490 virtual int code()
const {
return codeSave;}
491 virtual string inFlux()
const {
return "gg";}
492 virtual int id3Mass()
const {
return abs(id3Sav);}
493 virtual int id4Mass()
const {
return abs(id4Sav);}
494 virtual bool isSUSY()
const {
return true;}
499 int id3Sav, id4Sav, codeSave;
501 double sigma, m2Sq, openFracPair;
510 class Sigma2qg2squarkgluino :
public Sigma2SUSY {
515 Sigma2qg2squarkgluino() : codeSave(), sigmaA(), sigmaB(), comFacHat(),
516 m2Glu(), m2Sq(), openFracPair() {}
519 Sigma2qg2squarkgluino(
int id3In,
int codeIn) : sigmaA(), sigmaB(),
520 comFacHat(), m2Glu(), m2Sq(), openFracPair() {
531 virtual void initProc();
534 virtual void sigmaKin();
537 virtual double sigmaHat();
540 virtual void setIdColAcol();
543 virtual string name()
const {
return nameSave;}
544 virtual int code()
const {
return codeSave;}
545 virtual string inFlux()
const {
return "qg";}
546 virtual int id3Mass()
const {
return abs(id3);}
547 virtual int id4Mass()
const {
return 1000021;}
548 virtual bool isSUSY()
const {
return true;}
555 double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
564 class Sigma2gg2gluinogluino :
public Sigma2SUSY {
569 Sigma2gg2gluinogluino() : sigTS(), sigUS(), sigTU(), sigSum(), sigma(),
573 virtual void initProc();
576 virtual void sigmaKin();
579 virtual double sigmaHat() {
return sigma;}
582 virtual void setIdColAcol();
585 virtual string name()
const {
return "g g -> gluino gluino";}
586 virtual int code()
const {
return 1201;}
587 virtual string inFlux()
const {
return "gg";}
588 virtual int id3Mass()
const {
return 1000021;}
589 virtual int id4Mass()
const {
return 1000021;}
590 virtual bool isSUSY()
const {
return true;}
595 double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
604 class Sigma2qqbar2gluinogluino :
public Sigma2SUSY {
609 Sigma2qqbar2gluinogluino() : openFracPair(), s34Avg(), sigS(), tHG(), uHG(),
613 virtual void initProc();
616 virtual void sigmaKin();
619 virtual double sigmaHat();
622 virtual void setIdColAcol();
625 virtual string name()
const {
return "q qbar -> gluino gluino";}
626 virtual int code()
const {
return 1202;}
627 virtual string inFlux()
const {
return "qq";}
628 virtual int id3Mass()
const {
return 1000021;}
629 virtual int id4Mass()
const {
return 1000021;}
630 virtual bool isSUSY()
const {
return true;}
635 double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
641 class Sigma1qq2antisquark :
public Sigma1Process {
645 Sigma1qq2antisquark() : Sigma1Process(), mRes(), GammaRes(), m2Res(),
646 sigBW(), widthOut(), codeSave(), idRes() {}
649 Sigma1qq2antisquark(
int id3In) : Sigma1Process(), mRes(), GammaRes(),
650 m2Res(), sigBW(), widthOut(), codeSave(), idRes(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;
686 class Sigma2qqbar2chi0gluino :
public Sigma2SUSY {
691 Sigma2qqbar2chi0gluino() : id3chi(), id4chi(), codeSave(), sigma0(), ui(),
692 uj(), ti(), tj(), openFracPair() {};
695 Sigma2qqbar2chi0gluino(
int id4chiIn,
int codeIn) : id3chi(), sigma0(), ui(),
696 uj(), ti(), tj(), openFracPair() {
706 if (id4chi == 2) id4 = 1000023;
707 if (id4chi == 3) id4 = 1000025;
708 if (id4chi == 4) id4 = 1000035;
709 if (id4chi == 5) id4 = 1000045;
714 virtual void initProc();
717 virtual void sigmaKin();
720 virtual double sigmaHat();
723 virtual void setIdColAcol();
729 virtual string name()
const {
return nameSave;}
730 virtual int code()
const {
return codeSave;}
731 virtual string inFlux()
const {
return "ff";}
732 virtual int id3Mass()
const {
return abs(id3);}
733 virtual int id4Mass()
const {
return abs(id4);}
734 virtual int resonanceA()
const {
return 23;}
735 virtual bool isSUSY()
const {
return true;}
736 virtual double getSigma0()
const {
return sigma0;}
741 int id3chi, id4chi, codeSave;
745 double sigma0, ui, uj, ti, tj, openFracPair;
753 class Sigma2qqbar2chargluino :
public Sigma2qqbar2chi0gluino {
758 Sigma2qqbar2chargluino(
int id4chiIn,
int codeIn) {
766 id4 = (abs(id4chi) == 2) ? 1000037 : 1000024;
767 if (id4chi < 0) id4 = -id4;
771 virtual void initProc();
774 virtual void sigmaKin();
777 virtual double sigmaHat();
780 virtual void setIdColAcol();
782 virtual int resonanceA()
const {
return 24;}
794 class Sigma2qqbar2sleptonantislepton :
public Sigma2qqbar2squarkantisquark {
799 Sigma2qqbar2sleptonantislepton() : id3Sav(), id4Sav(), codeSave(), iGen3(),
800 iGen4(), nNeut(), isUD(), xW(), openFracPair(), sigmaEW(), sumColS(),
801 sumColT(), sumInterference() {}
804 Sigma2qqbar2sleptonantislepton(
int id3In,
int id4In,
int codeIn) : iGen3(),
805 iGen4(), nNeut(), isUD(), xW(), openFracPair(), sigmaEW(), sumColS(),
806 sumColT(), sumInterference() {
811 id4Sav = -abs(id4In);
819 virtual void initProc();
822 virtual void sigmaKin();
825 virtual double sigmaHat();
828 virtual void setIdColAcol();
831 virtual string name()
const {
return nameSave;}
832 virtual int code()
const {
return codeSave;}
833 virtual string inFlux()
const {
return "qq";}
834 virtual int id3Mass()
const {
return abs(id3Sav);}
835 virtual int id4Mass()
const {
return abs(id4Sav);}
836 virtual bool isSUSY()
const {
return true;}
841 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
846 vector<double> m2Neut;
854 vector<double> tNeut, uNeut;
856 double sumColS, sumColT, sumInterference;
864 #endif // Pythia8_SigmaSUSY_H