5 cache.
cc_res_mass = {3.096916, 3.68609, 3.77292, 4.039 , 4.153 , 4.421 };
6 cache.
cc_res_br = {5.93e-2 , 7.7e-3 , 1.1e-5 , 1.4e-5, 1.0e-5 , 1.1e-5};
7 cache.
cc_res_width_tot = {9.29e-5 , 3.04e-4, 2.73e-2, 8.0e-2, 1.03e-1, 6.2e-2};
8 cache.
cc_res_width_had = {8.147e-5, 2.9746e-4, 2.36e-2, 5.2e-2, 7.8e-2 , 4.3e-2};
24 cache.
z = std::pow(cache.
m_c_hat, 2);
25 cache.
L_b = std::log(mu_b / cache.
m_b_1S);
26 cache.
L_b_5GeV = std::log(mu_b / 5.0);
118 if (cfg.
gen != gen) {
144 for (
const auto& [
id, val] : C_B) {
147 for (
const auto& [
id, val] : C_P) {
150 for (
const auto& [
id, val] : C_S) {
157 for (
const auto& [
id, val] : C_B_LO) {
160 for (
const auto& [
id, val] : C_P_LO) {
169 for (
size_t i = 0; i < 3; i++)
174 return 1 - 8 * z + 8 *
pow(z, 3) -
pow(z, 4) - 12 *
pow(z, 2) * log(z);
182 double lw = log(1 - z);
183 double lz2 = lz * lz;
185 return -(1 - z2) * (25./4 - 239./3 * z + 25./4 * z2) + z * lz * (20. + 90. * z - 4./3 * z2 + 17./3 * z3)
186 + z2 * lz2 * (36. + z2) + (1. - z2) * (17./3. - 64./3. * z + 17./3. * z2) * lw - 4. * (1. + 30. * z2 + z4) * lz * lw
187 - (1. + 16. * z2 + z4) * (6. *
Li2(z) -
PI2) - 32. *
pow(z, 1.5) * (1. + z) * (
PI2 - 4. *
Li2(sqrt(z)) + 4. *
Li2(-sqrt(z)) - 2. * lz * log((1.-sqrt(z))/(1.+sqrt(z))));
191 return 77.-88.*z+24.*
pow(z,2.)-8.*
pow(z,3)+5.*
pow(z,4)+48.*log(z)+36.*
pow(z,2)*log(z);
195 return 3.-8.*z+24.*
pow(z,2)-24.*
pow(z,3)+5.*
pow(z,4)+12.*
pow(z,2)*log(z);
203 return 1./6./(s-1.)/(s-1.)*(24.*(1.+13.*s-4.*s*s)*
Li2(sqrt(s))+12.*(1.-17.*s+6.*s*s)*
Li2(s)+6.*s*(6.-7.*s)*log(s)
204 +24.*(1.-s)*(1.-s)*log(s)*log(1.-s)+12.*(-13.+16.*s-3.*s*s)*(log(1.-sqrt(s))-log(1.-s))
205 +39.-2.*
PI2+252.*s-26.*
PI2*s+21.*s*s+8.*
PI2*s*s-180.*sqrt(s)-132.*s*sqrt(s));
209 return -1./6./(s-1.)/(s-1.)*(48.*s*(-5.+2.*s)*
Li2(sqrt(s))+24.*(-1.+7.*s-3.*s*s)*
Li2(s)+6.*s*(-6.+7.*s)*log(s)
210 -24.*(1.-s)*(1.-s)*log(s)*log(1.-s)+24.*(5.-7.*s+2.*s*s)*(log(1.-sqrt(s))-log(1.-s))
211 -21.-156.*s+20.*
PI2*s+9.*s*s-8.*
PI2*s*s+120.*sqrt(s)+48.*s*sqrt(s));
215 if(t>4.)
return -2.*
I*
PI*log((sqrt(t)+sqrt(t-4.))/2.)-
PI2/2.+2.*
pow(log((sqrt(t)+sqrt(t-4.))/2.),2.);
216 else return 2.*
PI*atan(sqrt((4.-t)/t))-
PI2/2.-2.*
pow(atan(sqrt((4.-t)/t)),2.);
220 if(t>4.)
return -
I*
PI*sqrt((t-4.)/t)-2.+2.*sqrt((t-4.)/t)*log((sqrt(t)+sqrt(t-4.))/2.);
221 else return PI*sqrt((4.-t)/t)-2.-2.*sqrt((4.-t)/t)*atan(sqrt((4.-t)/t));
225 return -2.+4./(w-s)*(z*
Gm1(s/z)-z*
Gm1(w/z)-s/2.*
G0(s/z)+s/2.*
G0(w/z));
229 return 2.*(
G0(s/z) -
G0(w/z));
233 return 8./27.*(w-s)*(1.-w)*(1.-w)/s/w/w/w*((3.*w*w+2.*s*s*(2.+w)-s*w*(5.-2.*w))*
pow(abs(Delta_23),2.)
234 +(2.*s*s*(2.+w)+s*w*(1.+2.*w))*
pow(abs(Delta_27),2.)
235 +4.*s*(w*(1.-w)-s*(2.+w))*
real(Delta_23*conj(Delta_27)));
239 return 8./3./s/w*(((1.-w)*(4.*s*s-s*w+w*w)+s*w*(4.+s-w)*log(w))*Delta_23
240 -(4.*s*s*(1.-w)+s*w*(4.+s-w)*log(w))*Delta_27);
244 return 8./9./s/w/(w-s)*((
pow(w-s,2.)*(2.*s-w)*(1.-w))*Delta_23
245 -(2.*s*
pow(w-s,2.)*(1.-w))*Delta_27
246 +s*w*((1.+2.*s-2.*w)*Delta_23-2.*(1.+s-w)*Delta_27)*log(s/((1.+s-w)*(w*w+s*(1.-w)))));
250 return 4./3./w*((2.*s*(1.-w)*(s+w)+4.*s*w*log(w))*Delta_23
251 -(2.*s*(1.-w)*(s+w)+w*(3.*s+w)*log(w))*Delta_27);
255 return -2./9./(2.+s)*(2.*(1.-s)*(1.-s)*log(1.-s)+6.*s*(2.-2.*s-s*s)/(1.-s)/(1.-s)*log(s)+(11.-7.*s-10.*s*s)/(1.-s));
259 return 8./9./s*(25.-2.*
PI2-27.*s+3.*s*s-s*s*s+12.*(s+s*s)*log(s)+6.*
pow((
PI/2.-atan((2.-4.*s+s*s)/(2.-s)*sqrt(s)*sqrt(4.-s))),2.)
260 -24.*
real(
CLi2((s-
I*sqrt(s)*sqrt(4.-s))/2.))-12.*((1.-s)*sqrt(s)*sqrt(4.-s)-atan((sqrt(s)*sqrt(4.-s))/(2.-s)))
261 *(atan(sqrt((4.-s)/s))-atan((sqrt(s)*sqrt(4.-s))/(2.-s))));
265 return 4./27./s*(-8.*
PI2+(1.-s)*(77.-s-4.*s*s)-24.*
Li2(1.-s)+3.*(10.-4.*s-9.*s*s+8.*log((sqrt(s))/(1.-s)))*log(s)
266 +48.*
real(
CLi2((3.-s)/2.+
I*(1.-s)*sqrt(4.-s)/2./sqrt(s)))-6.*((20.*s+10.*s*s-3.*s*s*s)/sqrt(s)/sqrt(4.-s)-8.*
PI+8.*atan(sqrt((4.-s)/s)))
267 *(atan(sqrt((4.-s)/s))-atan((sqrt(s)*sqrt(4.-s))/(2.-s))));
271 return 2./3.*(s*(4.-s)-3.-4.*log(s)*(1.-s-s*s)
272 -8.*
real(
CLi2(s/2.+
I*sqrt(s)*sqrt(4.-s)/2.)-
CLi2((-2.+s*(4.-s))/2.+
I*((2.-s)*sqrt(s)*sqrt(4.-s))/2.))
273 +4.*(s*s*sqrt((4.-s)/s)+2.*atan(sqrt(s)*sqrt(4.-s)/(2.-s)))*(atan(sqrt((4.-s)/s))-atan((sqrt(s)*sqrt(4.-s))/(2.-s))));
277 return -4./9./(1.+2.*s)*(2.*(1.-s)*(1.-s)*log(1.-s)+3.*s*(1.+s)*(1.-2.*s)/(1.-s)/(1.-s)*log(s)+3.*(1.-3.*s*s)/(1.-s));
281 return -4.*(1.-s)*(1.-s)/9./s*log(1.-s)-4.*s*(3.-2.*s)*log(s)/9./(1.-s)/(1.-s)-2./9.*(5.-3.*s)/(1.-s);
285 auto f = [&] (
double w) {
286 return -s/(s-w)/(1.-s)/(1.-s)*((4.*(1.-s)*(1.+w)-2.*fabs(s-w*w)*(w*(3.+w)-s*(1.-w))/w/w
287 +(2.+5.*w+2.*w*w+s*(3.+4.*w))*log((s+w*w+fabs(s-w*w))/2./w)-(s-w)/s/sqrt((1.+w)*(1.+w)-4.*s)
288 *(w*(2.-w)-s*(6.-5.*w))*(log(1.+w-s*(3.-w)+(1.-s)*sqrt((1.+w)*(1.+w)-4.*s))
289 -log(s*(1.-3.*w)+w*w*(1.+w)+fabs(s-w*w)*sqrt((1.+w)*(1.+w)-4.*s))))*
Delta_i_23(s, z, w)
290 -(2.*(1.-s)*(1.+2.*w)-2.*fabs(s-w*w)*(w*(2.+w)-s*(1.-w))/w/w
291 +2.*(s*(1.+2.*w)+w*(2.+w))*log((s+w*w+fabs(s-w*w))/2./w)
292 +4.*(1.-w)*(s-w)/sqrt((1.+w)*(1.+w)-4.*s)*(log(1.+w-s*(3.-w)+(1.-s)*sqrt((1.+w)*(1.+w)-4.*s))
293 -log(s*(1.-3.*w)+w*w*(1.+w)+fabs(s-w*w)*sqrt((1.+w)*(1.+w)-4.*s))))*
Delta_i_27(s, z, w));
300 return -5./2.+1./3./(1.-3.*s)-1./3.*s*(6.-7.*s)*log(s)/(1.-s)/(1.-s)-1./9.*(3.-7.*s+4.*s*s)*log(1.-s)/s+
f_7(s)/3.;
304 return 1./6./(1.-s)/(1.-s)*(3.*((1.-sqrt(s))*(1.-sqrt(s))*(23.-6.*sqrt(s)-s)+4.*(1.-s)*(7.+s)*log(1.+sqrt(s))
305 +2.*s*(1.+s-log(s))*log(s))+2.*(-3.*
PI2*(1.+2.*s)+6.*(3.-s)*s*log(2.-sqrt(s))
306 -36.*(1.+2.*s)*
CLi2(-sqrt(s))-6.*sqrt(s/(4.-s))*(2.*(-3.+s)*s*atan((2.+sqrt(s))/sqrt(4.-s))
307 +2.*
PI*log(2.-sqrt(s))-atan(sqrt((4.-s)/s))*((-3.+s)*s+4.*log(2.-sqrt(s)))
308 -atan(sqrt(s*(4.-s))/(2.-s))*((-3.+s)*s-log(s))+4.*
real(
I*
CLi2((-2.+
I*sqrt(4.-s)+sqrt(s))*sqrt(s)/(
I*sqrt(4.-s)-sqrt(s))))
309 -2.*
real(
I*
CLi2(
I/2.*sqrt(4.-s)*(1.-s)*sqrt(s)+(3.-s)*s/2.)))));
313 return -5./2.+1./3./(1.-s)-1./3.*s*(6.-7.*s)*log(s)/(1.-s)/(1.-s)-2./9.*(3.-5.*s+2.*s*s)*log(1.-s)/s+
f_9(s)/3.;
317 return -4./3.*
Li2(s)-2./3.*log(s)*log(1.-s)-2./9.*
PI2-log(1.-s)-2./9.*(1.-s)*log(1.-s);
325 return sigma(s)+1./6.-8./3.*L_mu;
330 return 3./2./r*(1./sqrt(r*(1.-r))*atan(sqrt(r/(1.-r)))-1.);
332 return 3./2./r*(1./2./sqrt(r*(r-1.))*(log((1.-sqrt(1.-1./r))/(1.+sqrt(1.-1./r)))+
I*
PI)-1.);
338 23.787-120.948*s+365.373*s*s-584.206*s*s*s,
339 1.653+6.009*s-17.080*s*s+115.880*s*s*s
344 -148.061*d*d+492.539*d*d*d-1163.847*
pow(d,4.)+1189.528*
pow(d,5.),
345 -261.287*d*d+1170.856*d*d*d-2546.948*
pow(d,4.)+2540.023*
pow(d,5.)
351 return 11.488-36.987*s+255.330*s*s-812.388*s*s*s+1011.791*s*s*s*s;
354 return -221.904*d*d+900.822*d*d*d-2031.620*
pow(d,4.)+1984.303*
pow(d,5.);
360 109.311-846.039*s+2890.115*s*s-4179.072*s*s*s,
361 4.606+17.650*s-53.244*s*s+348.069*s*s*s
366 -298.730*d*d+828.0675*d*d*d-2217.6355*
pow(d,4.)+2241.792*
pow(d,5.),
367 -528.759*d*d+2095.723*d*d*d-4681.843*
pow(d,4.)+5036.677*
pow(d,5.)
373 double a =
pow(4 * z, 2);
375 -0.259023-28.424*s+205.533*s*s-603.219*s*s*s+722.031*s*s*s*s,
376 (-12.20658-215.8208*(s-a)+412.1207*(s-a)*(s-a))*(s-a)*(s-a)*(s>a)
382 77.0256*d*d-264.705*d*d*d+595.814*
pow(d,4.)-610.1637*
pow(d,5.),
383 135.858*d*d-618.990*d*d*d+1325.040*
pow(d,4.)-1277.170*
pow(d,5.)
405 return L_l*(s/2./(1.-s)/(2.+s)+log(1.-s)-s*(-3.+2.*s*s)/2./(1.-s)/(1.-s)/(2.+s)*log(s));
409 return L_l*(-0.5/(1.-s)+log(1.-s)+(-1.+2.*s-2.*s*s)/2./(1.-s)/(1.-s)*log(s));
413 return L_l*((7.-16.*sqrt(s)+9.*s)/4./(1.-s)+log(1.-sqrt(s))+(1.+3.*s)/(1.-s)*log((1.+sqrt(s))/2.)-s*log(s)/(1.-s));
417 return L_l*(-(1.+4.*s-8.*s*s)/6./(1.-s)/(1.+2.*s)+log(1.-s)-(1.-6.*s*s+4.*s*s*s)*log(s)/2./(1.-s)/(1.-s)/(1.+2.*s))
418 -
Li2(s)/9.+4./27.*
PI2-(37.-3.*s-6.*s*s)/72./(1.-s)/(1.+2.*s)-((41.+76.*s)*log(1.-s))/36./(1.+2.*s)
419 +((6.-10.*s-17.*s*s+14.*s*s*s)/18./(1.-s)/(1.-s)/(1.+2.*s)+17.*log(1.-s)/18.)*log(s)-(1.-6.*s*s+4.*s*s*s)*log(s)*log(s)/2./(1.-s)/(1.-s)/(1.+2.*s);
423 return L_l*(-(5.-16.*sqrt(s)+11.*s)/4./(1.-s)+log(1.-sqrt(s))+(1.-5.*s)/(1.-s)*log((1.+sqrt(s))/2.)-(1.-3.*s)*log(s)/(1.-s));
427 return L_l*(-(1.+4.*s-8.*s*s)/6./(1.-s)/(1.+2.*s)+log(1.-s)-(1.-6.*s*s+4.*s*s*s)*log(s)/2./(1.-s)/(1.-s)/(1.+2.*s));
434 return -4./9.*log(z2)+8./27.-4./9.;
437 return 8./27.-4./9.*(log(s)-
I*
PI);
440 return -4./9.*log(z2)+8./27.+16./9.*z2/s -2./9.*sqrt(1.-4.*z2/s)*(2.+4.*z2/s)*(log((1.+sqrt(1.-4.*z2/s))/(1.-sqrt(1.-4.*z2/s)))-
I*
PI);
442 return -4./9.*log(z2)+8./27.+16./9.*z2/s -4./9.*sqrt(4.*z2/s-1.)*(2.+4.*z2/s)*atan(1./sqrt(4.*z2/s-1.));
446 return -4./9.*log(z2)+8./27.+16./9.*z2/s;
450 double m_V_hat = m_V / cache.
m_b_1S;
451 double gamma_tot_hat = gamma_tot / cache.
m_b_1S;
452 double gamma_had_hat = gamma_had / cache.
m_b_1S;
459 return br * gamma_tot_hat * gamma_had_hat / (std::pow(s - std::pow(m_V_hat, 2), 2) + std::pow(m_V_hat * gamma_tot_hat, 2));
463 return s > 0.6 ? (s > 0.69 ? 1.02 : 11.33 * s - 6.8) : 0;
469 for (
size_t k = 0; k < cache.
cc_res_mass.size(); k++) {
478 double m_V_hat = m_V / cache.
m_b_1S;
479 double m_V_hat2 =
pow(m_V_hat, 2);
480 double gamma_tot_hat = gamma_tot / cache.
m_b_1S;
481 double den = (
pow(s -
pow(m_V_hat, 2), 2) +
pow(m_V_hat * gamma_tot_hat, 2));
483 return 9. /
pow(cache.
alpha_em, 2) *
B * (0.5 * log(den /
pow(s_c - s, 2)) + (s - m_V_hat2) / gamma_tot_hat * m_V_hat * (atan((s_c - m_V_hat2) / gamma_tot_hat * m_V_hat) -
PI / 2.));
488 return 1 / s * ((11.33 * s - 6.8) * log(abs((0.69 - s) / (s_c - s))) - 1.02 * log(abs(0.69 - s)) - 6.8 * log(s_c) - 2.90171798847631);
494 for (
size_t k = 0; k < cache.
cc_res_mass.size(); k++) {
510 s = std::clamp(s, 1e-6, 1. - 1e-6);
522 -(-32./27.*C[C_ids[0]]-8./9.*C[C_ids[1]]-16./9.*C[C_ids[2]]+32./27.*C[C_ids[3]]-112./9.*C[C_ids[4]]+512./27.*C[C_ids[5]]) * cache.
L_b
523 +4./3.*C[C_ids[2]]+64./9.*C[C_ids[4]]+64./27.*C[C_ids[5]]
524 +g_mc*(4./3.*C[C_ids[0]]+C[C_ids[1]]+6.*C[C_ids[2]]+60.*C[C_ids[4]])
525 +g_1*(-7./2.*C[C_ids[2]]-2./3.*C[C_ids[3]]-38.*C[C_ids[4]]-32./3.*C[C_ids[5]])
526 +g_0*(-1./2.*C[C_ids[2]]-2./3.*C[C_ids[3]]-8.*C[C_ids[4]]-32./3.*C[C_ids[5]]);
546 auto C_0 = cache.
C_LO;
559 if (abs(s - 1) < 1e-6) s = 1;
560 auto C_0 = cache.
C_LO;
571 s = std::clamp(s, 1e-6, 1. - 1e-6);
616 double H7 = 4 * (1. + 2. * ml_hat * ml_hat / s) * (1. + 2. / s) * (1. + cache.
alpha_s_mu_b /
PI *
tau_77(s));
617 double H9 = (1. + 2. * ml_hat * ml_hat / s) * (1. + 2. * s) * (1. + cache.
alpha_s_mu_b /
PI *
tau_99(s));
626 return pow(1 - s, 2) * sqrt(1 - 4 *
pow(ml_hat, 2) / s) * (
631 1.5 * (s - 4 * ml_hat * ml_hat) * W_Q1 +
641 return pow(1 - s, 2) * sqrt(1 - 4 *
pow(ml_hat, 2) / s) * (
644 ml_hat * (2 * W_7Q1 + W_9Q1)
649 return s * (9 + 14 * s - 15 *
pow(s, 2)) *
W_910(s) + 2 * (7 + 10 * s - 9 * s * s) *
W_710(s);
653 return -4 * (6 + 3 * s - 5 *
pow(s, 3)) *
W_7(s) / s + (1 - 15 * s * s + 10 *
pow(s, 3)) * (
W_9(s) +
W_10(s)) - 4 * (5 + 6 * s - 7 * s * s) *
W_79(s);
660 return (5.*
pow(s,4.)+19.*
pow(s,3.)+9.*s*s-7.*s+22.)/6./(1.-s)*4.*
W_7(s)/s+
661 (10.*
pow(s,4.)+23.*
pow(s,3.)-9.*s*s+13.*s+11.)/6./(1.-s)*(
W_9(s) +
W_10(s))+
662 4.*(-3.*
pow(s,3.)+17.*s*s-s+3.)/2./(1.-s)*
W_79(s);
667 return pow(1 - s, 2) *
real((1 + 6 * s - s * s) *
f *
W_27(s) / s + (2 + s) *
f *
W_29(s));
671 return pow(1 - s, 2) *
real((1 + 3 * s) *
F(s / (4. * cache.
z)) *
W_210(s));
685 complex_t c_78 = (*iobs_qcdp).get_constants()->C_F * (C7_0 * conj(C8_0) + CP7_0 * conj(CP8_0));
686 complex_t c_88 = (*iobs_qcdp).get_constants()->C_F * (C8_0 * conj(C8_0) + CP8_0 * conj(CP8_0));
687 complex_t c_89 = (*iobs_qcdp).get_constants()->C_F * (C8_0 * conj(C9_0) + CP8_0 * conj(CP9_0));
697 constexpr double eps = 1e-6;
698 s = std::clamp(s, eps, 1.0 - eps);
700 auto C_0 = cache.
C_LO;
701 auto CP_0 = cache.
C_LO;
704 double C_f = (*iobs_qcdp).get_constants()->C_F;
705 double C_tau_1 = C_f / (4. *
pow((*iobs_qcdp).get_constants()->Nc, 2));
706 double C_tau_2 = -C_f / (2. * (*iobs_qcdp).get_constants()->Nc);
728 auto f = [&] (
double w) ->
double {
731 return real(w_22 *
tau_22(s, w, D23, D27) + 2.0 * (w_27 *
tau_27(s, w, D23, D27) + w_28 *
tau_28(s, w, D23, D27) + w_29 *
tau_29(s, w, D23, D27)));
744 auto C_0 = cache.
C_LO;
745 auto CP_0 = cache.
C_LO;
759 double C_F = (*iobs_qcdp).get_constants()->C_F;
787 double C_F = (*iobs_qcdp).get_constants()->C_F;
824 std::vector<ObservableValue> out;
826 auto f = [&] (
double s) {
830 constexpr double s_eps_low = 1e-8;
831 constexpr double s_eps_high = 1e-3;
833 for (
size_t i = 0; i < this->
bins.value().size(); i++) {
835 const auto [q2_min, q2_max] = this->
bins.value()[i];
837 double s_min_raw = q2_min / std::pow(cache.
m_b_1S, 2);
838 double s_max_raw = q2_max / std::pow(cache.
m_b_1S, 2);
840 double s_min = std::max(s_min_raw, s_eps_low);
841 double s_max = std::min(s_max_raw, 1.0 - s_eps_high);
852 if (!(s_min < s_max)) {
854 "Skipping invalid BXsll bin [", q2_min,
",", q2_max,
855 "] after clipping s from [", s_min_raw,
",", s_max_raw,
856 "] to [", s_min,
",", s_max,
"]"
861 std::numeric_limits<double>::quiet_NaN(),
862 this->
bins.value()[i]
872 this->
bins.value()[i]
880 std::vector<ObservableValue> out;
882 auto f = [&] (
double s) {
886 constexpr double s_eps_low = 1e-8;
887 constexpr double s_eps_high = 1e-3;
889 for (
size_t i = 0; i < this->
bins.value().size(); i++) {
890 const auto [q2_min, q2_max] = this->
bins.value()[i];
892 double s_min_raw = q2_min / std::pow(cache.
m_b_1S, 2);
893 double s_max_raw = q2_max / std::pow(cache.
m_b_1S, 2);
895 double s_min = std::max(s_min_raw, s_eps_low);
896 double s_max = std::min(s_max_raw, 1.0 - s_eps_high);
898 if (!(s_min < s_max)) {
901 std::numeric_limits<double>::quiet_NaN(),
902 this->
bins.value()[i]
912 this->
bins.value()[i]
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
#define LOG_WARN(...)
Macro for logging warning messages.
void fill_cache(Func &&f, double a, double b, std::array< T, cache_size > &cache, Args &&... args)
Fills a lookup cache for a function on a finite interval [a, b].
std::complex< double > complex_t
Convenience alias for std::complex<double>.
T lerp(U x, const std::array< T, cache_size > &lookup, double a=0.0, double b=1.0)
Linearly interpolates a cached function on [a, b].
complex_t omega_27(double s, double L_l)
double omega_79(double s, double L_l)
double g_lambda(double z)
complex_t C7_new(double s, bool prime)
complex_t g_ld(double z, double s)
double delta_bremB(double s)
double delta_mc2(double s)
double omega_910(double s, double L_l)
double delta_em(double s, double L_l)
void load_cfg_dep_params()
complex_t omega_29(double s, double L_l)
double delta_bremA(double s)
double dB0_ds(double s, double ml_hat)
double breit_wigner(double s, double m_V, double br, double gamma_tot, double gamma_had)
double delta_mb2(double s)
double delta_A_em(double s, double L_l)
complex_t omega_210(double s, double L_l, double z)
complex_t C9_eff(double s, QCDOrder order, bool prime)
double sigma_7(double s, double L_mu)
complex_t tau_29(double s, double w, complex_t Delta_23, complex_t Delta_27)
complex_t Sigma_3(double s)
double PV_R_cc_cont(double s)
complex_t Delta_i_27(double s, double z, double w)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
complex_t W_210(double s)
double A_FB_0(double s, double ml_hat)
void set_cfg_flags(BXsllConfig::Lepton gen)
double delta_A_mb2(double s)
double R_cc_cont(double s)
complex_t tau_210(double s, double z)
complex_t g(double z, double s)
double dB_ds(double s, double ml_hat, double L_l)
complex_t Sigma_7(double s, double z)
void load_params() override
Load and cache parameters needed by this decay.
double omega_1010(double s, double L_l)
double tau_22(double s, double w, complex_t Delta_23, complex_t Delta_27)
complex_t C10_new(double s, bool prime)
std::vector< ObservableValue > BR_B_Xsll(Observables oid)
double omega_99(double s, double L_l)
double delta_A_mc2(double s)
double delta_mb3(double s)
std::vector< ObservableValue > A_FB_B_Xsll(Observables oid)
complex_t Sigma_1(double s)
complex_t tau_27(double s, double w, complex_t Delta_23, complex_t Delta_27)
double omega_77(double s, double L_l)
double omega_710(double s, double L_l)
double omega_22(double s, double L_l)
complex_t C9_new(double s, bool prime)
double PV_breit_wigner(double s, double m_V, double br, double gamma_tot, double gamma_had)
complex_t Delta_i_23(double s, double z, double w)
double delta_A_brem(double s)
double A_FB(double s, double ml_hat, double L_l)
double delta_bremB_base(double s)
complex_t tau_28(double s, double w, complex_t Delta_23, complex_t Delta_27)
DecayId id
Unique decay identifier.
WilsonBuildConfig w_config
Wilson build configuration used when enabling this decay (scales, order, groups).
std::optional< std::vector< std::pair< double, double > > > bins
Optional q^2 bins.
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 WCoef cpq1_for_lepton_index(int lepton_index)
static WCoef cq1_for_lepton_index(int lepton_index)
static WCoef cq2_for_lepton_index(int lepton_index)
static std::vector< WCoef > get_group(WGroup g)
Returns the list of Wilson coefficients belonging to a WGroup.
static WCoef cpq2_for_lepton_index(int lepton_index)
constexpr std::complex< double > I
scalar_t c_integrate(ComplexValuedFunction f, double l, double u, double prec)
Performs numerical integration of a complex-valued function of a real variable.
double integrate(RealValuedFunction f, double l, double u, double prec)
Performs numerical integration of a real-valued function of a real variable.
complex_t f_19_1S(double s_hat, double L_b, double z, size_t max_pow=20)
complex_t f_27(double s_hat, double L_b, double z, size_t max_pow=20)
complex_t f_29_1S(double s_hat, double L_b, double z, size_t max_pow=20)
complex_t f_17(double s_hat, double L_b, double z, size_t max_pow=20)
complex_t f_87(double s_hat, double L_b)
complex_t f_89(double s_hat)
scalar_t CLi2(scalar_t x)
Computes the complex dilogarithm function.
double Li2(double x)
Computes the dilogarithm function Li2(x).
scalar_t pow(const scalar_t &base, const scalar_t &exp)
double real(const scalar_t &z)
Configuration for evaluating the strong coupling constant .
std::array< complex_t, 100 > F_29_lookup
std::array< double, 100 > delta_brems_lookup
std::array< double, 3 > rand_err
std::array< double, 6 > cc_res_width_had
std::array< complex_t, 100 > F_27_lookup
std::array< double, 6 > cc_res_width_tot
std::array< double, 6 > cc_res_mass
std::array< complex_t, 100 > F_17_lookup
std::array< double, 6 > cc_res_br
std::map< WCoef, complex_t > C_LO
std::array< complex_t, 100 > F_19_lookup
std::map< WCoef, complex_t > C
Composite identifier for a single parameter.
QCDOrder order
Perturbative QCD order used for the evolution and matching of Wilson coefficients....