33using namespace std::literals::complex_literals;
38 const std::complex<double> z(x, 0.0);
41 3.*(1. - 8.*z + 20.*z*z)/std::sqrt(4.*z - 1.)*std::acos((3.*z - 1.)/(2.*std::pow(z, 3./2.)))
42 - (1. - z)/(2.*z)*(2. - 13.*z + 47.*z*z)
43 - 3./2. * (1. - 6.*z + 4.*z*z)*std::log(z)
50 const double log_b {std::log(b)};
51 const double log_ratio {std::log((1 + b) / (1 - b))};
54 (4. *
Li2((1 - b) / (1 + b)) + 2. *
Li2(-(1 - b) / (1 + b)) -
55 3. * log_ratio * std::log(2 / (1 + b)) -
56 2. * log_ratio * log_b) -
57 3. * b * std::log(4. / (1 - b * b)) - 4. * b * log_b;
65 const double b2 = b*b;
68 + 1./(16*b2*b) * (3 + b2*(34 - 13*b2)) * std::log((1+b)/(1-b))
69 + 3./(8.*b2)*(7*b2 - 1);
75 const double b2 = b*b;
77 return calc_A(b)/b + 1./(16*b) * (19 + b2*(2 + 3*b2))
78 * std::log((1+b)/(1-b)) + 3./8.*(7 - b2);
84 constexpr double Pi2 =
Sqr(
Pi);
89 result += alpha_s_red * (39.34 + Nf*(-220.9 + Nf*(9.685 - 0.0205*Nf)));
93 6163613/5184. - 3535/72.*Pi2 - 109735/216.*
zeta3 + 815/12.*
zeta5
94 + (- 46147/486. + 277/72.*Pi2 + 262/9.*
zeta3 - 5/6.*
zeta4 - 25/9.*
zeta5)*Nf
95 + (15511/11664. - 11/162.*Pi2 - 1/3.*
zeta3)*
Sqr(Nf);
96 result *= alpha_s_red;
100 10801/144. - 19/12.*Pi2 - 39/2.*
zeta3 + (- 65/24. + 1/18.*Pi2 + 2/3.*
zeta3)*Nf;
101 result *= alpha_s_red;
104 result *= alpha_s_red;
109 WARNING(
"Unknow correction in calc_Deltaqq");
118double RT(
double x)
noexcept
121 return RT_general(x);
122 }
else if (x == 0.25) {
123 return std::numeric_limits<double>::quiet_NaN();
124 }
else if (x < 0.95) {
125 return RT_general(x);
127 const double d = x - 1;
128 const double d2 = d*d;
129 const double d4 = d2*d2;
130 const double d5 = d4*d;
131 return d5*(-3./10. + d*(13./20. + d*(-15./14. + d*(447./280. + d*(-95./42. + 523.*d/168)))));
134 }
else if (x < 1.01) {
135 const double d = x - 1;
136 return d*(39 + d*(75.0/2.0 + d*(-6 + 5.0/4.0*d)));
138 return RT_general(x);
141std::complex<double>
f(
double tau)
noexcept {
143 return Sqr(std::asin(std::sqrt(tau)));
146 return -0.25*
Sqr(std::log((1.+std::sqrt(1.-1./tau))/(1.-std::sqrt(1.-1./tau))) - 1i*
Pi);
155 return (tau-1.)*std::asin(std::sqrt(tau))/std::sqrt(tau -
Sqr(tau));
159(tau-1.)*(1i*std::log(-1. - 1i*
Pi + 2.*tau + 2.*std::sqrt((-1. + tau)*tau)))/
160 (-2i*std::sqrt((-1. + tau)*tau) +
161 2*
Pi*(2*(-1 + tau)*tau + std::sqrt((-1 + tau)*tau) - 2*std::sqrt((-1 + tau)*
Power3(tau))));
165std::complex<double>
fprime(
double tau)
noexcept {
167 return std::asin(std::sqrt(tau))/std::sqrt(tau -
Sqr(tau));
171(1i*std::log(-1. - 1i*
Pi + 2.*tau + 2.*std::sqrt((-1. + tau)*tau)))/
172 (-2i*std::sqrt((-1. + tau)*tau) +
173 2*
Pi*(2*(-1 + tau)*tau + std::sqrt((-1 + tau)*tau) - 2*std::sqrt((-1 + tau)*
Power3(tau))));
180 const double tau =
Sqr(mH/(2.*mq));
181 const std::complex<double> z =
is_zero(tau) ? 1. : (std::sqrt(std::complex<double>(1. - 1./tau))-1.)/(std::sqrt(std::complex<double>(1.-1./tau))+1.);
182 const std::complex<double>
ln = std::log(z);
183 const std::complex<double> li2p =
Li2(z);
184 const std::complex<double> li2m =
Li2(-z);
185 const std::complex<double> li3p =
Li3(z);
186 const std::complex<double> li3m =
Li3(-z);
187 const std::complex<double> li4p =
Li4(z);
188 const std::complex<double> li4m =
Li4(-z);
189 const std::complex<double> p41mz =
Power4(1.0-z);
190 const std::complex<double> p51mz =
Power5(1.0-z);
192 const std::complex<double> F0H = 3./(2.*
Sqr(tau))*(tau+(tau-1.)*
f(tau));
194 const std::complex<double> F0HC1H =
195 -z*(1. + z +
Sqr(z) +
Cube(z))/p51mz * (108.*li4p + 144.*li4m - 64.*li3p*
ln
198 + z*
Sqr(1+z)/p41mz * (-32.*li3m + 16.*li2m*
ln - 4.*
zeta2*
ln)
199 - 4.*z*(7.-2*z+7*
Sqr(z))/p41mz*li3p + 8.*z*(3.-2*z+3*
Sqr(z))/p41mz*li2p*
ln
200 + 2.*z*(5.-6.*z+5.*
Sqr(z))/p41mz*std::log(1.-z)*
Sqr(
ln) + z*(3.+25.*z-7.*
Sqr(z)+3.*
Cube(z))/(3.*p51mz)*
Cube(
ln)
202 const std::complex<double> F0HC2H = 3./
Sqr(tau)*(tau+(tau-2.)*
f(tau) - tau*
taum1fprime(tau));
204 return (F0HC1H + F0HC2H*std::log(
Sqr(mu/mq)))/F0H;
209 const double tau =
Sqr(mAh/(2.*mq));
212 WARNING(
"2-loop QCD corrections to A→γγ are disable in the threshold region: τ = " << std::to_string(tau));
215 const std::complex<double> z =
is_zero(tau) ? 1. : (std::sqrt(std::complex<double>(1. - 1./tau))-1.)/(std::sqrt(std::complex<double>(1.-1./tau))+1.);
216 const std::complex<double>
ln = std::log(z);
217 const std::complex<double> li2p =
Li2(z);
218 const std::complex<double> li2m =
Li2(-z);
219 const std::complex<double> li3p =
Li3(z);
220 const std::complex<double> li3m =
Li3(-z);
221 const std::complex<double> li4p =
Li4(z);
222 const std::complex<double> li4m =
Li4(-z);
224 const std::complex<double> F0A =
f(tau)/tau;
226 const std::complex<double> F0AC1A =
227 - z*(1.+
Sqr(z))/(
Cube(1.-z)*(1.+z))*(72.*li4p + 96.*li4m - 128./3.*(li3p + li3m)*
ln
230 + z/
Sqr(1.-z)*(-56./.3*li3p - 64./3.*li3m + 16.*li2p*
ln
233 const std::complex<double> F0AC2A = 2./tau*(
f(tau) - tau*
fprime(tau));
235 return (F0AC1A + F0AC2A*std::log(
Sqr(mu/mq)))/F0A;
244 const std::complex<double> r =
Sqr(mH/msq);
245 if (std::abs(r) < 0.7) {
247 const std::complex<double> F01l = -1./3. - 2./45*r - 1./140.*
Sqr(r) - 2./1575*
Cube(r) - 1./4158*
Power4(r);
248 const std::complex<double> F02la = -3./4. - 29./216.*r - 4973./226800.*
Sqr(r) - 3137./882000.*
Cube(r) - 1180367./2095632000.*
Power4(r);
249 const std::complex<double> F02lb = -1./4. - 1./15.*r - 9./560.*
Sqr(r) - 2./525.*
Cube(r) - 5./5544.*
Power4(r);
250 const std::complex<double> F02lc = - 3/.4*F01l;
251 return (F02la + (F02lb + F02lc)*std::log(
Sqr(msq/mu)))/F01l;
253 else if (std::abs(r) > 1.5) {
255 const std::complex<double> F01l = 4./r +
Sqr(2.*std::log(-r)/r);
256 const std::complex<double> F02la =
257 (14.-3*std::log(-r))/r
259 +(17.-8*
zeta2)*
Sqr(std::log(-r)) - 5./3.*
Cube(std::log(-r)) - 1./6.*
Power4(std::log(-r))
261 const std::complex<double> F02lb =
262 (6.*std::log(-r) - 3.*
Sqr(std::log(-r)))/
Sqr(r);
263 const std::complex<double> F02lc = - 3/.4*F01l;
264 return (F02la + (F02lb + F02lc)*std::log(
Sqr(msq/mu)))/F01l;
272 const double r =
Sqr(mAh/msq);
290 return Sqr(std::asin(1./std::sqrt(x)));
293 return -0.25*
Sqr(std::log((1.+std::sqrt(1.-x))/(1.-std::sqrt(1.-x))) - 1i*
Pi);
@ include_higher_order_corrections
[2] include higher order corrections in decays
Quark and lepton masses and gauge couplings in QEDxQCD effective theory.
double calc_A(double b) noexcept
Eq.(2.7) of hep-ph/0503173.
double RT_general(double x) noexcept
Eq.(2.31) of hep-ph/0503172.
constexpr Base Power3(Base b) noexcept
double calc_DeltaAh(double b) noexcept
static constexpr double zeta2
std::complex< double > f(double tau) noexcept
unsigned int number_of_active_flavours(softsusy::QedQcd const &qedqcd, double m) noexcept
std::complex< double > delta_AhAA_2loopQCD_for_quark_loop(double mAh, double mq, double mu) noexcept
double calc_DeltaH(double b) noexcept
Eq.(2.6) of hep-ph/0503173.
double RT(double x) noexcept
Eq.(2.31) of hep-ph/0503172, including edge cases.
std::enable_if_t< std::is_unsigned< T >::value, bool > is_zero(T a, T prec=std::numeric_limits< T >::epsilon()) noexcept
compares a number for being close to zero
double calc_Deltaqq(double alpha_s_red, double Nf, FlexibleDecay_settings const &settings) noexcept
Eq.(2.11) of hep-ph/0503173, 2-loop and higher order.
double Li4(double x) noexcept
Real 4-th order polylogarithm .
std::complex< double > fprime(double tau) noexcept
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
float Li2(float x) noexcept
Real dilogarithm .
static constexpr double zeta4
std::complex< double > delta_hAA_2loopQCD_for_squark_loop(double mH, double msq, double mu) noexcept
std::complex< double > taum1fprime(double tau) noexcept
std::complex< double > delta_AhAA_2loopQCD_for_squark_loop(double mAh, double msq, double mu) noexcept
double Li3(double x) noexcept
Real trilogarithm .
static constexpr double zeta5
constexpr Base Power5(Base b) noexcept
constexpr Base Power4(Base b) noexcept
static constexpr double Pi
std::complex< double > hgg_SM_loop_function(double x) noexcept
constexpr T Cube(T a) noexcept
std::complex< double > delta_hAA_2loopQCD_for_quark_loop(double mH, double mq, double mu) noexcept
static constexpr double zeta3