StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaDM.h
1 // SigmaDM.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2020 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 
6 // Header file for Dark Matter process differential cross sections.
7 // Contains classes derived from SigmaProcess.
8 
9 #ifndef Pythia8_SigmaDM_H
10 #define Pythia8_SigmaDM_H
11 
12 #include "Pythia8/PythiaComplex.h"
13 #include "Pythia8/SigmaProcess.h"
14 #include "Pythia8/StandardModel.h"
15 
16 namespace Pythia8 {
17 
18 //==========================================================================
19 
20 // A derived class for f fbar' -> Zprime -> X X. (Zprime a.k.a. DMmed(s=1).)
21 
22 class Sigma1ffbar2Zp2XX : public Sigma1Process {
23 
24 public:
25 
26  // Constructor.
27  Sigma1ffbar2Zp2XX() : kinMix(), mRes(), GammaRes(), m2Res(), sigma0(),
28  preFac(), gZp(), eps(), particlePtr() {}
29 
30  // Initialize process.
31  virtual void initProc();
32 
33  // Calculate flavour-independent parts of cross section.
34  virtual void sigmaKin();
35 
36  // Evaluate sigmaHat(sHat).
37  virtual double sigmaHat();
38 
39  // Select flavour, colour and anticolour.
40  virtual void setIdColAcol();
41 
42  // Info on the subprocess.
43  virtual string name() const {return "f fbar -> Zp -> XX";}
44  virtual int code() const {return 6001;}
45  virtual string inFlux() const {return "qqbar";}
46  virtual int resonanceA() const {return 55;} // Zprime
47  virtual bool isSChannel() const {return true;}
48  virtual int gmZmode() const {return 3;}
49 
50 private:
51 
52  // Parameters set at initialization.
53  bool kinMix;
54  double mRes, GammaRes, m2Res, sigma0, preFac, gZp, eps;
55 
56  // Pointer to properties of the particle species, to access decay channels.
57  ParticleDataEntry* particlePtr;
58 
59 };
60 
61 //==========================================================================
62 
63 class Sigma2qqbar2Zpg2XXj : public Sigma2Process {
64 
65 public:
66 
67  // Constructor.
68  Sigma2qqbar2Zpg2XXj() : kinMix(), mRes(), GammaRes(), m2Res(), preFac(),
69  sigma0(), gZp(), eps(), particlePtr() {}
70 
71  // Initialize process.
72  virtual void initProc();
73 
74  // Calculate flavour-independent parts of cross section.
75  virtual void sigmaKin();
76 
77  // Evaluate sigmaHat(sHat).
78  virtual double sigmaHat();
79 
80  // Select flavour, colour and anticolour.
81  virtual void setIdColAcol();
82 
83  // Info on the subprocess.
84  virtual string name() const {return "q qbar -> Zp g -> XX + jet";}
85  virtual int code() const {return 6002;}
86  virtual string inFlux() const {return "qqbar";}
87  virtual int resonanceA() const {return 55;} // Zprime
88  virtual int id3Mass() const {return 55;}
89  virtual int id4Mass() const {return 21;}
90  virtual bool isSChannel() const {return true;}
91  virtual int gmZmode() const {return 3;}
92 
93 protected:
94 
95  // Parameters set at initialization.
96  bool kinMix;
97  double mRes, GammaRes, m2Res, preFac, sigma0, gZp, eps;
98 
99  // Pointer to properties of the particle species, to access decay channels.
100  ParticleDataEntry* particlePtr;
101 
102 };
103 
104 //==========================================================================
105 
106 class Sigma2qg2Zpq2XXj : public Sigma2qqbar2Zpg2XXj {
107 
108  // Constructor.
109  Sigma2qg2Zpq2XXj() {}
110 
111  // Info on the subprocess.
112  virtual string name() const {return "q g -> Zp q -> XX + jet";}
113  virtual int code() const {return 6003;}
114  virtual string inFlux() const {return "qg";}
115  virtual int resonanceA() const {return 55;} // Zprime
116  virtual bool isSChannel() const {return true;}
117  virtual int gmZmode() const {return 3;}
118 
119 };
120 
121 //==========================================================================
122 
123 // A derived class for f fbar' -> Zprime H, Zprime -> X X.
124 
125 class Sigma2ffbar2ZpH : public Sigma2Process {
126 
127 public:
128 
129  // Constructor.
130  Sigma2ffbar2ZpH() : kinMix(), mRes(), GammaRes(), m2Res(), sigma0(), gZp(),
131  eps(), coupZpH(), openFrac(), particlePtr() {}
132 
133  // Initialize process.
134  virtual void initProc();
135 
136  // Calculate flavour-independent parts of cross section.
137  virtual void sigmaKin();
138 
139  // Evaluate sigmaHat(sHat).
140  virtual double sigmaHat();
141 
142  // Select flavour, colour and anticolour.
143  virtual void setIdColAcol();
144 
145  // Info on the subprocess.
146  virtual string name() const {return "f fbar -> Zprime H";}
147  virtual int code() const {return 6004;}
148  virtual string inFlux() const {return "ffbarSame";}
149  virtual bool isSChannel() const {return true;}
150  virtual int id3Mass() const {return 55;}
151  virtual int id4Mass() const {return 25;}
152  virtual int resonanceA() const {return 55;} // Zprime
153  virtual int gmZmode() const {return 3;}
154 
155 private:
156 
157  // Parameters set at initialization.
158  bool kinMix;
159  double mRes, GammaRes, m2Res, sigma0, gZp, eps, coupZpH, openFrac;
160 
161  // Pointer to properties of the particle species, to access decay channels.
162  ParticleDataEntry* particlePtr;
163 
164 };
165 
166 //==========================================================================
167 
168 class Sigma1gg2S2XX : public Sigma1Process {
169 
170 public:
171 
172  // Constructor.
173  Sigma1gg2S2XX() : mRes(), GammaRes(), m2Res(), sigma0(), particlePtr() {}
174 
175  // Initialize process.
176  virtual void initProc();
177 
178  // Calculate flavour-independent parts of cross section.
179  virtual void sigmaKin();
180 
181  // Evaluate sigmaHat(sHat).
182  virtual double sigmaHat();
183 
184  // Select flavour, colour and anticolour.
185  virtual void setIdColAcol();
186 
187  // Info on the subprocess.
188  virtual string name() const {return "g g -> S -> XX";}
189  virtual int code() const {return 6011;}
190  virtual string inFlux() const {return "gg";}
191  virtual int resonanceA() const {return 54;} // scalar mediator
192  virtual bool isSChannel() const {return true;}
193 
194 private:
195 
196  // Parameters set at initialization.
197  double mRes, GammaRes, m2Res, sigma0;
198 
199  // Pointer to properties of the particle species, to access decay channels.
200  ParticleDataEntry* particlePtr;
201 
202 };
203 
204 //==========================================================================
205 
206 class Sigma2gg2Sg2XXj : public Sigma2Process {
207 
208 public:
209 
210  // Constructor.
211  Sigma2gg2Sg2XXj() : mRes(), GammaRes(), m2Res(), propS(), sigma0(),
212  particlePtr() {}
213 
214  // Initialize process.
215  virtual void initProc();
216 
217  // Calculate flavour-independent parts of cross section.
218  virtual void sigmaKin();
219 
220  // Evaluate sigmaHat(sHat).
221  virtual double sigmaHat();
222 
223  // Select flavour, colour and anticolour.
224  virtual void setIdColAcol();
225 
226  // Info on the subprocess.
227  virtual string name() const {return "g g -> S g -> XX + jet";}
228  virtual int code() const {return 6012;}
229  virtual string inFlux() const {return "gg";}
230  virtual int resonanceA() const {return 54;} // scalar mediator
231  virtual bool isSChannel() const {return true;}
232  virtual int id3Mass() const {return 54;}
233  virtual int id4Mass() const {return 21;}
234 
235 protected:
236 
237  // Parameters set at initialization.
238  double mRes, GammaRes, m2Res, propS, sigma0;
239 
240  // Pointer to properties of the particle species, to access decay channels.
241  ParticleDataEntry* particlePtr;
242 
243 };
244 
245 //==========================================================================
246 
247 class Sigma2qg2Sq2XXj : public Sigma2gg2Sg2XXj {
248 
249 public:
250 
251  // Constructor.
252  Sigma2qg2Sq2XXj() {}
253 
254  // Info on the subprocess.
255  virtual string name() const {return "q g -> S q -> XX + jet";}
256  virtual int code() const {return 6013;}
257  virtual string inFlux() const {return "qg";}
258  virtual bool isSChannel() const {return true;}
259 
260 };
261 
262 //==========================================================================
263 
265 
266 public:
267 
268  // Constructor,
269  Sigma2qqbar2DY() : sigma0(), openFracPair(), propRes(), nameSave(), mRes(),
270  GammaRes(), m2Res(), M1(), M2(), Lambda(), mixN1(), mixN2(), xW(),
271  coupW11(), coupW12(), coupW2(), yuk(), type(), nplet(), isUD(),
272  particlePtr() {}
273 
274  // Initialize process.
275  virtual void initProc();
276 
277  // Calculate flavour-independent parts of cross section.
278  virtual void sigmaKin();
279 
280  // Evaluate sigmaHat(sHat).
281  virtual double sigmaHat();
282 
283  // Select flavour, colour and anticolour.
284  virtual void setIdColAcol();
285 
286  // Info on the subprocess.
287  virtual string name() const {return nameSave;}
288  virtual int code() const {return 6020;}
289  virtual string inFlux() const {return "qqbar";}
290  virtual int resonanceA() const {return 23;}
291  virtual bool isSChannel() const {return true;}
292  virtual int id3Mass() const {return abs(id3);}
293  virtual int id4Mass() const {return abs(id4);}
294 
295 protected:
296 
297  // Parameters set at initialization.
298  double sigma0, openFracPair;
299  complex propRes;
300  string nameSave;
301  double mRes, GammaRes, m2Res;
302 
303  // Couplings for 5-plet.
304  double M1, M2, Lambda, mixN1, mixN2, xW, coupW11, coupW12, coupW2;
305 
306  // Variables for sleptons.
307  double yuk[4];
308 
309  // Type of model and N-plet. Flag for HNL production.
310  int type, nplet;
311  bool isUD;
312 
313  // Pointer to properties of the particle species, to access decay channels.
314  ParticleDataEntry* particlePtr;
315 
316  };
317 
318 //==========================================================================
319 
320 } // end namespace Pythia8
321 
322 #endif // Pythia_SigmaDM_H