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) 2018 Torbjorn Sjostrand
3 // Main author of this file: N. Desai
4 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
5 // Please respect the MCnet Guidelines, see GUIDELINES for details.
6 
7 // Header file for SUSY 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/ParticleData.h"
14 #include "Pythia8/ResonanceWidths.h"
15 #include "Pythia8/SusyWidthFunctions.h"
16 #include "Pythia8/SusyCouplings.h"
17 
18 namespace Pythia8 {
19 
20 //==========================================================================
21 
22 class SUSYResonanceWidths : public ResonanceWidths{
23 
24 public:
25 
26  SUSYResonanceWidths() {}
27 
28 protected:
29 
30  // Virtual methods to handle model-specific (non-SM) part of initialization
31  virtual bool initBSM();
32  virtual bool allowCalc();
33  virtual bool getChannels(int) { return false; };
34 
35  double integrateGauss( WidthFunction* widthFn, double, double, double);
36 
37  // SUSY couplings
38  CoupSUSY* coupSUSYPtr;
39  static const bool DBSUSY;
40 
41 };
42 
43 //==========================================================================
44 
45 // The ResonanceSquark class handles the Squark resonances.
46 
47 class ResonanceSquark : public SUSYResonanceWidths {
48 
49 public:
50 
51  // Constructor.
52  ResonanceSquark(int idResIn) {initBasic(idResIn);}
53 
54 
55 private:
56 
57  // Locally stored properties and couplings.
58 
59  // Initialize constants.
60  virtual void initConstants();
61 
62  // Calculate various common prefactors for the current mass.
63  virtual void calcPreFac(bool = false);
64 
65  bool getChannels(int idPDG);
66 
67  // Caclulate width for currently considered channel.
68  virtual void calcWidth(bool calledFromInit = false);
69 
70  double s2W;
71 
72 };
73 
74 //==========================================================================
75 
76 // The ResonanceGluino class handles the Gluino resonances.
77 
78 class ResonanceGluino : public SUSYResonanceWidths {
79 
80 public:
81 
82  // Constructor.
83  ResonanceGluino(int idResIn) {initBasic(idResIn);}
84 
85 private:
86 
87  bool getChannels(int idPDG);
88 
89  // Locally stored properties and couplings.
90 
91  // Initialize constants.
92  virtual void initConstants();
93 
94  // Calculate various common prefactors for the current mass.
95  virtual void calcPreFac(bool = false);
96 
97  // Caclulate width for currently considered channel.
98  virtual void calcWidth(bool calledFromInit = false);
99 
100 };
101 
102 //==========================================================================
103 
104 // The ResonanceNeut class handles the Neutralino resonances.
105 
106 class ResonanceNeut : public SUSYResonanceWidths {
107 
108 public:
109 
110  // Constructor.
111  ResonanceNeut(int idResIn) {initBasic(idResIn);}
112 
113 private:
114 
115  bool getChannels(int idPDG);
116  // Locally stored properties and couplings.
117  double kinFac2;
118 
119  // Initialize constants.
120  virtual void initConstants();
121 
122  // Calculate various common prefactors for the current mass.
123  virtual void calcPreFac(bool = false);
124 
125  // Caclulate width for currently considered channel.
126  virtual void calcWidth(bool calledFromInit = false);
127 
128  double s2W;
129 
130  // Functions for 3-body decays
131  /* Psi psi; */
132  /* Phi phi; */
133  /* Upsilon upsil; */
134 
135 };
136 
137 //==========================================================================
138 
139 // The ResonanceChar class handles the Chargino resonances.
140 
141 class ResonanceChar : public SUSYResonanceWidths {
142 
143 public:
144 
145  // Constructor.
146  ResonanceChar(int idResIn) {initBasic(idResIn);}
147 
148 private:
149 
150  bool getChannels(int idPDG);
151 
152  // Locally stored properties and couplings.
153  double kinFac2;
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  //Functions for 3-body decays
167  /* Psi psi; */
168  /* Phi phi; */
169  /* Upsilon upsil; */
170 
171 };
172 
173 //==========================================================================
174 
175 // The ResonanceSlepton class handles the Slepton/Sneutrino resonances.
176 
177 class ResonanceSlepton : public SUSYResonanceWidths {
178 
179 public:
180 
181  // Constructor.
182  ResonanceSlepton(int idResIn) {initBasic(idResIn);}
183 
184 private:
185 
186  bool getChannels(int idPDG);
187 
188  // Locally stored properties and couplings.
189 
190  // Initialize constants.
191  virtual void initConstants();
192 
193  // Calculate various common prefactors for the current mass.
194  virtual void calcPreFac(bool = false);
195 
196  // Calculate width for currently considered channel.
197  virtual void calcWidth(bool calledFromInit = false);
198 
199  double s2W;
200 
201  // Three-body stau decaywidth classes
202  StauWidths stauWidths;
203 
204 };
205 
206 //==========================================================================
207 
208 } // end namespace Pythia8
209 
210 #endif // end Pythia8_SusyResonanceWidths_H