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 {
32 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
40 class Sigma2qqbar2chi0chi0 :
public Sigma2SUSY {
45 Sigma2qqbar2chi0chi0() {};
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 void sigmaKin();
289 virtual double sigmaHat();
292 virtual void setIdColAcol();
305 class Sigma2qq2squarksquark :
public Sigma2Process {
310 Sigma2qq2squarksquark() {}
313 Sigma2qq2squarksquark(
int id3In,
int id4In,
int codeIn) {
326 virtual void initProc();
329 virtual void sigmaKin();
332 virtual double sigmaHat();
335 virtual void setIdColAcol();
338 virtual string name()
const {
return nameSave;}
339 virtual int code()
const {
return codeSave;}
340 virtual string inFlux()
const {
return "qq";}
341 virtual int id3Mass()
const {
return abs(id3Sav);}
342 virtual int id4Mass()
const {
return abs(id4Sav);}
343 virtual bool isSUSY()
const {
return true;}
348 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
354 vector<double> m2Neut, m2Char;
357 double sigmaChar, sigmaNeut, sigmaGlu;
358 double sigmaCharNeut, sigmaCharGlu, sigmaNeutGlu;
363 vector<double> tNeut, uNeut, tChar, uChar;
364 double sumCt, sumCu, sumNt, sumNu, sumGt, sumGu, sumInterference;
367 CoupSUSY* coupSUSYPtr;
374 class Sigma2qqbar2squarkantisquark :
public Sigma2Process {
379 Sigma2qqbar2squarkantisquark() {}
382 Sigma2qqbar2squarkantisquark(
int id3In,
int id4In,
int codeIn) {
387 id4Sav = -abs(id4In);
396 virtual void initProc();
399 virtual void sigmaKin();
402 virtual double sigmaHat();
405 virtual void setIdColAcol();
408 virtual string name()
const {
return nameSave;}
409 virtual int code()
const {
return codeSave;}
410 virtual string inFlux()
const {
return "qq";}
411 virtual int id3Mass()
const {
return abs(id3Sav);}
412 virtual int id4Mass()
const {
return abs(id4Sav);}
413 virtual bool isSUSY()
const {
return true;}
418 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
420 bool isUD, isCC, onlyQCD;
424 vector<double> m2Neut;
429 double sigmaEW, sigmaGlu, sigmaEWG;
433 vector<double> tNeut, uNeut;
435 double sumColS, sumColT, sumInterference;
438 CoupSUSY* coupSUSYPtr;
446 class Sigma2gg2squarkantisquark :
public Sigma2Process {
451 Sigma2gg2squarkantisquark() {
455 Sigma2gg2squarkantisquark(
int id34In,
int codeIn) {
459 id3Sav = abs(id34In);
460 id4Sav = -abs(id34In);
469 virtual void initProc();
472 virtual void sigmaKin();
475 virtual double sigmaHat() {
return sigma;}
478 virtual void setIdColAcol();
481 virtual string name()
const {
return nameSave;}
482 virtual int code()
const {
return codeSave;}
483 virtual string inFlux()
const {
return "gg";}
484 virtual int id3Mass()
const {
return abs(id3Sav);}
485 virtual int id4Mass()
const {
return abs(id4Sav);}
486 virtual bool isSUSY()
const {
return true;}
491 int id3Sav, id4Sav, codeSave;
493 double sigma, m2Sq, openFracPair;
496 CoupSUSY* coupSUSYPtr;
504 class Sigma2qg2squarkgluino :
public Sigma2Process {
509 Sigma2qg2squarkgluino() {}
512 Sigma2qg2squarkgluino(
int id3In,
int codeIn) {
523 virtual void initProc();
526 virtual void sigmaKin();
529 virtual double sigmaHat();
532 virtual void setIdColAcol();
535 virtual string name()
const {
return nameSave;}
536 virtual int code()
const {
return codeSave;}
537 virtual string inFlux()
const {
return "qg";}
538 virtual int id3Mass()
const {
return abs(id3);}
539 virtual int id4Mass()
const {
return 1000021;}
540 virtual bool isSUSY()
const {
return true;}
547 double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
550 CoupSUSY* coupSUSYPtr;
558 class Sigma2gg2gluinogluino :
public Sigma2Process {
563 Sigma2gg2gluinogluino() {
567 virtual void initProc();
570 virtual void sigmaKin();
573 virtual double sigmaHat() {
return sigma;}
576 virtual void setIdColAcol();
579 virtual string name()
const {
return "g g -> gluino gluino";}
580 virtual int code()
const {
return 1201;}
581 virtual string inFlux()
const {
return "gg";}
582 virtual int id3Mass()
const {
return 1000021;}
583 virtual int id4Mass()
const {
return 1000021;}
584 virtual bool isSUSY()
const {
return true;}
589 double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
592 CoupSUSY* coupSUSYPtr;
600 class Sigma2qqbar2gluinogluino :
public Sigma2Process {
605 Sigma2qqbar2gluinogluino() {
610 virtual void initProc();
613 virtual void sigmaKin();
616 virtual double sigmaHat();
619 virtual void setIdColAcol();
622 virtual string name()
const {
return "q qbar -> gluino gluino";}
623 virtual int code()
const {
return 1202;}
624 virtual string inFlux()
const {
return "qq";}
625 virtual int id3Mass()
const {
return 1000021;}
626 virtual int id4Mass()
const {
return 1000021;}
627 virtual bool isSUSY()
const {
return true;}
632 double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
635 CoupSUSY* coupSUSYPtr;
641 class Sigma1qq2antisquark :
public Sigma1Process {
645 Sigma1qq2antisquark() {}
648 Sigma1qq2antisquark(
int id3In) {
655 virtual void initProc();
658 virtual void sigmaKin();
661 virtual double sigmaHat();
664 virtual void setIdColAcol();
667 virtual string name()
const {
return nameSave;}
668 virtual int code()
const {
return codeSave;}
669 virtual string inFlux()
const {
return "qq";}
670 virtual bool isSUSY()
const {
return true;}
671 virtual bool isRPV()
const {
return true;}
672 virtual int resonanceA()
const {
return idRes;}
677 double mRes, GammaRes, m2Res, sigBW, widthOut;
682 CoupSUSY* coupSUSYPtr;
691 class Sigma2qqbar2chi0gluino :
public Sigma2SUSY {
696 Sigma2qqbar2chi0gluino() {};
699 Sigma2qqbar2chi0gluino(
int id4chiIn,
int codeIn) {
709 if (id4chi == 2) id4 = 1000023;
710 if (id4chi == 3) id4 = 1000025;
711 if (id4chi == 4) id4 = 1000035;
712 if (id4chi == 5) id4 = 1000045;
717 virtual void initProc();
720 virtual void sigmaKin();
723 virtual double sigmaHat();
726 virtual void setIdColAcol();
732 virtual string name()
const {
return nameSave;}
733 virtual int code()
const {
return codeSave;}
734 virtual string inFlux()
const {
return "ff";}
735 virtual int id3Mass()
const {
return abs(id3);}
736 virtual int id4Mass()
const {
return abs(id4);}
737 virtual int resonanceA()
const {
return 23;}
738 virtual bool isSUSY()
const {
return true;}
739 virtual double getSigma0()
const {
return sigma0;}
744 int id3chi, id4chi, codeSave;
748 double sigma0, ui, uj, ti, tj, openFracPair;
750 CoupSUSY* coupSUSYPtr;
758 class Sigma2qqbar2chargluino :
public Sigma2qqbar2chi0gluino {
763 Sigma2qqbar2chargluino(
int id4chiIn,
int codeIn) {
771 id4 = (abs(id4chi) == 2) ? 1000037 : 1000024;
772 if (id4chi < 0) id4 = -id4;
776 virtual void initProc();
779 virtual void sigmaKin();
782 virtual double sigmaHat();
785 virtual void setIdColAcol();
787 virtual int resonanceA()
const {
return 24;}
799 class Sigma2qqbar2sleptonantislepton :
public Sigma2qqbar2squarkantisquark {
804 Sigma2qqbar2sleptonantislepton() {}
807 Sigma2qqbar2sleptonantislepton(
int id3In,
int id4In,
int codeIn) {
812 id4Sav = -abs(id4In);
820 virtual void initProc();
823 virtual void sigmaKin();
826 virtual double sigmaHat();
829 virtual void setIdColAcol();
832 virtual string name()
const {
return nameSave;}
833 virtual int code()
const {
return codeSave;}
834 virtual string inFlux()
const {
return "qq";}
835 virtual int id3Mass()
const {
return abs(id3Sav);}
836 virtual int id4Mass()
const {
return abs(id4Sav);}
837 virtual bool isSUSY()
const {
return true;}
842 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
847 vector<double> m2Neut;
855 vector<double> tNeut, uNeut;
857 double sumColS, sumColT, sumInterference;
860 CoupSUSY* coupSUSYPtr;
868 #endif // Pythia8_SigmaSUSY_H