Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
sm.h
Go to the documentation of this file.
1// This file is part of MARTY.
2//
3// MARTY is free software: you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation, either version 3 of the License, or
6// (at your option) any later version.
7//
8// MARTY is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with MARTY. If not, see <https://www.gnu.org/licenses/>.
15
25#ifndef SM_H_INCLUDED
26#define SM_H_INCLUDED
27
28#include <marty/core/model.h>
29
30namespace mty {
31
35class SM_Model : public mty::Model {
36
37 public:
38 SM_Model(bool init = true);
39
40 void init();
43
44 void initGauge();
48
56 void adjust();
58};
59
60} // End of namespace mty
61
68namespace mty::sm_input {
69
71// SMINPUTS block SLHA conventions
73
74// alpha_em(0) = 1 / ( 137.035999139(31) )
75inline csl::Expr alpha_em
76 = csl::constant_s("alpha_em", 1 / csl::float_s(1.37035999139e+02L));
77
78inline csl::Expr e_em = csl::constant_s(
79 "e_em",
80 csl::Evaluated(csl::sqrt_s(4 * M_PI * alpha_em),
81 csl::eval::numerical | csl::eval::literal));
82
83// At M_W
84inline csl::Expr G_F = csl::constant_s("G_F", csl::float_s(1.1663787e-05L));
85
86// At 0
87inline csl::Expr alpha_s
88 = csl::constant_s("alpha_s", csl::float_s(1.1890e-01L));
89inline csl::Expr g_s = csl::constant_s(
90 "g_s",
91 csl::Evaluated(csl::sqrt_s(4 * M_PI * alpha_s),
92 csl::eval::numerical | csl::eval::literal));
93
94inline csl::Expr M_Z = csl::constant_s("M_Z", csl::float_s(9.11876e+01));
95
96inline csl::Expr m_b = csl::constant_s("m_b", csl::float_s(4.18));
97
98inline csl::Expr m_t = csl::constant_s("m_t", csl::float_s(173));
99
100inline csl::Expr m_tau = csl::constant_s("m_tau", csl::float_s(1.77686));
101
103// Other inputs
105
106inline csl::Expr M_W = csl::constant_s("M_W", csl::float_s(80.379));
107
108inline csl::Expr m_h = csl::constant_s("m_h", csl::float_s(125.18));
109
110inline csl::Expr v = csl::constant_s("v", 246.22);
111
112inline csl::Expr m_e = csl::constant_s("m_e", csl::float_s(5.109989461e-04L));
113
114inline csl::Expr m_mu = csl::constant_s("m_mu", csl::float_s(105.6583745e-03));
115
116inline csl::Expr m_u = csl::constant_s("m_u", csl::float_s(2.2e-03));
117
118inline csl::Expr m_d = csl::constant_s("m_d", csl::float_s(4.7e-03));
119
120inline csl::Expr m_c = csl::constant_s("m_c", csl::float_s(1.275));
121
122inline csl::Expr m_s = csl::constant_s("m_s", csl::float_s(0.095));
123inline csl::Expr Gamma_W = csl::constant_s("Gamma_W", csl::float_s(2.085));
124
125inline csl::Expr Gamma_Z = csl::constant_s("Gamma_Z", csl::float_s(2.4952));
126
127// From ATLAS, found in PDG chapter on higgs physics
128inline csl::Expr Gamma_h = csl::constant_s("Gamma_h", csl::float_s(4.2e-3));
129
130inline csl::Expr Gamma_t = csl::constant_s("Gamma_t", csl::float_s(1.41));
131
132// MSbar scheme at mu = 0GeV
133inline csl::Expr s2_theta_W
134 = csl::constant_s("s2_thetaW", csl::float_s(0.23057));
135
136inline csl::Expr theta_W = csl::constant_s(
137 "theta_W",
138 csl::Evaluated(csl::asin_s(csl::sqrt_s(s2_theta_W)),
139 csl::eval::numerical | csl::eval::literal));
140
142// CKM Matrix PDG 2020
144
145// Set this option to false to use bare measurements
146// The Wolfenstein parametrization yields a unitary CKM, quite handy
147inline constexpr bool useWolfensteinCKM = true;
148
149inline csl::Expr V_ud_mod = csl::constant_s("V_ud_mod", csl::float_s(0.97370));
150
151inline csl::Expr V_us_mod = csl::constant_s("V_us_mod", csl::float_s(0.2245));
152
153inline csl::Expr V_ub_mod
154 = csl::constant_s("V_ub_mod", csl::float_s(3.82e-03));
155
156inline csl::Expr V_cb_mod
157 = csl::constant_s("V_cb_mod", csl::float_s(41.0e-03));
158
159inline csl::Expr V_cd_mod = csl::constant_s("V_cd_mod", csl::float_s(0.2210));
160
161inline csl::Expr V_cs_mod = csl::constant_s("V_cs_mod", csl::float_s(0.987));
162
163inline csl::Expr V_td_mod = csl::constant_s("V_td_mod", csl::float_s(8.0e-03));
164
165inline csl::Expr V_ts_mod
166 = csl::constant_s("V_ts_mod", csl::float_s(38.8e-03));
167
168inline csl::Expr V_tb_mod = csl::constant_s("V_tb_mod", csl::float_s(1.013));
169
170// Wolfenstein parametrization from PDG 2021
171inline csl::Expr A_wolf = csl::constant_s("A_wolf", csl::float_s(0.790));
172
173inline csl::Expr lambda_wolf
174 = csl::constant_s("lambda_wolf", csl::float_s(0.22650));
175
176inline csl::Expr rho_bar_wolf
177 = csl::constant_s("rho_bar_wolf", csl::float_s(0.141));
178
179inline csl::Expr eta_bar_wolf
180 = csl::constant_s("eta_bar_wolf", csl::float_s(0.357));
181
182inline csl::Expr s_12_wolf = lambda_wolf;
183
185
186inline csl::Expr s_13_wolf
187 = A_wolf * csl::pow_s(lambda_wolf, 3)
189
190inline csl::Expr c_12_wolf = csl::sqrt_s(1 - s_12_wolf * s_12_wolf);
191
192inline csl::Expr c_13_wolf = csl::sqrt_s(1 - s_13_wolf * s_13_wolf);
193
194inline csl::Expr c_23_wolf = csl::sqrt_s(1 - s_23_wolf * s_23_wolf);
195
196inline csl::Expr delta_wolf = csl::constant_s(
197 "delta_wolf",
198 csl::Evaluated(csl::angle_s(rho_bar_wolf, eta_bar_wolf), csl::eval::all));
199
200inline csl::Expr V_ud_wolf = c_12_wolf * c_13_wolf;
201
202inline csl::Expr V_us_wolf = s_12_wolf * c_13_wolf;
203
204inline csl::Expr V_ub_wolf = s_13_wolf * csl::exp_s(-CSL_I * delta_wolf);
205
206inline csl::Expr V_cd_wolf
208 - c_12_wolf * s_23_wolf * s_13_wolf * csl::exp_s(CSL_I * delta_wolf);
209
210inline csl::Expr V_cs_wolf
212 - s_12_wolf * s_23_wolf * s_13_wolf * csl::exp_s(CSL_I * delta_wolf);
213
214inline csl::Expr V_cb_wolf = s_23_wolf * c_13_wolf;
215
216inline csl::Expr V_td_wolf
218 - c_12_wolf * c_23_wolf * s_13_wolf * csl::exp_s(CSL_I * delta_wolf);
219
220inline csl::Expr V_ts_wolf
222 - s_12_wolf * c_23_wolf * s_13_wolf * csl::exp_s(CSL_I * delta_wolf);
223
224inline csl::Expr V_tb_wolf = c_23_wolf * c_13_wolf;
225
226inline csl::Expr V_ud = csl::constant_s(
227 "V_ud",
228 (useWolfensteinCKM) ? csl::Evaluated(V_ud_wolf, csl::eval::all)
229 : V_ud_mod->getValue(),
230 csl::ComplexProperty::Real);
231
232inline csl::Expr V_us = csl::constant_s(
233 "V_us",
234 (useWolfensteinCKM) ? csl::Evaluated(V_us_wolf, csl::eval::all)
235 : V_us_mod->getValue(),
236 csl::ComplexProperty::Real);
237
238inline csl::Expr V_cb = csl::constant_s(
239 "V_cb",
240 (useWolfensteinCKM) ? csl::Evaluated(V_cb_wolf, csl::eval::all)
241 : V_cb_mod->getValue(),
242 csl::ComplexProperty::Real);
243
244inline csl::Expr V_tb = csl::constant_s(
245 "V_tb",
246 (useWolfensteinCKM) ? csl::Evaluated(V_tb_wolf, csl::eval::all)
247 : V_tb_mod->getValue(),
248 csl::ComplexProperty::Real);
249
250// As PDG says: angles in the first quadrant so cos > 0 and sin > 0
251
252inline csl::Expr tan_CKM_12 = V_us / V_ud;
253inline csl::Expr sin_CKM_12
254 = csl::Evaluated(csl::sin_s(csl::atan_s(tan_CKM_12)),
255 csl::eval::literal | csl::eval::numerical);
256inline csl::Expr cos_CKM_12
257 = csl::Evaluated(csl::cos_s(csl::atan_s(tan_CKM_12)),
258 csl::eval::literal | csl::eval::numerical);
259
260inline csl::Expr tan_CKM_23 = V_cb / V_tb;
261inline csl::Expr sin_CKM_23
262 = csl::Evaluated(csl::sin_s(csl::atan_s(tan_CKM_23)),
263 csl::eval::literal | csl::eval::numerical);
264inline csl::Expr cos_CKM_23
265 = csl::Evaluated(csl::cos_s(csl::atan_s(tan_CKM_23)),
266 csl::eval::literal | csl::eval::numerical);
267
268inline csl::Expr cos_CKM_13
269 = csl::Evaluated(csl::sqrt_s(V_us * V_us + V_ud * V_ud),
270 csl::eval::literal | csl::eval::numerical);
271
272inline csl::Expr sin_CKM_13
273 = csl::Evaluated(csl::sqrt_s(1 - csl::pow_s(cos_CKM_13, 2)),
274 csl::eval::literal | csl::eval::numerical);
275
276inline csl::Expr V_cd = csl::constant_s(
277 "V_cd",
279 ? csl::Evaluated(V_cd_wolf, csl::eval::all)
280 : csl::Evaluated(-sin_CKM_12 *cos_CKM_23
282 * csl::exp_s(CSL_I * delta_wolf),
283 csl::eval::literal | csl::eval::numerical),
284 csl::ComplexProperty::Complex);
285
286inline csl::Expr V_cs = csl::constant_s(
287 "V_cs",
289 ? csl::Evaluated(V_cs_wolf, csl::eval::all)
290 : csl::Evaluated(cos_CKM_12 *cos_CKM_23
292 * csl::exp_s(CSL_I * delta_wolf),
293 csl::eval::literal | csl::eval::numerical),
294 csl::ComplexProperty::Complex);
295
296inline csl::Expr V_td = csl::constant_s(
297 "V_td",
299 ? csl::Evaluated(V_td_wolf, csl::eval::all)
300 : csl::Evaluated(sin_CKM_12 *sin_CKM_23
302 * csl::exp_s(CSL_I * delta_wolf),
303 csl::eval::literal | csl::eval::numerical),
304 csl::ComplexProperty::Complex);
305
306inline csl::Expr V_ts = csl::constant_s(
307 "V_ts",
309 ? csl::Evaluated(V_ts_wolf, csl::eval::all)
310 : csl::Evaluated(-cos_CKM_12 *sin_CKM_23
312 * csl::exp_s(CSL_I * delta_wolf),
313 csl::eval::literal | csl::eval::numerical),
314 csl::ComplexProperty::Complex);
315
316inline csl::Expr V_ub = csl::constant_s(
317 "V_ub",
318 (useWolfensteinCKM) ? csl::Evaluated(V_ub_wolf, csl::eval::all)
319 : csl::Evaluated( // Unitary triangle condition
320 -(csl::GetComplexConjugate(V_cd) * V_cb
321 + csl::GetComplexConjugate(V_td) * V_tb)
322 / csl::GetComplexConjugate(V_ud),
323 csl::eval::literal | csl::eval::numerical),
324 csl::ComplexProperty::Complex);
325
326inline const std::vector<csl::Expr> all_params = {
327 // 14 scalar parameters
328 alpha_em,
329 alpha_s,
330 M_Z,
331 M_W,
332 m_h,
333 m_e,
334 m_mu,
335 m_tau,
336 m_u,
337 m_d,
338 m_c,
339 m_s,
340 m_t,
341 m_b,
342
343 // CKM (dof: 3 angles + 1 phase)
344 V_ud,
345 V_us,
346 V_ub,
347 V_cd,
348 V_cs,
349 V_cb,
350 V_td,
351 V_ts,
352 V_tb,
353
354 // Secondary parameters
355 e_em,
356 G_F,
357 g_s,
358 v,
359 theta_W,
361 Gamma_W,
362 Gamma_Z,
363 Gamma_h,
364 Gamma_t,
365};
366
367/*
368 * @brief Removes all numerical values from the SM parameters (in the
369 * `all_inputs` vector).
370 *
371 * @details This can be used to avoid numerical evaluation before the
372 * library generation and therefore allow the parameters to be tuned
373 * in the latter libraries.
374 */
376
377/*
378 * @brief Redefine all numerical values from the SM parameters (in the
379 * `all_inputs` vector).
380 *
381 * @details This can be used after a call to `undefineNumericalValues()`
382 * to recover all the numerical values of the SM parameters.
383 */
385
386} // End of namespace mty::sm_input
387
388#endif
Standard Model of particle physics.
Definition sm.h:35
void initGauge()
void replaceUpYukawa()
void flavorSymmetryBreaking()
void diagonalizeSMMassMatrices()
void initContent()
void addGaugeFixingTerms()
void gaugeSymmetryBreaking()
void replaceDownYukawa()
void initFermions()
void replaceLeptonYukawa()
void HiggsVEVExpansion()
SM_Model(bool init=true)
void initYukawas()
void initHiggsPotential()
void getToLowEnergyLagrangian()
Namespace containing SM input parameters, in particular those modifiable with LHA file.
Definition sm.h:68
csl::Expr V_cb_mod
Definition sm.h:157
csl::Expr m_u
Definition sm.h:116
csl::Expr V_ts_wolf
Definition sm.h:221
csl::Expr alpha_em
Definition sm.h:76
csl::Expr V_cb_wolf
Definition sm.h:214
csl::Expr Gamma_W
Definition sm.h:123
csl::Expr e_em
Definition sm.h:78
csl::Expr V_cb
Definition sm.h:238
csl::Expr tan_CKM_12
Definition sm.h:252
csl::Expr V_us_wolf
Definition sm.h:202
csl::Expr V_cs_mod
Definition sm.h:161
csl::Expr V_us_mod
Definition sm.h:151
csl::Expr V_ud_mod
Definition sm.h:149
csl::Expr V_td_wolf
Definition sm.h:217
csl::Expr V_cd_wolf
Definition sm.h:207
csl::Expr Gamma_t
Definition sm.h:130
csl::Expr Gamma_h
Definition sm.h:128
csl::Expr M_Z
Definition sm.h:94
csl::Expr V_td_mod
Definition sm.h:163
csl::Expr g_s
Definition sm.h:89
csl::Expr s2_theta_W
Definition sm.h:134
csl::Expr v
Definition sm.h:110
csl::Expr cos_CKM_13
Definition sm.h:269
csl::Expr c_12_wolf
Definition sm.h:190
csl::Expr rho_bar_wolf
Definition sm.h:177
csl::Expr V_tb_wolf
Definition sm.h:224
csl::Expr m_s
Definition sm.h:122
csl::Expr tan_CKM_23
Definition sm.h:260
csl::Expr m_tau
Definition sm.h:100
constexpr bool useWolfensteinCKM
Definition sm.h:147
csl::Expr V_cd
Definition sm.h:276
csl::Expr sin_CKM_13
Definition sm.h:273
csl::Expr G_F
Definition sm.h:84
csl::Expr V_ts_mod
Definition sm.h:166
csl::Expr V_ub_wolf
Definition sm.h:204
csl::Expr V_tb_mod
Definition sm.h:168
csl::Expr V_cd_mod
Definition sm.h:159
csl::Expr m_mu
Definition sm.h:114
csl::Expr V_cs
Definition sm.h:286
csl::Expr sin_CKM_12
Definition sm.h:254
void redefineNumericalValues()
csl::Expr delta_wolf
Definition sm.h:196
csl::Expr theta_W
Definition sm.h:136
csl::Expr s_13_wolf
Definition sm.h:187
csl::Expr V_ub_mod
Definition sm.h:154
csl::Expr V_ud
Definition sm.h:226
csl::Expr s_23_wolf
Definition sm.h:184
csl::Expr cos_CKM_23
Definition sm.h:265
csl::Expr m_c
Definition sm.h:120
csl::Expr lambda_wolf
Definition sm.h:174
csl::Expr alpha_s
Definition sm.h:88
csl::Expr V_ub
Definition sm.h:316
csl::Expr Gamma_Z
Definition sm.h:125
csl::Expr m_e
Definition sm.h:112
void undefineNumericalValues()
csl::Expr s_12_wolf
Definition sm.h:182
csl::Expr V_tb
Definition sm.h:244
csl::Expr V_ts
Definition sm.h:306
csl::Expr eta_bar_wolf
Definition sm.h:180
csl::Expr sin_CKM_23
Definition sm.h:262
csl::Expr c_23_wolf
Definition sm.h:194
const std::vector< csl::Expr > all_params
Definition sm.h:326
csl::Expr V_td
Definition sm.h:296
csl::Expr V_us
Definition sm.h:232
csl::Expr V_cs_wolf
Definition sm.h:211
csl::Expr cos_CKM_12
Definition sm.h:257
csl::Expr c_13_wolf
Definition sm.h:192
csl::Expr M_W
Definition sm.h:106
csl::Expr m_b
Definition sm.h:96
csl::Expr m_d
Definition sm.h:118
csl::Expr A_wolf
Definition sm.h:171
csl::Expr m_h
Definition sm.h:108
csl::Expr m_t
Definition sm.h:98
csl::Expr V_ud_wolf
Definition sm.h:200
Definition sm.h:30