9 #ifndef Pythia8_SigmaQCD_H
10 #define Pythia8_SigmaQCD_H
12 #include "Pythia8/SigmaProcess.h"
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;}
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;};
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;};
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 {
222 virtual void initProc();
225 virtual void sigmaKin();
228 virtual double sigmaHat() {
return sigma;}
231 virtual void setIdColAcol();
234 virtual string name()
const {
return "g g -> q qbar (uds)";}
235 virtual int code()
const {
return 112;}
236 virtual string inFlux()
const {
return "gg";}
245 double mNew, m2New, sigTS, sigUS, sigSum, sigma;
254 class Sigma2qg2qg :
public Sigma2Process {
262 virtual void sigmaKin();
265 virtual double sigmaHat() {
return sigma;}
268 virtual void setIdColAcol();
271 virtual string name()
const {
return "q g -> q g";}
272 virtual int code()
const {
return 113;}
273 virtual string inFlux()
const {
return "qg";}
278 double sigTS, sigTU, sigSum, sigma;
287 class Sigma2qq2qq :
public Sigma2Process {
295 virtual void sigmaKin();
298 virtual double sigmaHat();
301 virtual void setIdColAcol();
304 virtual string name()
const {
return "q q(bar)' -> q q(bar)'";}
305 virtual int code()
const {
return 114;}
306 virtual string inFlux()
const {
return "qq";}
311 double sigT, sigU, sigTU, sigST, sigSum;
319 class Sigma2qqbar2gg :
public Sigma2Process {
327 virtual void sigmaKin();
330 virtual double sigmaHat() {
return sigma;}
333 virtual void setIdColAcol();
336 virtual string name()
const {
return "q qbar -> g g";}
337 virtual int code()
const {
return 115;}
338 virtual string inFlux()
const {
return "qqbarSame";}
343 double sigTS, sigUS, sigSum, sigma;
351 class Sigma2qqbar2qqbarNew :
public Sigma2Process {
356 Sigma2qqbar2qqbarNew() {}
359 virtual void initProc();
362 virtual void sigmaKin();
365 virtual double sigmaHat() {
return sigma;}
368 virtual void setIdColAcol();
371 virtual string name()
const {
return "q qbar -> q' qbar' (uds)";}
372 virtual int code()
const {
return 116;}
373 virtual string inFlux()
const {
return "qqbarSame";}
382 double mNew, m2New, sigS, sigma;
390 class Sigma2gg2QQbar :
public Sigma2Process {
395 Sigma2gg2QQbar(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn) {}
398 virtual void initProc();
401 virtual void sigmaKin();
404 virtual double sigmaHat() {
return sigma;}
407 virtual void setIdColAcol();
410 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
413 virtual string name()
const {
return nameSave;}
414 virtual int code()
const {
return codeSave;}
415 virtual string inFlux()
const {
return "gg";}
416 virtual int id3Mass()
const {
return idNew;}
417 virtual int id4Mass()
const {
return idNew;}
424 double sigTS, sigUS, sigSum, sigma, openFracPair;
432 class Sigma2qqbar2QQbar :
public Sigma2Process {
437 Sigma2qqbar2QQbar(
int idIn,
int codeIn) : idNew(idIn), codeSave(codeIn) {}
440 virtual void initProc();
443 virtual void sigmaKin();
446 virtual double sigmaHat() {
return sigma;}
449 virtual void setIdColAcol();
452 virtual double weightDecay(
Event& process,
int iResBeg,
int iResEnd);
455 virtual string name()
const {
return nameSave;}
456 virtual int code()
const {
return codeSave;}
457 virtual string inFlux()
const {
return "qqbarSame";}
458 virtual int id3Mass()
const {
return idNew;}
459 virtual int id4Mass()
const {
return idNew;}
466 double sigma, openFracPair;
474 class Sigma3gg2ggg :
public Sigma3Process {
482 virtual void sigmaKin();
485 virtual double sigmaHat() {
return sigma;}
488 virtual void setIdColAcol();
491 virtual string name()
const {
return "g g -> g g g";}
492 virtual int code()
const {
return 131;}
493 virtual int nFinal()
const {
return 3;}
494 virtual string inFlux()
const {
return "gg";}
495 virtual bool isQCD3body()
const {
return true;}
504 double cycle(
int i1,
int i2,
int i3,
int i4,
int i5) {
return
505 pp[i1][i2] * pp[i2][i3] * pp[i3][i4] * pp[i4][i5] * pp[i5][i1];}
513 class Sigma3qqbar2ggg :
public Sigma3Process {
521 virtual void sigmaKin();
524 virtual double sigmaHat() {
return sigma;}
527 virtual void setIdColAcol();
530 virtual string name()
const {
return "q qbar -> g g g";}
531 virtual int code()
const {
return 132;}
532 virtual int nFinal()
const {
return 3;}
533 virtual string inFlux()
const {
return "qqbarSame";}
534 virtual bool isQCD3body()
const {
return true;}
540 inline void pickFinal() { config = int( 6 * rndmPtr->flat() ); }
541 inline void mapFinal();
544 inline double m2Calc();
550 double a[3], b[3], pp[3][3], ab[3][3];
562 class Sigma3qg2qgg :
public Sigma3qqbar2ggg {
570 virtual void sigmaKin();
573 virtual double sigmaHat();
576 virtual void setIdColAcol();
579 virtual string name()
const {
return "q g -> q g g";}
580 virtual int code()
const {
return 133;}
581 virtual int nFinal()
const {
return 3;}
582 virtual string inFlux()
const {
return "qg";}
583 virtual bool isQCD3body()
const {
return true;}
597 class Sigma3gg2qqbarg :
public Sigma3qqbar2ggg {
605 virtual void initProc();
608 virtual void sigmaKin();
611 virtual void setIdColAcol();
614 virtual string name()
const {
return "g g -> q qbar g";}
615 virtual int code()
const {
return 138;}
616 virtual int nFinal()
const {
return 3;}
617 virtual string inFlux()
const {
return "gg";}
618 virtual bool isQCD3body()
const {
return true;}
631 class Sigma3qq2qqgDiff :
public Sigma3Process {
636 Sigma3qq2qqgDiff() {}
639 virtual void sigmaKin();
642 virtual double sigmaHat();
645 virtual void setIdColAcol();
648 virtual string name()
const
649 {
return "q(bar) q(bar)' -> q(bar) q(bar)' g";}
650 virtual int code()
const {
return 134;}
651 virtual int nFinal()
const {
return 3;}
652 virtual string inFlux()
const {
return "qq";}
653 virtual bool isQCD3body()
const {
return true;}
659 inline void pickFinal() { config = int( 6 * rndmPtr->flat() ); }
660 inline void mapFinal();
663 inline double m2Calc();
669 double s, t, u, sp, tp, up;
681 class Sigma3qqbar2qqbargDiff :
public Sigma3qq2qqgDiff {
686 Sigma3qqbar2qqbargDiff() {}
689 virtual void initProc();
692 virtual void sigmaKin();
695 virtual double sigmaHat() {
return sigma;}
698 virtual void setIdColAcol();
701 virtual string name()
const {
return "q qbar -> q' qbar' g";}
702 virtual int code()
const {
return 136;}
703 virtual int nFinal()
const {
return 3;}
704 virtual string inFlux()
const {
return "qqbarSame";}
705 virtual bool isQCD3body()
const {
return true;}
719 class Sigma3qg2qqqbarDiff :
public Sigma3qq2qqgDiff {
724 Sigma3qg2qqqbarDiff() {}
727 virtual void initProc();
730 virtual void sigmaKin();
733 virtual double sigmaHat();
736 virtual void setIdColAcol();
739 virtual string name()
const {
return "q g -> q q' qbar'";}
740 virtual int code()
const {
return 139;}
741 virtual int nFinal()
const {
return 3;}
742 virtual string inFlux()
const {
return "qg";}
743 virtual bool isQCD3body()
const {
return true;}
759 class Sigma3qq2qqgSame :
public Sigma3Process {
764 Sigma3qq2qqgSame() {}
767 virtual void sigmaKin();
770 virtual double sigmaHat();
773 virtual void setIdColAcol();
776 virtual string name()
const
777 {
return "q(bar) q(bar) -> q(bar) q(bar) g";}
778 virtual int code()
const {
return 135;}
779 virtual int nFinal()
const {
return 3;}
780 virtual string inFlux()
const {
return "qq";}
781 virtual bool isQCD3body()
const {
return true;}
787 inline void pickFinal() { config = int( 6 * rndmPtr->flat() ); }
788 inline void mapFinal();
791 inline double m2Calc();
797 double s, t, u, sp, tp, up;
798 double ssp, ttp, uup, s_sp, t_tp, u_up;
810 class Sigma3qqbar2qqbargSame :
public Sigma3qq2qqgSame {
815 Sigma3qqbar2qqbargSame() {}
818 virtual void sigmaKin();
821 virtual double sigmaHat() {
return sigma;}
824 virtual void setIdColAcol();
827 virtual string name()
const {
return "q qbar -> q qbar g";}
828 virtual int code()
const {
return 137;}
829 virtual int nFinal()
const {
return 3;}
830 virtual string inFlux()
const {
return "qqbarSame";}
831 virtual bool isQCD3body()
const {
return true;}
842 class Sigma3qg2qqqbarSame :
public Sigma3qq2qqgSame {
847 Sigma3qg2qqqbarSame() {}
850 virtual void sigmaKin();
853 virtual double sigmaHat();
856 virtual void setIdColAcol();
859 virtual string name()
const {
return "q g -> q q qbar";}
860 virtual int code()
const {
return 140;}
861 virtual int nFinal()
const {
return 3;}
862 virtual string inFlux()
const {
return "qg";}
863 virtual bool isQCD3body()
const {
return true;}
876 #endif // Pythia8_SigmaQCD_H