11 cache.
ckm_factor = std::pow(std::abs(std::conj((*
p)(
ParamId{
ParameterType::SM,
"VCKM", {2, 1}},
DataType::VALUE)) * (*
p)(
ParamId{
ParameterType::SM,
"VCKM", {2, 2}},
DataType::VALUE) / (*
p)(
ParamId{
ParameterType::SM,
"VCKM", {1, 2}},
DataType::VALUE)), 2);
14 cache.
beta_0 = (*iobs_qcdp).get_constants()->beta[5 - 1][0];
39 cache.
C_b_LO.insert(CP_b_LO.begin(), CP_b_LO.end());
50 for (
size_t i = 0; i < 8; i++) {
51 for (
size_t j = 0; j < 8; j++) {
52 P += std::real(cache.
C_b_LO[C_ids[i]] *
K[i][j] * std::conj(cache.
C_b_LO[C_ids[j]]));
53 P += std::real(cache.
C_b_LO[CP_ids[i]] *
K[i][j] * std::conj(cache.
C_b_LO[CP_ids[j]]));
63 for (
size_t i = 0; i < 8; i++) {
64 for (
size_t j = 0; j < 8; j++) {
65 P += std::real(cache.
C_b_LO[C_ids[i]] *
K[i][j] * std::conj(cache.
C_b_NLO[C_ids[j]]));
73 if(
fpeq(z, 1.))
return 4.0859;
74 if(
fpeq(z, 0.))
return 0.;
75 if(std::abs(z) > 0.4)
LOG_WARN(
"The value of z in BXsDecay::a(double z) shouldn't exceed 0.4.");
77 double Lz = std::log(z);
80 return 16./9.*((5./2.-
PI2/3.-3.*
ZETA3+(5./2.-3./4.*
PI2)*Lz+Lz2/4.+Lz2*Lz/12.)*z
81 +(7./4.+2./3.*
PI2-0.5*
PI2*Lz-Lz2/4.+Lz2*Lz/12.)*std::pow(z,2)+(-7./6.-
PI2/4.+2.*Lz-3./4.*Lz2)*std::pow(z,3)
82 +(457./216.-5./18.*
PI2-Lz/72.-5./6.*Lz2)*std::pow(z,4)+(35101./8640.-35./72.*
PI2-185./144.*Lz-35./24.*Lz2)*std::pow(z,5)
83 +(67801./8000.-21./20.*
PI2-3303./800.*Lz-63./20.*Lz2)*std::pow(z,6));
87 if(
fpeq(z, 1.))
return 0.0316;
88 if(
fpeq(z, 0.))
return 0.;
89 if(std::abs(z) > 0.4)
LOG_WARN(
"The value of z in BXsDecay::b(double z) shouldn't exceed 0.4.");
91 double Lz = std::log(z);
94 return -8./9.*((-3.+
PI2/6.-Lz)*z-2./3.*
PI2*std::pow(z,1.5)+(0.5+
PI2-2.*Lz-0.5*Lz2)*z*z
95 +(-25./12.-
PI2/9.-19./18.*Lz+2.*Lz2)*z*z*z+(-1376./225.+137./30.*Lz+2.*Lz2+2./3.*
PI2)*std::pow(z,4)
96 +(-131317./11760.+887./84.*Lz+5.*Lz2+5./3.*
PI2)*std::pow(z, 5)+(-2807617./97200.+16597./540.*Lz+14.*Lz2+14./3.*
PI2)*std::pow(z,6));
101 return -2 * std::pow(std::atan(std::sqrt(t / (4 - t))), 2);
103 double L = std::log((std::sqrt(t) + sqrt(t - 4)) / 2);
108 auto i1 = [
this, z] (
double t) {
109 return (1 - z * t) * std::pow(std::abs(
G(t) / t + 0.5), 2);
112 auto i2 = [
this, z] (
double t) {
113 return std::pow((1 - z * t) * std::abs(
G(t) / t + 0.5), 2);
116 double c = (1 - delta) / z;
118 double I2 =
integrate(i2, c, 1 / z, 1e-4);
120 return 16. * z * (delta *
I1 + I2) / 27.;
124 auto i1 = [
this] (
double t) {
125 return std::real(
G(t) + 0.5 * t);
128 auto i2 = [
this, z] (
double t) {
129 return (1 - z * t) * std::real(
G(t) + 0.5 * t);
132 double c = (1 - delta) / z;
134 double I2 =
integrate(i2, c, 1 / z, 1e-4);
136 return -8. * std::pow(z, 2) * (delta *
I1 + I2) / 9.;
141 double phi47A=
PI/54.*(3.*sqrt(3.)-
PI)+d*d*d/81.-25./108.*d*d+5./54.*d+2./9.*(d*d+2.*d+3.)*
pow(atan(sqrt((1.-d)/(3.+d))),2.)-1./3.*(d*d+4.*d+3.)*sqrt((1.-d)/(3.+d))*atan(sqrt((1.-d)/(3.+d)));
142 double phi47B=(34.*d*d+59.*d-18.)/486.*d*d*log(d)/(1.-d)+(433.*d*d*d+429.*d*d-720.*d)/2916.;
143 return phi47A+phi47B;
146 double ld = std::log(delta);
147 return -2 * std::pow(ld, 2) / 3 - 7 * ld / 3 - 31. / 9 + 10 * delta / 3 + std::pow(delta, 2) / 3 - 2 * std::pow(delta, 3) / 9 + delta * (delta - 4) * ld / 3;
151 return 8 * (
Li2(1 - delta) -
PI2 / 6 - delta * std::log(delta) + 9 * delta / 4 - std::pow(delta, 2) / 4 + std::pow(delta, 3) / 12) / 9;
155 double u = 1 - delta;
156 double a = delta * (delta + 2) + 4 * std::log(u);
157 double b = 4 *
Li2(u) - 2 *
PI2 / 3 - delta * (delta + 2) * std::log(delta) + 8 * std::log(u) - 2 * std::pow(delta, 3) / 3 + 3 * std::pow(delta, 2) + 7 * delta;
158 return (-2 * std::log(cache.
m_b_kin / cache.
m_s) *
a +
b) / 27;
162 std::array<std::array<double, 8>, 8> phi {};
164 phi[1][1] =
phi_22(z, delta);
165 phi[1][6] =
phi_27(z, delta);
166 phi[3][6] =
phi_47(delta);
167 phi[6][6] =
phi_77(delta);
168 phi[6][7] =
phi_78(delta);
169 phi[7][7] =
phi_88(delta);
170 phi[0][0] = phi[1][1] / 36.0;
171 phi[0][1] = -phi[1][1] / 3.0;
172 phi[0][6] = -phi[1][6] / 6.0;
173 phi[0][7] = phi[1][6] / 18.0;
174 phi[1][7] = -phi[1][6] / 3.0;
175 phi[3][7] = -phi[3][6] / 3.0;
180 std::array<double, 8> r {};
185 r[0] = 833. / 729 - (az + bz) / 3;
186 r[1] = -1666. / 243 + 2 * (az + bz);
187 r[2] = 2392. / 243 + 8 *
PI / (3 * std::sqrt(3)) + 32 * cache.
X_b / 9 - a1 + 2 * b1;
188 r[3] = -761. / 729 - 4 *
PI / (9 * std::sqrt(3)) - 16 * cache.
X_b / 27 + a1 / 6 + 5 * b1 /3 + 2 * bz;
189 r[4] = 56680. / 243 + 32 *
PI / (3 * std::sqrt(3)) + 128 * cache.
X_b / 9 - 16 * a1 + 32 * b1;
190 r[5] = 5710. / 729 - 16 *
PI / (9 * std::sqrt(3)) - 64 * cache.
X_b / 27 - 10 * a1 / 3 + 44 * b1 / 3 + 12 * az + 20 * bz;
191 r[6] = -182. / 9 + 8 *
PI2 / 9;
192 r[7] = 44. / 9 - 8 *
PI2 / 27;
197 std::array<std::array<double, 8>, 8>
K {};
198 auto r =
r_1(cache.
z);
201 for (
size_t i = 0; i < 8; i++) {
202 for (
size_t j = i; j < 8; j++) {
203 K[i][j] = 2. * (1 +
kron(i, j)) * phi[i][j];
207 for (
size_t i = 0; i < 6; i++)
213 for (
size_t i = 0; i < 8; i++) {
214 for (
size_t j = i; j < 8; j++) {
223 if(
fpeq(z, 0.))
return 0.;
225 return -std::log(1.-z)*std::log(1.-z)/(1.-z)/2.-13./36.*std::log(1.-z)/(1.-z)+(-
PI2/18.+85./72.)/(1.-z)+(z*z-3.)/6./(z-1.)*
Li2(1.-z)+(z*z-3.)/6./(z-1.)*std::log(1.-z)*std::log(z)-(1.+z)*std::log(1.-z)*std::log(1.-z)/4.-(6.*z*z-25.*z-1.)*std::log(1.-z)/36.+std::log(1.-z)/z/2.-(1.+z)*
PI2/36.+(-49.+38.*z*z-55.*z)/72.;
229 double Lz = std::log(z);
230 double Lz2 = Lz * Lz;
231 double Lz3 = Lz2 * Lz;
232 double Lz4 = Lz2 * Lz2;
233 return 67454./6561.-124./729.*
PI2
234 -4./1215.*(11280.-1520.*
PI2-171.*
pow(
PI,4.)-5760.*
ZETA3+6840.*Lz-1440.*
PI2*Lz-2520.*
ZETA3*Lz+120.*Lz2+100.*Lz3-30.*Lz4)*z
235 -64./243.*
PI2*(43.-12.*std::log(2.)-3.*Lz)*
pow(z,1.5)
236 -2./1215.*(11475.-380.*
PI2+96.*
pow(
PI,4.)+7200.*
ZETA3-1110.*Lz-1560.*
PI2*Lz+1440.*
ZETA3*Lz+990.*Lz2+260.*Lz3-60.*Lz4)*z*z
237 +2240./243.*
PI2*
pow(z,2.5)
238 -2./2187.*(62471.-2424.*
PI2-33264.*
ZETA3-19494.*Lz-504.*
PI2*Lz-5184.*Lz2+2160.*Lz3)*z*z*z
239 -2464./6075.*
PI2*
pow(z,3.5)
240 +(-15103841./546750.+7912./3645.*
PI2+2368./81.*
ZETA3+147038./6075.*Lz+352./243.*
PI2*Lz+88./243.*Lz2-512./243.*Lz3)*z*z*z*z;
244 return 0.01370+0.3357*delta-0.08668*delta*delta+(0.3575+1.825*delta-0.3743*delta*delta)*sqrt(z)+(-2.306-5.8*delta-6.226*delta*delta)*z+(3.449-0.548*delta+17.27*delta*delta)*
pow(z,1.5);
249 return -0.1755-1.455*delta+1.119*delta*delta+(0.7260-7.23*delta+5.977*delta*delta)*sqrt(z)+(13.79+113.7*delta-100.4*delta*delta)*z+(-145.1-307.1*delta+388.5*delta*delta)*
pow(z,1.5)+(475.2+313.*delta-775.8*delta*delta)*z*z+(-509.7-126.1*delta+646.2*delta*delta)*
pow(z,2.5);
254 return 0.02605+0.1679*delta-0.197*delta*delta+(-0.03801+0.6017*delta-0.7558*delta*delta)*sqrt(z)+(2.755-10.03*delta+11.27*delta*delta)*z+(-27.05+68.47*delta-72.51*delta*delta)*
pow(z,1.5)+(85.87-289.3*delta+297.7*delta*delta)*z*z+(-91.53+399.8*delta-399.9*delta*delta)*
pow(z,2.5);
258 return 4./27.*(((1.+0.5*delta)*delta*log(delta)-6.*log(1.-delta)-2.*
Li2(1.-delta)+
PI2/3.-16./3.*delta-5./3.*delta*delta+delta*delta*delta/9.)*log(cache.
m_b_kin/cache.
m_s)-2.*
Li3(delta)+(5.-2.*log(delta))*(
Li2(1.-delta)-
PI2/6.)-
PI2/12.*delta*(2.+delta)+(0.5*delta+0.25*delta*delta-log(1.-delta))*
pow(log(delta),2.)+(151./18.-
PI2/3.)*log(1.-delta)+(-53./12.-19./12.*delta+2./9.*delta*delta)*delta*log(delta)+787./72.*delta+227./72.*delta*delta-41./72.*delta*delta*delta);
262 auto f = [
this] (
double z) {
270 std::array<std::array<double, 8>, 8> phi {};
271 std::array<std::array<double, 8>, 8> phi_ij_1 =
phi_1(delta, z);
273 phi[1][1] = cache.
beta_0 * (phi_ij_1[1][1] * cache.
L_b +
h22(z, delta));
274 phi[1][6] = cache.
beta_0 * (phi_ij_1[1][6] * cache.
L_b +
h27(z, delta));
275 phi[1][7] = cache.
beta_0 * (phi_ij_1[1][7] * cache.
L_b +
h28(z, delta));
276 phi[6][6] = cache.
beta_0 * (phi_ij_1[6][6] * cache.
L_b +
h77(delta));
277 phi[7][7] = cache.
beta_0 * (phi_ij_1[7][7] * cache.
L_b +
h88(delta));
278 phi[0][0] = phi[1][1] / 36.0;
279 phi[0][1] = -phi[1][1] / 3.0;
280 phi[0][7] = -phi[1][7] / 6.0;
285 std::array<double, 8> r {};
286 double Lb = cache.
L_b;
287 double Lb2 = Lb * Lb;
288 r[1] = -3. / 2 *
r22(z) + 2 * (
a(z) +
b(z) - 290. / 81.) * Lb - 100. / 81 * Lb2;
289 r[0] = -1. / 6 * r[1];
290 r[6] = -3803. / 54 - 46 *
PI2 / 27 + 80 *
ZETA3 / 3 + (8 *
PI2 / 9 - 98. / 3) * Lb - 16 * Lb2 / 3;
291 r[7] = 1256. / 81 - 64 *
PI2 / 81 - 32 *
ZETA3 / 9 + (-8 *
PI2 / 27 + 188. / 27) * Lb + 8 * Lb2 / 9;
296 std::array<std::array<double, 8>, 8>
K {};
300 for (
size_t i = 0; i < 8; i++) {
301 for (
size_t j = i; j < 8; j++) {
302 K[i][j] = 2. * (1 +
kron(i, j)) * phi[i][j];
306 K[0][6] += cache.
beta_0 * r[0];
307 K[1][6] += cache.
beta_0 * r[1];
308 K[6][6] += cache.
beta_0 * r[6];
309 K[6][7] += cache.
beta_0 * r[7];
311 for (
size_t i = 0; i < 8; i++) {
312 for (
size_t j = i; j < 8; j++) {
321 if(
fpeq(z, 0.))
return 0;
323 return 0.5*
pow(log(1.-z),3.)/(1.-z)+21./8.*
pow(log(1.-z),2.)/(1.-z)
324 +(-
PI2/6.+271./48.)*log(1.-z)/(1.-z)
326 +(4.*z-4.*z*z+1.+z*z*z)/2./(z-1.)*(
Li3(z/(2.-z))-
Li3(-z/(2.-z))-2.*
Li3(1./(2.-z))+
ZETA3/4.)
327 +((z*z*z-2.*z*z+2.*z-3.)/2./(z-1.)*log(1.-z)-(-140.*
pow(z,4.)+219.*
pow(z,3.)-124.*z*z+28.*z+27.*
pow(z,5.)+9.*
pow(z,6.)+
pow(z,8.)-6.*
pow(z,7.)-6.)/12./z/
pow(z-1.,3.))*
Li2(z-1.)
328 -2.*
pow(z-1.,2.)*
Li3(z-1.)+((2.*
pow(z,3.)-9.*z*z-2.*z+11.)/4./(z-1.)*log(1.-z)-(-27.*z*z+8.*
pow(z,6.)-9.+21.*z-3.*z*z*z+64.*
pow(z,4.)-46.*
pow(z,5.))/12./z/
pow(z-1.,3.))*
Li2(1.-z)
329 -(-17.*z*z+4.*z+4.*z*z*z+11.)/4./(z-1.)*
Li3(1.-z)-(2.*z*z*z+13.-9.*z*z)/4./(z-1.)*
Li3(z)+(4.*z-4.*z*z+1.+z*z*z)/6./(z-1.)*
pow(log(2.-z),3.)
330 +(-(4.*z-4.*z*z+1.+z*z*z)/2./(z-1.)*
pow(log(1.-z),2.)-(-140.*
pow(z,4.)+219.*
pow(z,3.)-124.*z*z+28.*z+27.*
pow(z,5.)+9.*
pow(z,6.)+
pow(z,8.)-6.*
pow(z,7.)-6.)/12./z/
pow(z-1.,3.)*log(1.-z) - (4.*z-4.*z*z+1.+z*z*z)/(z-1.)*
PI2/12.)*log(2.-z)
331 +(z*z*z-2.*z*z+2.*z+1.)/4./z*
pow(log(1.-z),3.)+(
pow(z,5.)-3.*
pow(z,4.)+5.*
pow(z,3.)+7.*z*z+5.*z-9.)/24./z*
pow(log(1.-z),2.)
332 +(-(z*z+8.*z-11.)/8./(z-1.)*
pow(log(1.-z),2.)-(-27.*z*z+8.*
pow(z,6.)-9.+21.*z-3.*z*z*z+64.*
pow(z,4.)-46.*
pow(z,5.))/12./z/
pow(z-1.,3.)*log(1.-z))*log(z)
333 +((-z*z+z-3.)*
PI2/12.-(4.*
pow(z,5.)+151.*z+2.*
pow(z,4.)-48.*z*z-41.*z*z*z-36.)/48./z*(z-1.))*log(1.-z)
334 -(z-2.)*(
pow(z,4.)-z*z*z-11.*z*z+13.*z+3.)/z*
PI2/72. + (z*z*z-11.*z*z-2.*z+18.)/4./(z-1.)*
ZETA3-(8.*
pow(z,4.)-244.*z*z*z+175.*z*z+598.*z-569.)/96./(z-1.);
338 if(
fpeq(z, 0.))
return 0;
340 return 11./8.*
pow(log(1.-z),2.)/(1.-z)+(
PI2/12.+95./144.)*log(1.-z)/(1.-z)+(
ZETA3/4.-905./288.+17.*
PI2/72.)/(1.-z)
341 -(4.*z-4.*z*z+1.+z*z*z)/4./(z-1.)*(
Li3(z/(2.-z))-
Li3(-z/(2.-z))-2.*
Li3(1./(2.-z))+
ZETA3/4.)+
pow(z-1.,2.)*
Li3(z-1.)
342 +(-(z*z*z-2.*z*z+2.*z-3.)/4./(z-1.)*log(1.-z)+(-140.*
pow(z,4.)+219.*z*z*z-124.*z*z+28.*z+27.*
pow(z,5.)+9.*
pow(z,6.)+
pow(z,8.)-6.*
pow(z,7.)-6.)/24./z/
pow(z-1.,3.))*
Li2(z-1.)
343 +(z*(3.-z)/4.*log(1.-z)+(1.+z)*(2.*
pow(z,4.)-29.*
pow(z,3.)+73.*z*z-57.*z+15.)/24./
pow(z-1.,3.))*
Li2(1.-z)+(4.*z-4.*z*z+1.+z*z*z)/4./(z-1.)*
Li3(z)
344 +(z-3.)*z/2.*
Li3(1.-z)-(4.*z-4.*z*z+1.+z*z*z)/12./(z-1.)*
pow(log(2.-z),3.)+((4.*z-4.*z*z+1.+z*z*z)/4./(z-1.)*
pow(log(1.-z),2.)
345 +(-140.*
pow(z,4.)+219.*
pow(z,3.)-124.*z*z+28.*z+27.*
pow(z,5.)+9.*
pow(z,6.)+
pow(z,8.)-6.*
pow(z,7.)-6.)/24./z/
pow(z-1.,3.)*log(1.-z)+(4.*z-4.*z*z+1.+z*z*z)*
PI2/24./(z-1.))*log(2.-z)
346 +(1.+z)*(2.*
pow(z,4.)-29.*z*z*z+73.*z*z-57.*z+15.)/24./
pow(z-1.,3.)*log(1.-z)*log(z)-
pow(z-1.,2.)/8.*
pow(log(1.-z),3.)-(z+2.)*(z*z*z-5.*z*z+9.*z-35.)/48.*
pow(log(1.-z),2.)
347 +((z*z-z+3.)*
PI2/24.+(6.*
pow(z,5.)+72.-392.*
pow(z,3.)+51.*
pow(z,4.)+219.*z*z+92.*z)/144./z/(z-1.))*log(1.-z)
348 +(
pow(z,5.)-3.*
pow(z,4.)-3.*
pow(z,3.)+34.*z*z-24.*z+3.)/z*
PI2/144.
349 -(z*z*z-10.*z*z+6.*z+7.)/8./(z-1.)*
ZETA3+(12.*
pow(z,4.)-754.*
pow(z,3.)+1191.*z*z+264.*z-761.)/288./(z-1.);
353 auto f = [
this] (
double z) {
354 return (16 *
F2a(z) + 36 *
F2na(z) + 87 *
F2nf(z)) / 9.;
357 double phi_77_A =
integrate(
f, 0, 1 - delta, 1e-3);
358 double ld = std::log(delta);
359 return -4 * phi_77_A - 8 *
PI * cache.
alpha_s_upsilon * (2 * delta * ld * ld + (4 + delta * (7 + delta * (-2 + delta))) * ld + 7 + delta * (-8. / 3 + delta * (-7 + delta * (4 - 4 * delta / 3)))) / (27 * delta);
363 std::array<std::array<double, 8>, 8>
K {};
364 std::array<std::array<double, 8>, 8>
K_1 = this->
K_1();
365 double L_D = cache.
L_b - std::log(z);
366 K[1][1] = std::pow((218. / 243 - 208. * L_D / 81), 2);
367 K[0][0] =
K[1][1] / 36.0;
368 K[0][1] =
K[1][0] = -
K[1][1] / 6.0;
369 K[1][6] =
K[6][1] = (218./243.-208./81.*L_D) *
K_1[6][6] + (127. / 324. - 35. * L_D / 27) *
K_1[6][7] + 2. * (1. - L_D) * (
K_1[3][6] - cache.
beta_0 * (26. / 81. - 4. * cache.
L_b / 27.)) / 3. + L_D * (1150. - 4736. * L_D) / 729. - 1617980. / 19683. + 20060. *
ZETA3 / 243. + 1664. * cache.
L_c / 81.;
370 K[1][7] =
K[7][1] = (218./243.-208./81.*L_D) *
K_1[6][7] + (127. / 324. - 35. * L_D / 27) *
K_1[7][7] + 2. * (1. - L_D) *
K_1[3][7] / 3.;
371 K[0][6] =
K[6][0] = -
K[1][6] / 6. + (5. / 16. - 3. * L_D / 4.) *
K_1[6][7] - 1237. / 729. + 232. *
ZETA3 / 27. + L_D * (-20. + 70. * L_D) / 27.;
372 K[0][7] =
K[7][0] = -
K[1][7] / 6. + (5. / 16. - 3. * L_D / 4.) *
K_1[7][7];
374 K[6][7] =
K[7][6] = (-50. / 3. + 8. *
PI2 / 3. - 2. * L_D / 3.) *
K_1[6][7] + L_D * (-112. / 81. + 16. * L_D / 27.) + 364. / 243.;
375 K[7][7] = (-50. / 3. + 8. *
PI2 / 3. - 2. * L_D / 3.) *
K_1[7][7];
382 return -1666. / 243 + 2 * (104 * std::log(z) + 314) / 81;
386 double lz = std::log(z);
387 double lz2 = lz * lz;
388 double lz3 = lz2 * lz;
389 return z * (224. / 9 - 112 *
PI2 / 27 - 32 *
ZETA3 / 3 + (112. / 9 - 8 *
PI2 / 3) * lz + 16 * lz2 / 9 + 8 * lz3 / 27 )
390 + std::pow(z, 2) * (128. / 9 - 16 *
PI2 / 27 + (64. / 9 - 32 *
PI2 / 9) * lz + 8 * lz2 / 9 + 16 * lz3 / 27 )
391 + std::pow(z, 1.5) * ( 16 *
PI2 / 9 )
392 + std::pow(z, 3) * (620. / 81 - 56 *
PI2 / 27 + 392. / 27 * lz - 56 * lz2 / 3 )
393 + std::pow(z, 4) * (397372. / 6075 - 704 *
PI2 / 81 - 18512. / 405 * lz - 704 * lz2 / 27 )
394 + std::pow(z, 5) * (-1199585. / 23814 - 1900 *
PI2 / 81 - 82130. / 567 * lz - 1900 * lz2 / 27 )
395 + std::pow(z, 6) * (-17917342. / 91125 - 3248 *
PI2 / 45 - 988402. / 2025 * lz - 3248 * lz2 / 15 );
399 double lz = std::log(z);
400 return 27650. / 6561 + lz * (112. / 243 + 8 * lz / 9);
405 double r22_0 {67454. / 6561 - 124 *
PI2 / 729};
412 double K1_77 = 4 * phi_77_1 - 182. / 9 + 8 *
PI2 / 9 -
gamma_i7[6] * cache.
L_b;
413 double K77rem_z0 = (K1_77-4.*phi_77_1+2./3.*cache.
L_b)*K1_77-587708./729.-628./405.*
pow(
PI,4.)
414 +32651./729.*
PI2+428./27.*
PI2*log(2.)+25150./81.*
ZETA3-448./9.*cache.
L_b*cache.
L_b+(80./9.*
PI2-2524./9.)*cache.
L_b
419 auto target = [
this, r21_0, r22_0, x1, x2, x5] (
double z) {
423 double a1 = std::pow(std::abs(
r2_large_z(z)), 2) - std::pow(std::abs(r21_0), 2);
425 return y - a1 * x1 - a2 * x2 - x5;
428 double a_3_z0 =
r2_large_z(cache.
z0) - std::real(r21_0);
429 double a_3_z1 =
r2_large_z(cache.
z1) - std::real(r21_0);
430 double a_4 = 2.*(4./3.-4./81.);
431 double y_0 = target(cache.
z0);
432 double y_1 = target(cache.
z1);
434 double x3 = (y_1 - y_0) / (a_3_z1 - a_3_z0);
435 double x4 = (y_0 * a_3_z1 - y_1 * a_3_z0) / (a_4 * (a_3_z1 - a_3_z0));
436 double Lz = std::log(cache.
z);
437 complex_t r_21 = {-1666. / 243 + 2 * (
a(cache.
z) +
b(cache.
z)),
438 -80./81.*
PI+2.*
PI*(16./9.*((4.-
PI2/3.+Lz+Lz*Lz)*cache.
z/2.+(0.5-
PI2/6.-Lz-0.5*Lz*Lz)*cache.
z*cache.
z+
pow(cache.
z,3.)+5./9.*
pow(cache.
z,4.))-8./9.*(-cache.
z+(1.-2.*Lz)*cache.
z*cache.
z+(-10./9.+4./3.*Lz)*
pow(cache.
z,3.)+
pow(cache.
z,4.)))};
440 return x1 * (std::pow(std::abs(r_21), 2) - std::pow(std::abs(r21_0), 2))
441 + x2 * (
r22(cache.
z) - r22_0)
442 + x3 * std::real(r_21 - r21_0)
456 return p0 + k * ((p11 + p21) + k * (p12 + p22 + p32));
461 for (
size_t i = 0; i <
a_i.size(); i++)
462 Kc +=
d_i[i] * std::pow(cache.
eta,
a_i[i]);
464 double Kt = std::real(
466 - 8. * (cache.
C_w[
WCoef::C8] + 1. / 3) * (std::pow(cache.
eta, 4.0 / 23.0) - std::pow(cache.
eta, 2.0 / 23.0)) / 3.
468 double eta_factor = std::pow(cache.
eta, 6.0 / 23.0) + std::pow(cache.
eta, -12.0 / 23.0);
473 return -190 * std::pow(eta, -35. / 23) / 8073 - 359 * std::pow(eta, -17. / 23) / 3105 + 4276 * std::pow(eta, -12. / 23) / 121095
474 + 350531 * std::pow(eta, -9. / 23) / 1009125 + 2 * std::pow(eta, -7. / 23) / 4347 - 5956 * std::pow(eta, 6. / 23) / 15525
475 + 38380 * std::pow(eta, 14. / 23) / 169533 - 748 * std::pow(eta, 16. / 23) / 8625;
479 return -32 * std::pow(eta, -9. / 23) / 575 + 32 * std::pow(eta, -7. / 23) / 1449 + 640 * std::pow(eta, 14. / 23) / 1449 - 704 * std::pow(eta, 16. / 23) / 1725;
483 return (32 * std::pow(eta, -9. / 23) / 75 - 40 * std::pow(eta, -7. / 23) / 69 + 88 * std::pow(eta, 16. / 23) / 575) * cache.
C_w[
WCoef::C7] +
C8_em(eta) * cache.
C_w[
WCoef::C8] +
C2_em(eta);
495 double delta_b = cache.
m_b_kin - 4.55;
496 double delta_c = cache.
m_c_3gev - 1.0;
498 double g = 1. + rho * (-8. + rho * (-12. * std::log(rho) + rho * (8. - rho)));
501 return g * (0.849 - 0.92 * delta_as + 0.0596 * delta_b - 0.2237 * delta_c - 0.0167 * cache.
mu_G2 - 0.203 * cache.
rho_D3 + 0.004 * cache.
rho_LS3);
505 double p = this->
P();
506 double n = this->
N();
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
#define LOG_WARN(...)
Macro for logging warning messages.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
double h27(double z, double delta)
std::array< std::array< double, 8 >, 8 > K_2_b0()
double phi_77_rem(double phi_77_int)
std::array< double, 8 > r_1(double z)
double h28(double z, double delta)
double phi_47(double delta)
double dr2_dlogz(double z)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
double gen_P00(const std::array< std::array< double, 8 >, 8 > &K)
std::array< std::array< double, 8 >, 8 > phi_2_b0(double delta, double z)
static constexpr std::array< double, 8 > a_i
std::array< std::array< double, 8 >, 8 > K_1()
std::array< double, 8 > r_hat_2(double z)
double h22(double z, double delta)
double r2_large_z(double z)
void load_params() override
Load and cache parameters needed by this decay.
double phi_77(double delta)
double phi_22(double z, double delta)
std::array< std::array< double, 8 >, 8 > phi_1(double delta, double z)
double phi_88(double delta)
complex_t C7_em(double eta)
double r22_large_z(double z)
double phi_78(double delta)
std::array< std::array< double, 8 >, 8 > K_2_rem(double z)
static constexpr std::array< double, 8 > gamma_i7
double gen_P01(const std::array< std::array< double, 8 >, 8 > &K)
static constexpr std::array< double, 8 > d_i
double phi_27(double z, double delta)
std::shared_ptr< IObsParameterProxy< ParamId, DataType, std::string, LhaID > > p
Parameter proxy for SM-like quantities used by the decay (may be SM/BSM depending on wiring).
std::shared_ptr< IObsWilsonProxy > w_proxy
Wilson proxy used at compute-time to query coefficients (matching/run).
static std::optional< Observables > enum_of(const IdOf< ObservableTag > &id)
Attempts to recover the enum value associated with an identifier.
static IdOf< ObservableTag > to_id(Observables e)
Converts an enum value to an IdOf<Tag>.
static std::string str(const IdOf< ObservableTag > &id)
Returns the string representation of an identifier.
static double alpha_s(double mu, MassType mass_b_type=MassType::POLE, MassType mass_t_type=MassType::POLE)
Computes the strong coupling constant α_s at scale μ.
static std::vector< WCoef > get_group(WGroup g)
Returns the list of Wilson coefficients belonging to a WGroup.
double integrate(RealValuedFunction f, double l, double u, double prec)
Performs numerical integration of a real-valued function of a real variable.
double Li3(double x)
Computes the trilogarithm function Li3(x).
double Li2(double x)
Computes the dilogarithm function Li2(x).
scalar_t pow(const scalar_t &base, const scalar_t &exp)
std::enable_if_t< not std::numeric_limits< T >::is_integer, bool > fpeq(T, T, std::size_t n=10)
Compares two floating point numbers with a given precision.
double f(double x)
Wilson special function f depending on x.
double kron(int x, int y)
Kronecker delta function.
Configuration for evaluating the strong coupling constant .
std::map< WCoef, complex_t > C_b_LO
std::map< WCoef, complex_t > C_b_NLO
std::map< WCoef, complex_t > C_w
std::map< WCoef, complex_t > C_b_NNLO
Configuration for computing a particle mass at a given scale.
Container for a computed observable value, optionally binned.
Composite identifier for a single parameter.