Line data Source code
1 : // SigmaGeneric.h is a part of the PYTHIA event generator.
2 : // Copyright (C) 2015 Johan Bijnens,Torbjorn Sjostrand.
3 : // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4 : // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 :
6 : // Header file for various generic production processes, to be used as
7 : // building blocks for some BSM processes.
8 : // Currently represented by QCD pair production of colour triplet objects,
9 : // with spin either 0, 1/2 or 1.
10 :
11 : #ifndef Pythia8_SigmaGeneric_H
12 : #define Pythia8_SigmaGeneric_H
13 :
14 : #include "Pythia8/SigmaProcess.h"
15 :
16 : namespace Pythia8 {
17 :
18 : //==========================================================================
19 :
20 : // A derived class for g g -> qG qGbar (generic quark of spin 0, 1/2 or 1).
21 :
22 0 : class Sigma2gg2qGqGbar : public Sigma2Process {
23 :
24 : public:
25 :
26 : // Constructor.
27 0 : Sigma2gg2qGqGbar(int idIn, int codeIn, int spinIn,
28 0 : string nameIn = "g g -> qG qGbar") : idNew(idIn), codeSave(codeIn),
29 0 : spinSave(spinIn), nameSave(nameIn) {}
30 :
31 : // Initialize process.
32 : virtual void initProc();
33 :
34 : // Calculate flavour-independent parts of cross section.
35 : virtual void sigmaKin();
36 :
37 : // Evaluate sigmaHat(sHat).
38 0 : virtual double sigmaHat() {return sigma;}
39 :
40 : // Select flavour, colour and anticolour.
41 : virtual void setIdColAcol();
42 :
43 : // Info on the subprocess.
44 0 : virtual string name() const {return nameSave;}
45 0 : virtual int code() const {return codeSave;}
46 0 : virtual string inFlux() const {return "gg";}
47 0 : virtual int id3Mass() const {return idNew;}
48 0 : virtual int id4Mass() const {return idNew;}
49 :
50 : private:
51 :
52 : // Values stored for process type and colour flow selection.
53 : int idNew, codeSave, spinSave, nCHV;
54 : string nameSave;
55 : bool hasKappa;
56 : double openFracPair, sigma, sigTS, sigUS, sigSum, kappam1;
57 :
58 : };
59 :
60 : //==========================================================================
61 :
62 : // A derived class for q qbar -> qG qGbar (generic quark of spin 0, 1/2 or 1).
63 :
64 0 : class Sigma2qqbar2qGqGbar : public Sigma2Process {
65 :
66 : public:
67 :
68 : // Constructor.
69 0 : Sigma2qqbar2qGqGbar(int idIn, int codeIn, int spinIn,
70 0 : string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
71 0 : spinSave(spinIn), nameSave(nameIn) {}
72 :
73 : // Initialize process.
74 : virtual void initProc();
75 :
76 : // Calculate flavour-independent parts of cross section.
77 : virtual void sigmaKin();
78 :
79 : // Evaluate sigmaHat(sHat).
80 0 : virtual double sigmaHat() {return sigma;}
81 :
82 : // Select flavour, colour and anticolour.
83 : virtual void setIdColAcol();
84 :
85 : // Info on the subprocess.
86 0 : virtual string name() const {return nameSave;}
87 0 : virtual int code() const {return codeSave;}
88 0 : virtual string inFlux() const {return "qqbarSame";}
89 0 : virtual int id3Mass() const {return idNew;}
90 0 : virtual int id4Mass() const {return idNew;}
91 :
92 : private:
93 :
94 : // Values stored for process type and colour flow selection.
95 : int idNew, codeSave, spinSave, nCHV;
96 : string nameSave;
97 : double openFracPair, sigma, sigSum, kappa;
98 :
99 : };
100 :
101 : //==========================================================================
102 :
103 : // A derived class for f fbar -> fG fGbar (generic spin 0, 1/2 or 1 particle)
104 : // via gamma^*/Z^* s-channel exchange. Still under development!! ??
105 :
106 0 : class Sigma2ffbar2fGfGbar : public Sigma2Process {
107 :
108 : public:
109 :
110 : // Constructor.
111 0 : Sigma2ffbar2fGfGbar(int idIn, int codeIn, int spinIn,
112 0 : string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
113 0 : spinSave(spinIn), nameSave(nameIn) {}
114 :
115 : // Initialize process.
116 : virtual void initProc();
117 :
118 : // Calculate flavour-independent parts of cross section.
119 : virtual void sigmaKin();
120 :
121 : // Evaluate sigmaHat(sHat).
122 : virtual double sigmaHat();
123 :
124 : // Select flavour, colour and anticolour.
125 : virtual void setIdColAcol();
126 :
127 : // Info on the subprocess.
128 0 : virtual string name() const {return nameSave;}
129 0 : virtual int code() const {return codeSave;}
130 0 : virtual string inFlux() const {return "ffbarSame";}
131 0 : virtual int id3Mass() const {return idNew;}
132 0 : virtual int id4Mass() const {return idNew;}
133 :
134 : private:
135 :
136 : // Values stored for process type and colour flow selection.
137 : int idNew, codeSave, spinSave, nCHV;
138 : string nameSave;
139 : bool hasColour;
140 : double eQHV2, openFracPair, sigma0, sigSum, kappa, colFac;
141 :
142 : };
143 :
144 : //==========================================================================
145 :
146 : // A derived class for f fbar -> Zv, where Zv couples both to the SM and
147 : // to a hidden sector. Primitive coupling structure.
148 :
149 0 : class Sigma1ffbar2Zv : public Sigma1Process {
150 :
151 : public:
152 :
153 : // Constructor.
154 0 : Sigma1ffbar2Zv() {}
155 :
156 : // Initialize process.
157 : virtual void initProc();
158 :
159 : // Calculate flavour-independent parts of cross section.
160 : virtual void sigmaKin();
161 :
162 : // Evaluate sigmaHat(sHat) for given inflavours.
163 : virtual double sigmaHat();
164 :
165 : // Select flavour, colour and anticolour.
166 : virtual void setIdColAcol();
167 :
168 : // Evaluate weight for decay angles.
169 : virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
170 :
171 : // Info on the subprocess.
172 0 : virtual string name() const {return "f fbar -> Zv";}
173 0 : virtual int code() const {return 4941;}
174 0 : virtual string inFlux() const {return "ffbarSame";}
175 0 : virtual int resonanceA() const {return 4900023;}
176 :
177 : private:
178 :
179 : // Store flavour-specific process information and standard prefactor.
180 : int idZv;
181 : double mRes, GammaRes, m2Res, GamMRat, sigOut;
182 :
183 : // Pointer to properties of Zv, to access decay width.
184 : ParticleDataEntry* particlePtr;
185 :
186 : };
187 :
188 : //==========================================================================
189 :
190 : } // end namespace Pythia8
191 :
192 : #endif // Pythia8_SigmaGeneric_H
|