GM2Calc 2.3.0
Loading...
Searching...
No Matches
gm2_uncertainty.cpp
Go to the documentation of this file.
1// ====================================================================
2// This file is part of GM2Calc.
3//
4// GM2Calc is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published
6// by the Free Software Foundation, either version 3 of the License,
7// or (at your option) any later version.
8//
9// GM2Calc is distributed in the hope that it will be useful, but
10// WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with GM2Calc. If not, see
16// <http://www.gnu.org/licenses/>.
17// ====================================================================
18
20#include "gm2calc/gm2_1loop.hpp"
21#include "gm2calc/gm2_2loop.hpp"
22#include "gm2calc/THDM.hpp"
23#include "gm2_1loop_helpers.hpp"
25
26#include <cmath>
27
28/**
29 * \file gm2_uncertainty.cpp
30 *
31 * Contains functions necessary to calculate theory uncertainty
32 * associated with amu.
33 */
34
35namespace gm2calc {
36
37/**
38 * Calculates uncertainty associated with amu(0-loop)
39 *
40 * The estimated uncertainty is the magnitude amu(1-loop) plus
41 * amu(2-loop).
42 *
43 * @param model model parameters (unused tag type)
44 * @param amu_1L 1-loop contribution to amu
45 * @param amu_2L 2-loop contribution to amu
46 *
47 * @return uncertainty for amu(0-loop)
48 */
49double calculate_uncertainty_amu_0loop(const THDM& /* model */, double amu_1L, double amu_2L)
50{
51 return std::abs(amu_1L) + std::abs(amu_2L);
52}
53
54/**
55 * Calculates uncertainty associated with amu(0-loop)
56 *
57 * @param model model parameters
58 *
59 * @return uncertainty for amu(0-loop)
60 */
68
69/**
70 * Calculates uncertainty associated with amu(1-loop)
71 *
72 * The estimated uncertainty is the sum of magnitude amu(2-loop) and
73 * the 2-loop uncertainty, calculated by
74 * calculate_uncertainty_amu_2loop().
75 *
76 * @param model model parameters
77 * @param amu_1L 1-loop contribution to amu
78 * @param amu_2L 2-loop contribution to amu
79 *
80 * @return uncertainty for amu(1-loop)
81 */
83{
85
86 return std::abs(amu_2L) + std::abs(delta_amu_2L);
87}
88
89/**
90 * Calculates uncertainty associated with amu(1-loop)
91 *
92 * @param model model parameters
93 *
94 * @return uncertainty for amu(1-loop)
95 */
103
104/**
105 * Calculates uncertainty associated with amu(2-loop)
106 *
107 * Takes into account the neglected two-loop contribution
108 * \f$a_\mu^{\Delta r\text{-shift}}\f$, Eq.(34) arxiv:1607.06292,
109 * two-loop contributions of \f$O(m_\mu^4)\f$ and three-loop
110 * contributions of \f$O(m_\mu^2)\f$
111 *
112 * @param model model parameters
113 * @param amu_1L 1-loop contribution to amu
114 * @param amu_2L 2-loop contribution to amu
115 *
116 * @return uncertainty for amu(2-loop)
117 */
119{
120 const double pi = 3.1415926535897932;
121 const double alpha_em = model.get_alpha_em();
122 const double mm = model.get_MFe(1);
123 const double mH = std::abs(model.get_Mhh(1));
124 const double mA = std::abs(model.get_MAh(1));
125 const double mHp = std::abs(model.get_MHm(1));
126 const double mNP = std::fmin(mH,std::fmin(mA,mHp)); // new physics scale
127
128 // universal 2-loop QED logarithmic correction from Eq.(51) hep-ph/9803384
129 const double delta_alpha_em = -4*alpha_em/pi*std::log(std::abs(mNP/mm));
130
131 // upper bound on neglected 2-loop contribution from \Delta r
132 const double delta_amu_2L_delta_r = 2e-12;
133
134 // estimate of 2-loop corrections O(mm^4)
135 const double delta_amu_2L_mm4 = std::abs(amu_1L*delta_alpha_em);
136
137 // estimate of 3-loop corrections O(mm^2)
138 const double delta_amu_3L = std::abs(amu_2L*delta_alpha_em);
139
141}
142
143/**
144 * Calculates uncertainty associated with amu(2-loop)
145 *
146 * @param model model parameters
147 *
148 * @return uncertainty for amu(2-loop)
149 */
157
158} // namespace gm2calc
Contains routines to determine the THDM parameters.
Definition THDM.hpp:98
double calculate_uncertainty_amu_1loop(const THDM &, double, double)
calculates uncertainty for amu(1-loop)
void svd_eigen(const Eigen::Matrix< Scalar, M, N > &m, Eigen::Array< Real,(((M)<(N)) ?(M) :(N)), 1 > &s, Eigen::Matrix< Scalar, M, M > *u, Eigen::Matrix< Scalar, N, N > *vh)
double calculate_amu_2loop(const MSSMNoFV_onshell &model)
Calculates best 2-loop SUSY contribution to a_mu with tan(beta) resummation.
double calculate_uncertainty_amu_2loop(const THDM &, double, double)
calculates uncertainty for amu(2-loop)
double calculate_amu_1loop(const MSSMNoFV_onshell &model)
Calculates full 1-loop SUSY contribution to (g-2), Eq (45) of arXiv:hep-ph/0609168.
Definition gm2_1loop.cpp:74
double calculate_uncertainty_amu_0loop(const THDM &, double, double)
calculates uncertainty for amu(0-loop)