StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ResonanceWidthsDM.h
1 // ResonanceWidthsDM.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 DM resonance properties: dynamical widths etc.
7 // ResonanceS, ResonanceZp, ResonanceS1, ResonanceCha, ResonanceDM2,
8 // ResonanceChaD: derived classes for individual resonances.
9 
10 #ifndef Pythia8_ResonanceWidthsDM_H
11 #define Pythia8_ResonanceWidthsDM_H
12 
13 #include "Pythia8/Settings.h"
14 #include "Pythia8/ParticleData.h"
15 #include "Pythia8/ResonanceWidths.h"
16 
17 namespace Pythia8 {
18 
19 //==========================================================================
20 
21 // The ResonanceS class. (S a.k.a. DMmed(s=0), PDG id 54.)
22 
23 class ResonanceS : public ResonanceWidths {
24 
25 public:
26 
27  // Constructor and destructor.
28  ResonanceS(int idResIn) : ResonanceWidths(), gq(), gX(), pScalar()
29  {initBasic(idResIn);}
30  virtual ~ResonanceS() {}
31 
32 private:
33 
34  // Couplings etc.
35  double gq, gX;
36  bool pScalar;
37 
38  // Initialize constants.
39  virtual void initConstants() override;
40 
41  // Calculate various common prefactors for the current mass.
42  virtual void calcPreFac(bool = false) override;
43 
44  // Caclulate width for currently considered channel.
45  virtual void calcWidth(bool calledFromInit = false) override;
46 
47  // Loop integral for H -> gg coupling.
48  virtual double eta2gg();
49 
50 };
51 
52 //==========================================================================
53 
54 // The ResonanceZp class. (Zp a.k.a. DMmed(s=1), PDG id 55.)
55 
56 class ResonanceZp : public ResonanceWidths {
57 
58 public:
59 
60  // Constructor.
61  ResonanceZp(int idResIn) : ResonanceWidths(), kinMix(), gZp(), eps(), vX(),
62  aX(), vu(), vd(), vl(), vv(), au(), ad(), al(), av() {initBasic(idResIn);}
63 
64 private:
65 
66  // Couplings etc.
67  bool kinMix;
68  double gZp, eps, vX, aX, vu, vd, vl, vv, au, ad, al, av;
69 
70  // Initialize constants.
71  virtual void initConstants() override;
72 
73  // Calculate various common prefactors for the current mass.
74  virtual void calcPreFac(bool = false) override;
75 
76  // Caclulate width for currently considered channel.
77  virtual void calcWidth(bool calledFromInit = false) override;
78 
79 };
80 
81 //==========================================================================
82 
83 // Charged scalar partner of DM (PDG id 56.)
84 
85 class ResonanceSl : public ResonanceWidths {
86 
87 public:
88 
89  // Constructor.
90  ResonanceSl(int idResIn) : yuk() {initBasic(idResIn);}
91 
92 private:
93 
94  // Couplings etc.
95  double yuk[4];
96 
97  // Initialize constants.
98  virtual void initConstants() override;
99 
100  // Calculate various common prefactors for the current mass.
101  virtual void calcPreFac(bool = false) override;
102 
103  // Caclulate width for currently considered channel.
104  virtual void calcWidth(bool calledFromInit = false) override;
105 
106 };
107 
108 //==========================================================================
109 
110 // Charged partner of DM (PDG id 57.)
111 
113 
114 public:
115 
116  // Constructor.
117  ResonanceCha(int idResIn) : ResonanceWidths(), mixN1(), mixN2(), mixing(),
118  doDY() {initBasic(idResIn);}
119 
120 protected:
121 
122  // Couplings etc.
123  double mixN1, mixN2, mixing;
124  bool doDY;
125 
126  // Set masses and mixing from settings.
127  void setMassMix();
128 
129 private:
130 
131  // Initialize constants.
132  virtual void initConstants() override {setMassMix();}
133 
134  // Calculate various common prefactors for the current mass.
135  virtual void calcPreFac(bool = false) override;
136 
137  // Caclulate width for currently considered channel.
138  virtual void calcWidth(bool calledFromInit = false) override;
139 
140 };
141 
142 //==========================================================================
143 
144 // Neutral Charged partner of DM (PDG id 58.)
145 // Not yet implemented.
146 
147 class ResonanceDM2 : public ResonanceCha {
148 
149 public:
150 
151  // Constructor.
152  ResonanceDM2(int idResIn) : ResonanceCha(idResIn), mHiggs(), wHiggs()
153  {initBasic(idResIn);}
154 
155 private:
156 
157  // Couplings etc.
158  double mHiggs, wHiggs;
159 
160  // Initialize constants.
161  virtual void initConstants() override;
162 
163  // Calculate various common prefactors for the current mass.
164  virtual void calcPreFac(bool = false) override;
165 
166  // Caclulate width for currently considered channel.
167  virtual void calcWidth(bool calledFromInit = false) override;
168 
169 };
170 
171 //==========================================================================
172 
173 // Doubly Charged partner of DM (PDG id 59.)
174 
175 class ResonanceChaD : public ResonanceCha {
176 
177 public:
178 
179  // Constructor.
180  ResonanceChaD(int idResIn) : ResonanceCha(idResIn) {initBasic(idResIn);}
181 
182 private:
183 
184  // Initialize constants.
185  virtual void initConstants() override {setMassMix();}
186 
187  // Calculate various common prefactors for the current mass.
188  virtual void calcPreFac(bool = false) override;
189 
190  // Caclulate width for currently considered channel.
191  virtual void calcWidth(bool calledFromInit = false) override;
192 
193 };
194 
195 //==========================================================================
196 
197 } // end namespace Pythia8
198 
199 #endif // Pythia8_ResonanceWidthsDM_H