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) 2014 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 "Pythia8/ResonanceWidths.h"
14 #include "Pythia8/SusyCouplings.h"
15 
16 namespace Pythia8 {
17 
18 class ParticleData;
19 
20 //==========================================================================
21 
22 class WidthFunction {
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 
115 class SUSYResonanceWidths : public ResonanceWidths{
116 
117 public:
118 
119  SUSYResonanceWidths() {}
120 
121  // Return particle type
122  int typeNeut(int idPDG);
123  int typeChar(int idPDG);
124 
125 protected:
126 
127  // Virtual methods to handle model-specific (non-SM) part of initialization
128  virtual bool initBSM();
129  virtual bool allowCalc();
130 
131  // Gaussian integrator
132  double integrateGauss( WidthFunction* widthFn, double, double, double);
133 
134  // SUSY couplings
135  CoupSUSY* coupSUSYPtr;
136 
137  static const bool DBSUSY;
138 
139 };
140 
141 //==========================================================================
142 
143 // The ResonanceSquark class handles the Squark resonances.
144 
145 class ResonanceSquark : public SUSYResonanceWidths {
146 
147 public:
148 
149  // Constructor.
150  ResonanceSquark(int idResIn) {initBasic(idResIn);}
151 
152 private:
153 
154  // Locally stored properties and couplings.
155 
156  // Initialize constants.
157  virtual void initConstants();
158 
159  // Calculate various common prefactors for the current mass.
160  virtual void calcPreFac(bool = false);
161 
162  // Caclulate width for currently considered channel.
163  virtual void calcWidth(bool calledFromInit = false);
164 
165  double s2W;
166 
167 };
168 
169 //==========================================================================
170 
171 // The ResonanceGluino class handles the Gluino resonances.
172 
173 class ResonanceGluino : public SUSYResonanceWidths {
174 
175 public:
176 
177  // Constructor.
178  ResonanceGluino(int idResIn) {initBasic(idResIn);}
179 
180 private:
181 
182  // Locally stored properties and couplings.
183 
184  // Initialize constants.
185  virtual void initConstants();
186 
187  // Calculate various common prefactors for the current mass.
188  virtual void calcPreFac(bool = false);
189 
190  // Caclulate width for currently considered channel.
191  virtual void calcWidth(bool calledFromInit = false);
192 
193 };
194 
195 //==========================================================================
196 
197 // The ResonanceNeut class handles the Neutralino resonances.
198 
199 class ResonanceNeut : public SUSYResonanceWidths {
200 
201 public:
202 
203  // Constructor.
204  ResonanceNeut(int idResIn) {initBasic(idResIn);}
205 
206 private:
207 
208  // Locally stored properties and couplings.
209  double kinFac2;
210 
211  // Initialize constants.
212  virtual void initConstants();
213 
214  // Calculate various common prefactors for the current mass.
215  virtual void calcPreFac(bool = false);
216 
217  // Caclulate width for currently considered channel.
218  virtual void calcWidth(bool calledFromInit = false);
219 
220  double s2W;
221 
222  // Functions for 3-body decays
223  Psi psi;
224  Phi phi;
225  Upsilon upsil;
226 
227 };
228 
229 //==========================================================================
230 
231 // The ResonanceChar class handles the Chargino resonances.
232 
233 class ResonanceChar : public SUSYResonanceWidths {
234 
235 public:
236 
237  // Constructor.
238  ResonanceChar(int idResIn) {initBasic(idResIn);}
239 
240 private:
241 
242  // Locally stored properties and couplings.
243  double kinFac2;
244 
245  // Initialize constants.
246  virtual void initConstants();
247 
248  // Calculate various common prefactors for the current mass.
249  virtual void calcPreFac(bool = false);
250 
251  // Caclulate width for currently considered channel.
252  virtual void calcWidth(bool calledFromInit = false);
253 
254  double s2W;
255 
256  //Functions for 3-body decays
257  Psi psi;
258  Phi phi;
259  Upsilon upsil;
260 
261 };
262 
263 //==========================================================================
264 
265 // The ResonanceSlepton class handles the Slepton/Sneutrino resonances.
266 
267 class ResonanceSlepton : public SUSYResonanceWidths {
268 
269 public:
270 
271  // Constructor.
272  ResonanceSlepton(int idResIn) {initBasic(idResIn);}
273 
274 private:
275 
276  // Locally stored properties and couplings.
277 
278  // Initialize constants.
279  virtual void initConstants();
280 
281  // Calculate various common prefactors for the current mass.
282  virtual void calcPreFac(bool = false);
283 
284  // Calculate width for currently considered channel.
285  virtual void calcWidth(bool calledFromInit = false);
286 
287  double s2W;
288 
289 };
290 
291 //==========================================================================
292 
293 } // end namespace Pythia8
294 
295 #endif // end Pythia8_SusyResonanceWidths_H