StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SusyResonanceWidths.h
1 // SusyResonanceWidths.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2012 Torbjorn Sjostrand
3 // Main author of this file: N. Desai
4 // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
5 // Please respect the MCnet Guidelines, see GUIDELINES for details.
6 
7 // Header file for resonance properties: dynamical widths etc.
8 // SusyResonanceWidths: base class for all SUSY resonances.
9 
10 #ifndef Pythia8_SusyResonanceWidths_H
11 #define Pythia8_SusyResonanceWidths_H
12 
13 #include "ResonanceWidths.h"
14 #include "SusyCouplings.h"
15 
16 namespace Pythia8 {
17 
18 class ParticleData;
19 
20 //==========================================================================
21 
23 
24 public:
25 
26  // Constructor and destructor.
27  WidthFunction() { };
28  virtual ~WidthFunction() { };
29 
30  void init( ParticleData* particleDataPtrIn, CoupSUSY* coupSUSYPtrIn);
31 
32  virtual void setInternal(int idResIn, int id1In, int id2In, int id3In,
33  int idIntIn, int) {setInternal2(idResIn, id1In, id2In, id3In, idIntIn);}
34 
35  virtual double function(double m12);
36  virtual double function(double m12, double m23);
37 
38 protected:
39 
40  void setInternal2(int idResIn, int id1In, int id2In, int id3In, int idIntIn);
41 
42  ParticleData* particleDataPtr;
43  CoupSUSY* coupSUSYPtr;
44  int id1,id2,id3;
45 
46  // Variables for 3-body decays
47  double mRes, mInt, gammaInt, m1,m2,m3;
48  int idRes, idInt,iSq,iQ,iX;
49  bool isSqDown;
50 
51 };
52 
53 //==========================================================================
54 
55 class Psi: public WidthFunction {
56 
57 public:
58 
59  // Destructor.
60  virtual ~Psi() { };
61 
62  virtual void setInternal(int idResIn, int id1In, int id2In, int id3In,
63  int idIntIn, int);
64  virtual double function(double m12);
65 
66 };
67 
68 //==========================================================================
69 
70 class Upsilon: public WidthFunction {
71 
72 public:
73 
74  // Destructor.
75  virtual ~Upsilon() { };
76 
77  virtual void setInternal(int idResIn, int id1In, int id2In, int id3In,
78  int idIntIn, int idInt2);
79  virtual double function(double m12);
80 
81 protected:
82 
83  int iSq2, idInt2;
84  double mInt2, gammaInt2;
85 
86 };
87 
88 //==========================================================================
89 
90 class Phi: public WidthFunction {
91 
92 public:
93 
94  // Destructor.
95  virtual ~Phi() { };
96 
97  virtual void setInternal(int idResIn, int id1In, int id2In, int id3In,
98  int idIntIn, int idInt2);
99  virtual double function(double m12sqIn);
100 
101 protected:
102 
103  int iSq2, idInt2;
104  double mInt2, gammaInt2, m12sq;
105 
106 private:
107 
108  double function2(double m23sq);
109  double integrateGauss(double m23min, double m23max, double tol);
110 
111 };
112 
113 //==========================================================================
114 
116 
117 public:
118 
120 
121  // Return particle type
122  int typeNeut(int idPDG);
123  int typeChar(int idPDG);
124 
125 protected:
126 
127  virtual bool init(Info* infoPtrIn, Settings* settingsPtrIn,
128  ParticleData* particleDataPtrIn, Couplings* couplingsPtrIn);
129 
130  // Gaussian integrator
131  double integrateGauss( WidthFunction* widthFn, double, double, double);
132 
133  // SUSY couplings
134  CoupSUSY* coupSUSYPtr;
135 
136  static const bool DEBUG;
137 
138 };
139 
140 //==========================================================================
141 
142 // The ResonanceSquark class handles the Squark resonances.
143 
145 
146 public:
147 
148  // Constructor.
149  ResonanceSquark(int idResIn) {initBasic(idResIn);}
150 
151 private:
152 
153  // Locally stored properties and couplings.
154 
155  // Initialize constants.
156  virtual void initConstants();
157 
158  // Calculate various common prefactors for the current mass.
159  virtual void calcPreFac(bool = false);
160 
161  // Caclulate width for currently considered channel.
162  virtual void calcWidth(bool calledFromInit = false);
163 
164  double s2W;
165 
166 };
167 
168 //==========================================================================
169 
170 // The ResonanceGluino class handles the Gluino resonances.
171 
173 
174 public:
175 
176  // Constructor.
177  ResonanceGluino(int idResIn) {initBasic(idResIn);}
178 
179 private:
180 
181  // Locally stored properties and couplings.
182 
183  // Initialize constants.
184  virtual void initConstants();
185 
186  // Calculate various common prefactors for the current mass.
187  virtual void calcPreFac(bool = false);
188 
189  // Caclulate width for currently considered channel.
190  virtual void calcWidth(bool calledFromInit = false);
191 
192 };
193 
194 //==========================================================================
195 
196 // The ResonanceNeut class handles the Neutralino resonances.
197 
199 
200 public:
201 
202  // Constructor.
203  ResonanceNeut(int idResIn) {initBasic(idResIn);}
204 
205 private:
206 
207  // Locally stored properties and couplings.
208  double kinFac2;
209 
210  // Initialize constants.
211  virtual void initConstants();
212 
213  // Calculate various common prefactors for the current mass.
214  virtual void calcPreFac(bool = false);
215 
216  // Caclulate width for currently considered channel.
217  virtual void calcWidth(bool calledFromInit = false);
218 
219  double s2W;
220 
221  // Functions for 3-body decays
222  Psi psi;
223  Phi phi;
224  Upsilon upsil;
225 
226 };
227 
228 //==========================================================================
229 
230 // The ResonanceChar class handles the Chargino resonances.
231 
233 
234 public:
235 
236  // Constructor.
237  ResonanceChar(int idResIn) {initBasic(idResIn);}
238 
239 private:
240 
241  // Locally stored properties and couplings.
242  double kinFac2;
243 
244  // Initialize constants.
245  virtual void initConstants();
246 
247  // Calculate various common prefactors for the current mass.
248  virtual void calcPreFac(bool = false);
249 
250  // Caclulate width for currently considered channel.
251  virtual void calcWidth(bool calledFromInit = false);
252 
253  double s2W;
254 
255  //Functions for 3-body decays
256  Psi psi;
257  Phi phi;
258  Upsilon upsil;
259 
260 };
261 
262 //==========================================================================
263 
264 // The ResonanceSlepton class handles the Slepton/Sneutrino resonances.
265 
267 
268 public:
269 
270  // Constructor.
271  ResonanceSlepton(int idResIn) {initBasic(idResIn);}
272 
273 private:
274 
275  // Locally stored properties and couplings.
276 
277  // Initialize constants.
278  virtual void initConstants();
279 
280  // Calculate various common prefactors for the current mass.
281  virtual void calcPreFac(bool = false);
282 
283  // Calculate width for currently considered channel.
284  virtual void calcWidth(bool calledFromInit = false);
285 
286  double s2W;
287 
288 };
289 
290 //==========================================================================
291 
292 } // end namespace Pythia8
293 
294 #endif // end Pythia8_SusyResonanceWidths_H