gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
MSSM_H.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
25 
26 #ifndef DECAYBIT_INCLUDE_GAMBIT_DECAYBIT_MSSM_H_HPP_
27 #define DECAYBIT_INCLUDE_GAMBIT_DECAYBIT_MSSM_H_HPP_
28 
29 #include <cmath>
30 #include <array>
31 #include <stdexcept>
32 
33 
34 namespace Gambit {
35  namespace DecayBit {
36  namespace MSSM_H {
37 
38  double lambda(double x, double y, double z) {
46  if (z == 0.) {
47  throw std::invalid_argument("z must be greater than zero");
48  }
49 
50  return pow(1. - x / z - y / z, 2) - 4. * x * y / pow(z, 2);
51  }
52 
53  double gamma_h_chi_gL(std::array<double, 2> m,
54  double gL,
55  double mh = 125.,
56  double mw = 80.385,
57  double GF = 1.1663787e-5) {
67  const double eps_2 = 1.;
68  const double gR = gL * eps_2;
69 
70  // Phase-space
71 
72  if (std::fabs(m[0]) + std::fabs(m[1]) >= mh) {
73  return 0.;
74  }
75 
76  const double l = lambda(pow(m[0], 2), pow(m[1], 2), pow(mh, 2));
77  if (l <= 0.) {
78  return 0.;
79  }
80 
81  // Eq. 2.56 without common factor (without f$\sin\theta_W\f$ which cancels)
82  const double gamma_no_prefactor = std::sqrt(l) * ((
83  pow(gL, 2) + pow(gR, 2)) * (1. - (pow(m[0], 2) + pow(m[1], 2)) / pow(mh, 2))
84  -4. * gL * gR * m[0] * m[1] / pow(mh, 2));
85 
86  // Eq. 2.56 with common factor
87  return GF * pow(mw, 2) / (2. * M_SQRT2 * M_PI) * mh * gamma_no_prefactor;
88  }
89 
90  double gamma_h_chi_0(int i,
91  int j,
92  std::array<double, 4> m,
93  std::array<std::array<double, 4>, 4> Z,
94  double alpha,
95  double mh = 125.,
96  double mw = 80.385,
97  double GF = 1.1663787e-5,
98  double sw2 = 0.22) {
116  // Weinberg angle
117  const double tw = std::sqrt(sw2) / std::sqrt(1. - sw2);
118 
119  // Eq. 1.113
120  const double e2 = -std::sin(alpha);
121  const double d2 = -std::cos(alpha);
122 
123  // Eq. 1.112 (without \f$\sin\theta_W\f$ which cancels)
124  const double gL = 0.5 * (
125  (Z[j][1] - tw * Z[j][0]) * (e2 * Z[i][2] + d2 * Z[i][3]) +
126  (Z[i][1] - tw * Z[i][0]) * (e2 * Z[j][2] + d2 * Z[j][3]));
127 
128  std::array<double, 2> mf{{m[i], m[j]}};
129  double gamma = gamma_h_chi_gL(mf, gL, mh, mw, GF);
130  if (i == j) {
131  gamma *= 0.5;
132  }
133  return gamma;
134  }
135 
136  double gamma_h_chi_pm(int i,
137  int j,
138  std::array<double, 2> m,
139  std::array<std::array<double, 2>, 2> U,
140  std::array<std::array<double, 2>, 2> V,
141  double alpha,
142  double mh = 125.,
143  double mw = 80.385,
144  double GF = 1.1663787e-5) {
162  // Eq. 1.113
163  const double e2 = -std::sin(alpha);
164  const double d2 = -std::cos(alpha);
165 
166  // Eq. 1.111 (without \f$\sin\theta_W\f$ which cancels)
167  const double gL = M_SQRT1_2 *
168  (e2 * V[j][0] * U[i][1] - d2 * V[j][1] * U[i][0]);
169 
170  std::array<double, 2> mf{{m[i], m[j]}};
171  return gamma_h_chi_gL(mf, gL, mh, mw, GF);
172  }
173 
174  double gamma_h_chi(std::array<double, 2> m_pm,
175  std::array<double, 4> m_0,
176  std::array<std::array<double, 2>, 2> U,
177  std::array<std::array<double, 2>, 2> V,
178  std::array<std::array<double, 4>, 4> Z,
179  double alpha,
180  double mh = 125.,
181  double mw = 80.385,
182  double GF = 1.1663787e-5,
183  double sw2 = 0.22) {
202  double gamma = 0.;
203 
204  for (int i = 0; i <= 3; i += 1) {
205  // Do not double count e.g. 12 and 21 - they are not distinct
206  for (int j = i; j <= 3; j += 1) {
207  gamma += MSSM_H::gamma_h_chi_0(i, j, m_0, Z, alpha, mh, mw, GF, sw2);
208  }
209  }
210 
211  for (int i = 0; i <= 1; i += 1) {
212  // Do count e.g. 12 and 21 - they are distinct
213  for (int j = 0; j <= 1; j += 1) {
214  gamma += MSSM_H::gamma_h_chi_pm(i, j, m_pm, U, V, alpha, mh, mw, GF);
215  }
216  }
217 
218  return gamma;
219  }
220 
221  } // namespace MSSM_H
222  } // namespace DecayBit
223 } // namespace Gambit
224 
225 #endif // DECAYBIT_INCLUDE_GAMBIT_DECAYBIT_MSSM_H_HPP_
Spectrum Spectrum Spectrum mw
double gamma_h_chi(std::array< double, 2 > m_pm, std::array< double, 4 > m_0, std::array< std::array< double, 2 >, 2 > U, std::array< std::array< double, 2 >, 2 > V, std::array< std::array< double, 4 >, 4 > Z, double alpha, double mh=125., double mw=80.385, double GF=1.1663787e-5, double sw2=0.22)
Definition: MSSM_H.hpp:174
START_MODEL alpha
double gamma_h_chi_0(int i, int j, std::array< double, 4 > m, std::array< std::array< double, 4 >, 4 > Z, double alpha, double mh=125., double mw=80.385, double GF=1.1663787e-5, double sw2=0.22)
Definition: MSSM_H.hpp:90
double lambda(double x, double y, double z)
Definition: MSSM_H.hpp:38
double pow(const double &a)
Outputs a^i.
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum mh
double gamma_h_chi_pm(int i, int j, std::array< double, 2 > m, std::array< std::array< double, 2 >, 2 > U, std::array< std::array< double, 2 >, 2 > V, double alpha, double mh=125., double mw=80.385, double GF=1.1663787e-5)
Definition: MSSM_H.hpp:136
double gamma_h_chi_gL(std::array< double, 2 > m, double gL, double mh=125., double mw=80.385, double GF=1.1663787e-5)
Definition: MSSM_H.hpp:53
TODO: see if we can use this one:
Definition: Analysis.hpp:33