9 #ifndef Pythia8_SigmaQCD_H
10 #define Pythia8_SigmaQCD_H
12 #include "Pythia8/SigmaProcess.h"
20 class Sigma0nonDiffractive :
public Sigma0Process {
25 Sigma0nonDiffractive() {}
28 virtual double sigmaHat() {
return sigmaTotPtr->sigmaND();}
31 virtual void setIdColAcol() {}
34 virtual string name()
const {
return "non-diffractive";}
35 virtual int code()
const {
return 101;}
36 virtual bool isNonDiff()
const {
return true;}
46 class Sigma0AB2AB :
public Sigma0Process {
54 virtual double sigmaHat() {
return sigmaTotPtr->sigmaEl();}
57 virtual void setIdColAcol();
60 virtual string name()
const {
return "A B -> A B elastic";}
61 virtual int code()
const {
return 102;}
62 virtual bool isResolved()
const {
return false;}
72 class Sigma0AB2XB :
public Sigma0Process {
80 virtual double sigmaHat() {
return sigmaTotPtr->sigmaXB();}
83 virtual void setIdColAcol();
86 virtual string name()
const {
return "A B -> X B single diffractive";}
87 virtual int code()
const {
return 103;}
88 virtual bool isResolved()
const {
return false;}
89 virtual bool isDiffA()
const {
return true;};
99 class Sigma0AB2AX :
public Sigma0Process {
107 virtual double sigmaHat() {
return sigmaTotPtr->sigmaAX();}
110 virtual void setIdColAcol();
113 virtual string name()
const {
return "A B -> A X single diffractive";}
114 virtual int code()
const {
return 104;}
115 virtual bool isResolved()
const {
return false;}
116 virtual bool isDiffB()
const {
return true;};
126 class Sigma0AB2XX :
public Sigma0Process {
134 virtual double sigmaHat() {
return sigmaTotPtr->sigmaXX();}
137 virtual void setIdColAcol();
140 virtual string name()
const {
return "A B -> X X double diffractive";}
141 virtual int code()
const {
return 105;}
142 virtual bool isResolved()
const {
return false;}
143 virtual bool isDiffA()
const {
return true;};
144 virtual bool isDiffB()
const {
return true;};
154 class Sigma0AB2AXB :
public Sigma0Process {
162 virtual double sigmaHat() {
return sigmaTotPtr->sigmaAXB();}
165 virtual void setIdColAcol();
168 virtual string name()
const {
return "A B -> A X B central diffractive";}
169 virtual int code()
const {
return 106;}
170 virtual int nFinal()
const {
return 3;}
171 virtual bool isResolved()
const {
return false;}
172 virtual bool isDiffC()
const {
return true;};
182 class Sigma2gg2gg :
public Sigma2Process {
187 Sigma2gg2gg() : sigTS(), sigUS(), sigTU(), sigSum(), sigma() {}
190 virtual void sigmaKin();
193 virtual double sigmaHat() {
return sigma;}
196 virtual void setIdColAcol();
199 virtual string name()
const {
return "g g -> g g";}
200 virtual int code()
const {
return 111;}
201 virtual string inFlux()
const {
return "gg";}
206 double sigTS, sigUS, sigTU, sigSum, sigma;
214 class Sigma2gg2qqbar :
public Sigma2Process {
219 Sigma2gg2qqbar() : nQuarkNew(), idNew(), mNew(), m2New(), sigTS(), sigUS(),
223 virtual void initProc();
226 virtual void sigmaKin();
229 virtual double sigmaHat() {
return sigma;}
232 virtual void setIdColAcol();
235 virtual string name()
const {
return "g g -> q qbar (uds)";}
236 virtual int code()
const {
return 112;}
237 virtual string inFlux()
const {
return "gg";}
246 double mNew, m2New, sigTS, sigUS, sigSum, sigma;
255 class Sigma2qg2qg :
public Sigma2Process {
260 Sigma2qg2qg() : sigTS(), sigTU(), sigSum(), sigma() {}
263 virtual void sigmaKin();
266 virtual double sigmaHat() {
return sigma;}
269 virtual void setIdColAcol();
272 virtual string name()
const {
return "q g -> q g";}
273 virtual int code()
const {
return 113;}
274 virtual string inFlux()
const {
return "qg";}
279 double sigTS, sigTU, sigSum, sigma;
288 class Sigma2qq2qq :
public Sigma2Process {
293 Sigma2qq2qq() : sigT(), sigU(), sigTU(), sigST(), sigSum() {}
296 virtual void sigmaKin();
299 virtual double sigmaHat();
302 virtual void setIdColAcol();
305 virtual string name()
const {
return "q q(bar)' -> q q(bar)'";}
306 virtual int code()
const {
return 114;}
307 virtual string inFlux()
const {
return "qq";}
312 double sigT, sigU, sigTU, sigST, sigSum;
320 class Sigma2qqbar2gg :
public Sigma2Process {
325 Sigma2qqbar2gg() : sigTS(), sigUS(), sigSum(), sigma() {}
328 virtual void sigmaKin();
331 virtual double sigmaHat() {
return sigma;}
334 virtual void setIdColAcol();
337 virtual string name()
const {
return "q qbar -> g g";}
338 virtual int code()
const {
return 115;}
339 virtual string inFlux()
const {
return "qqbarSame";}
344 double sigTS, sigUS, sigSum, sigma;
352 class Sigma2qqbar2qqbarNew :
public Sigma2Process {
357 Sigma2qqbar2qqbarNew() : nQuarkNew(), idNew(), mNew(), m2New(), sigS(),
361 virtual void initProc();
364 virtual void sigmaKin();
367 virtual double sigmaHat() {
return sigma;}
370 virtual void setIdColAcol();
373 virtual string name()
const {
return "q qbar -> q' qbar' (uds)";}
374 virtual int code()
const {
return 116;}
375 virtual string inFlux()
const {
return "qqbarSame";}
384 double mNew, m2New, sigS, sigma;
392 class Sigma2gg2QQbar :
public Sigma2Process {
397 Sigma2gg2QQbar(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn),
398 sigTS(), sigUS(), sigSum(), sigma(), openFracPair() {}
401 virtual void initProc();
404 virtual void sigmaKin();
407 virtual double sigmaHat() {
return sigma;}
410 virtual void setIdColAcol();
413 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
416 virtual string name()
const {
return nameSave;}
417 virtual int code()
const {
return codeSave;}
418 virtual string inFlux()
const {
return "gg";}
419 virtual int id3Mass()
const {
return idNew;}
420 virtual int id4Mass()
const {
return idNew;}
427 double sigTS, sigUS, sigSum, sigma, openFracPair;
435 class Sigma2qqbar2QQbar :
public Sigma2Process {
440 Sigma2qqbar2QQbar(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn),
441 sigma(), openFracPair() {}
444 virtual void initProc();
447 virtual void sigmaKin();
450 virtual double sigmaHat() {
return sigma;}
453 virtual void setIdColAcol();
456 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
459 virtual string name()
const {
return nameSave;}
460 virtual int code()
const {
return codeSave;}
461 virtual string inFlux()
const {
return "qqbarSame";}
462 virtual int id3Mass()
const {
return idNew;}
463 virtual int id4Mass()
const {
return idNew;}
470 double sigma, openFracPair;
478 class Sigma3gg2ggg :
public Sigma3Process {
483 Sigma3gg2ggg() : sigma(), pp() {}
486 virtual void sigmaKin();
489 virtual double sigmaHat() {
return sigma;}
492 virtual void setIdColAcol();
495 virtual string name()
const {
return "g g -> g g g";}
496 virtual int code()
const {
return 131;}
497 virtual int nFinal()
const {
return 3;}
498 virtual string inFlux()
const {
return "gg";}
499 virtual bool isQCD3body()
const {
return true;}
508 double cycle(
int i1,
int i2,
int i3,
int i4,
int i5) {
return
509 pp[i1][i2] * pp[i2][i3] * pp[i3][i4] * pp[i4][i5] * pp[i5][i1];}
517 class Sigma3qqbar2ggg :
public Sigma3Process {
522 Sigma3qqbar2ggg() : config(), a(), b(), pp(), ab(), sigma() {}
525 virtual void sigmaKin();
528 virtual double sigmaHat() {
return sigma;}
531 virtual void setIdColAcol();
534 virtual string name()
const {
return "q qbar -> g g g";}
535 virtual int code()
const {
return 132;}
536 virtual int nFinal()
const {
return 3;}
537 virtual string inFlux()
const {
return "qqbarSame";}
538 virtual bool isQCD3body()
const {
return true;}
544 inline void pickFinal() { config = int( 6 * rndmPtr->flat() ); }
545 inline void mapFinal();
548 inline double m2Calc();
554 double a[3], b[3], pp[3][3], ab[3][3];
566 class Sigma3qg2qgg :
public Sigma3qqbar2ggg {
571 Sigma3qg2qgg() : sigma() {}
574 virtual void sigmaKin();
577 virtual double sigmaHat();
580 virtual void setIdColAcol();
583 virtual string name()
const {
return "q g -> q g g";}
584 virtual int code()
const {
return 133;}
585 virtual int nFinal()
const {
return 3;}
586 virtual string inFlux()
const {
return "qg";}
587 virtual bool isQCD3body()
const {
return true;}
601 class Sigma3gg2qqbarg :
public Sigma3qqbar2ggg {
606 Sigma3gg2qqbarg() : nQuarkNew() {}
609 virtual void initProc();
612 virtual void sigmaKin();
615 virtual void setIdColAcol();
618 virtual string name()
const {
return "g g -> q qbar g";}
619 virtual int code()
const {
return 138;}
620 virtual int nFinal()
const {
return 3;}
621 virtual string inFlux()
const {
return "gg";}
622 virtual bool isQCD3body()
const {
return true;}
635 class Sigma3qq2qqgDiff :
public Sigma3Process {
640 Sigma3qq2qqgDiff() : config(), s(), t(), u(), sp(), tp(), up(), sigma() {}
643 virtual void sigmaKin();
646 virtual double sigmaHat();
649 virtual void setIdColAcol();
652 virtual string name()
const
653 {
return "q(bar) q(bar)' -> q(bar) q(bar)' g";}
654 virtual int code()
const {
return 134;}
655 virtual int nFinal()
const {
return 3;}
656 virtual string inFlux()
const {
return "qq";}
657 virtual bool isQCD3body()
const {
return true;}
663 inline void pickFinal() { config = int( 6 * rndmPtr->flat() ); }
664 inline void mapFinal();
667 inline double m2Calc();
673 double s, t, u, sp, tp, up;
685 class Sigma3qqbar2qqbargDiff :
public Sigma3qq2qqgDiff {
690 Sigma3qqbar2qqbargDiff() : nQuarkNew() {}
693 virtual void initProc();
696 virtual void sigmaKin();
699 virtual double sigmaHat() {
return sigma;}
702 virtual void setIdColAcol();
705 virtual string name()
const {
return "q qbar -> q' qbar' g";}
706 virtual int code()
const {
return 136;}
707 virtual int nFinal()
const {
return 3;}
708 virtual string inFlux()
const {
return "qqbarSame";}
709 virtual bool isQCD3body()
const {
return true;}
723 class Sigma3qg2qqqbarDiff :
public Sigma3qq2qqgDiff {
728 Sigma3qg2qqqbarDiff() : nQuarkNew(), sigma() {}
731 virtual void initProc();
734 virtual void sigmaKin();
737 virtual double sigmaHat();
740 virtual void setIdColAcol();
743 virtual string name()
const {
return "q g -> q q' qbar'";}
744 virtual int code()
const {
return 139;}
745 virtual int nFinal()
const {
return 3;}
746 virtual string inFlux()
const {
return "qg";}
747 virtual bool isQCD3body()
const {
return true;}
763 class Sigma3qq2qqgSame :
public Sigma3Process {
768 Sigma3qq2qqgSame() : config(), s(), t(), u(), sp(), tp(), up(), ssp(),
769 ttp(), uup(), s_sp(), t_tp(), u_up(), sigma() {}
772 virtual void sigmaKin();
775 virtual double sigmaHat();
778 virtual void setIdColAcol();
781 virtual string name()
const
782 {
return "q(bar) q(bar) -> q(bar) q(bar) g";}
783 virtual int code()
const {
return 135;}
784 virtual int nFinal()
const {
return 3;}
785 virtual string inFlux()
const {
return "qq";}
786 virtual bool isQCD3body()
const {
return true;}
792 inline void pickFinal() { config = int( 6 * rndmPtr->flat() ); }
793 inline void mapFinal();
796 inline double m2Calc();
802 double s, t, u, sp, tp, up;
803 double ssp, ttp, uup, s_sp, t_tp, u_up;
815 class Sigma3qqbar2qqbargSame :
public Sigma3qq2qqgSame {
820 Sigma3qqbar2qqbargSame() {}
823 virtual void sigmaKin();
826 virtual double sigmaHat() {
return sigma;}
829 virtual void setIdColAcol();
832 virtual string name()
const {
return "q qbar -> q qbar g";}
833 virtual int code()
const {
return 137;}
834 virtual int nFinal()
const {
return 3;}
835 virtual string inFlux()
const {
return "qqbarSame";}
836 virtual bool isQCD3body()
const {
return true;}
847 class Sigma3qg2qqqbarSame :
public Sigma3qq2qqgSame {
852 Sigma3qg2qqqbarSame() : sigma() {}
855 virtual void sigmaKin();
858 virtual double sigmaHat();
861 virtual void setIdColAcol();
864 virtual string name()
const {
return "q g -> q q qbar";}
865 virtual int code()
const {
return 140;}
866 virtual int nFinal()
const {
return 3;}
867 virtual string inFlux()
const {
return "qg";}
868 virtual bool isQCD3body()
const {
return true;}
881 #endif // Pythia8_SigmaQCD_H