10#include "std_make_vector.h"
11#include "gslpp_function_adapter.h"
14#include <gsl/gsl_sf.h>
15#include <boost/bind/bind.hpp>
17#include <TFitResult.h>
18using namespace boost::placeholders;
21: mySM(SM_i), myF_1(new
F_1()), myF_2(new
F_2()),
22fplus_lat_cache(3, 0.),
57 deltaTparpupdated = 0;
58 deltaTparmupdated = 0;
60 w_sigma = gsl_integration_cquad_workspace_alloc(100);
61 w_delta = gsl_integration_cquad_workspace_alloc(100);
62 w_sigmaTree = gsl_integration_cquad_workspace_alloc(100);
63 w_DTPPR = gsl_integration_cquad_workspace_alloc(100);
65 acc_Re_deltaC7_QCDF = gsl_interp_accel_alloc();
66 acc_Im_deltaC7_QCDF = gsl_interp_accel_alloc();
67 acc_Re_deltaC9_QCDF = gsl_interp_accel_alloc();
68 acc_Im_deltaC9_QCDF = gsl_interp_accel_alloc();
70 spline_Re_deltaC7_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
71 spline_Im_deltaC7_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
72 spline_Re_deltaC9_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
73 spline_Im_deltaC9_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
91 <<
"b_0_fplus" <<
"b_1_fplus" <<
"b_2_fplus" <<
"m_fit_fplus_lat"
92 <<
"b_0_fT" <<
"b_1_fT" <<
"b_2_fT" <<
"m_fit_fT_lat"
93 <<
"b_0_f0" <<
"b_1_f0" <<
"b_2_f0" <<
"m_fit_f0_lat" ;
95 <<
"b_0_fplus" <<
"b_1_fplus" <<
"b_2_fplus" <<
"m_fit_fplus_lat"
96 <<
"b_0_fT" <<
"b_1_fT" <<
"b_2_fT" <<
"m_fit_fT_lat"
97 <<
"b_1_f0" <<
"b_2_f0" <<
"m_fit_f0_lat" ;
99 <<
"b_0_fplus" <<
"b_1_fplus" <<
"b_2_fplus" <<
"m_fit_fplus_lat"
100 <<
"b_0_fT" <<
"b_1_fT" <<
"b_2_fT" <<
"m_fit_fT_lat"
101 <<
"b_1_f0" <<
"b_2_f0" ;
103 <<
"r_1_fplus" <<
"r_2_fplus" <<
"m_fit2_fplus" <<
"r_1_fT" <<
"r_2_fT" <<
"m_fit2_fT" <<
"r_2_f0" <<
"m_fit2_f0";
105 std::stringstream out;
107 throw std::runtime_error(
"MPll: pseudoscalar " + out.str() +
" not implemented");
115 mpllParameters.insert(
mpllParameters.end(), {
"absh_0_MP",
"argh_0_MP",
"absh_1_MP",
"argh_1_MP",
"absh_2_MP",
"argh_2_MP",
"Delta_C7_U",
"Delta_C9_U" });
117 mpllParameters.insert(
mpllParameters.end(), {
"reh_0_MP",
"imh_0_MP",
"reh_1_MP",
"imh_1_MP",
"reh_2_MP",
"imh_2_MP",
"Delta_C7_U",
"Delta_C9_U" });
130void MPll::updateParameters()
200 b_0_f0 = fplus_DM(0.,b_0_fplus,b_1_fplus,b_2_fplus,m_fit2_fplus_lat)*phi0_DM(0) - b_1_f0*zeta_DM(0) - b_2_f0*zeta_DM(0)*zeta_DM(0);
220 std::stringstream out;
222 throw std::runtime_error(
"MPll: pseudoscalar " + out.str() +
" not implemented");
275 Gammatau = HCUT / 0.2903;
278 C_R_nunu_e = ((*(allcoeff_nu[
LO]))(1) + (*(allcoeff_nu[
NLO]))(1) + (*(allcoeff_nu[
NLO_QED11]))(1));
283 C_L_nunu_e = ((*(allcoeff_nu[
LO]))(0) + (*(allcoeff_nu[
NLO]))(0) + (*(allcoeff_nu[
NLO_QED11]))(0));
286 C_R_nunu_mu = ((*(allcoeff_nu[
LO]))(1) + (*(allcoeff_nu[
NLO]))(1) + (*(allcoeff_nu[
NLO_QED11]))(1));
291 C_L_nunu_mu = ((*(allcoeff_nu[
LO]))(0) + (*(allcoeff_nu[
NLO]))(0) + (*(allcoeff_nu[
NLO_QED11]))(0));
294 C_R_nunu_tau = ((*(allcoeff_nu[
LO]))(1) + (*(allcoeff_nu[
NLO]))(1) + (*(allcoeff_nu[
NLO_QED11]))(1));
299 C_L_nunu_tau = ((*(allcoeff_nu[
LO]))(0) + (*(allcoeff_nu[
NLO]))(0) + (*(allcoeff_nu[
NLO_QED11]))(0));
305 C_1 = (*(allcoeff[
LO]))(0) + (*(allcoeff[
NLO]))(0);
306 C_1L_bar = (*(allcoeff[
LO]))(0) / 2.;
307 C_2 = ((*(allcoeff[
LO]))(1) + (*(allcoeff[
NLO]))(1));
308 C_2L_bar = (*(allcoeff[
LO]))(1) - (*(allcoeff[
LO]))(0) / 6.;
309 C_3 = ((*(allcoeff[
LO]))(2) + (*(allcoeff[
NLO]))(2));
310 C_4 = (*(allcoeff[
LO]))(3) + (*(allcoeff[
NLO]))(3);
311 C_5 = ((*(allcoeff[
LO]))(4) + (*(allcoeff[
NLO]))(4));
312 C_6 = ((*(allcoeff[
LO]))(5) + (*(allcoeff[
NLO]))(5));
313 C_8 = ((*(allcoeff[
LO]))(7) + (*(allcoeff[
NLO]))(7));
314 C_8L = (*(allcoeff[
LO]))(7);
315 C_S = MW /
Mb * ((*(allcoeff[
LO]))(10) + (*(allcoeff[
NLO]))(10));
316 C_P = MW /
Mb * ((*(allcoeff[
LO]))(11) + (*(allcoeff[
NLO]))(11));
317 C_9p = (*(allcoeffprime[
LO]))(8) + (*(allcoeffprime[
NLO]))(8);
318 C_10p = (*(allcoeffprime[
LO]))(9) + (*(allcoeffprime[
NLO]))(9);
319 C_Sp = MW /
Mb * ((*(allcoeffprime[
LO]))(10) + (*(allcoeffprime[
NLO]))(10));
320 C_Pp = MW /
Mb * ((*(allcoeffprime[
LO]))(11) + (*(allcoeffprime[
NLO]))(11));
328 C_7 = ((*(allcoeff[
LO]))(6) + (*(allcoeff[
NLO]))(6));
329 C_9 = ((*(allcoeff[
LO]))(8) + (*(allcoeff[
NLO]))(8));
330 C_10 = ((*(allcoeff[
LO]))(9) + (*(allcoeff[
NLO]))(9));
332 C_7p = MsoMb * ((*(allcoeffprime[
LO]))(6) + (*(allcoeffprime[
NLO]))(6));
333 C_7p -= MsoMb * (C_7 + 1. / 3. * C_3 + 4 / 9 * C_4 + 20. / 3. * C_5 + 80. / 9. * C_6);
337 C_1Lh_bar = (*(allcoeffh[
LO]))(0) / 2.;
338 C_2Lh_bar = (*(allcoeffh[
LO]))(1) - (*(allcoeff[
LO]))(0) / 6.;
339 C_8Lh = (*(allcoeffh[
LO]))(7);
349 H_0_pre = 8. / 27. + 4. / 9. * gslpp::complex::i() * M_PI;
350 H_0_WC = (C_3 + 4. / 3. * C_4 + 16. * C_5 + 64. / 3. * C_6);
351 H_c_WC = (4. / 3. * C_1 + C_2 + 6. * C_3 + 60. * C_5);
352 H_b_WC = (7. * C_3 + 4. / 3. * C_4 + 76. * C_5 + 64. / 3. * C_6);
353 fournineth = 4. / 9.;
356 ihalfMPI = gslpp::complex::i() * M_PI / 2.;
360 logMc = log(Mc2 / mu_b2);
361 logMb = log(Mb2 / mu_b2);
365 NN = ((4. *
GF *
MM *
ale * lambda_t) / (sqrt(2.)*4. * M_PI)).abs2();
374 twoMM2_MMpMP = twoMM2 * (
MM +
MP);
375 twoMM_MbpMs = twoMM * (
Mb +
Ms);
376 S_L_pre = -(MM2mMP2 / twoMM_MbpMs) * (1 + MsoMb) / (1 - MsoMb);
378 twoMboMM = 2 *
Mb /
MM;
379 sixteenM_PI2 = 16. * M_PI*M_PI;
380 ninetysixM_PI3MM3 = 96. * M_PI * M_PI * M_PI *
MM *
MM*
MM;
387 M_PI2osix = M_PI * M_PI / 6.;
389 sixMMoMb = 6. *
MM /
Mb;
395 F87_0 = -32. / 9. * log(
mu_b /
Mb) + 8. / 27. * M_PI * M_PI - 44. / 9. - 8. / 9. * gslpp::complex::i() * M_PI;
396 F87_1 = (4. / 3. * M_PI * M_PI - 40. / 3.);
397 F87_2 = (32. / 9. * M_PI * M_PI - 316. / 9.);
398 F87_3 = (200. / 27. * M_PI * M_PI - 658. / 9.);
400 F89_0 = 104. / 9. - 32. / 27. * M_PI * M_PI;
401 F89_1 = 1184. / 27. - 40. / 9. * M_PI * M_PI;
402 F89_2 = (-32. / 3. * M_PI * M_PI + 14212. / 135.);
403 F89_3 = (-560. / 27. * M_PI * M_PI + 193444. / 945.);
405 F29_0 = (256. / 243. - 32. / 81. * gslpp::complex::i() * M_PI - 128. / 9. * log(
Mc /
Mb)) * log(
mu_b /
Mb) + 512. / 81. * log(
mu_b /
Mb) * log(
mu_b /
Mb) + 5.4082 - 1.0934 * gslpp::complex::i();
406 F29_L1 = 32. / 81. * log(
mu_b /
Mb) + (0.48576 + 0.31119 * gslpp::complex::i());
407 F29_1 = (-32. / 405. + 64. / 45. / Mc2 * Mb2) * log(
mu_b /
Mb) + (1.9061 + 0.80843 * gslpp::complex::i());
408 F29_2 = (-8. / 945. + 16. / 105. / Mc2 * Mb2 / Mc2 * Mb2) * log(
mu_b /
Mb) + (-1.8286 + 2.8428 * gslpp::complex::i());
409 F29_3 = (-32. / 25515. + 64. / 2835. / Mc2 * Mb2 / Mc2 * Mb2 / Mc2 * Mb2) * log(
mu_b /
Mb) + (-12.113 + 8.1251 * gslpp::complex::i());
410 F29_L1_1 = (0.21951 - 0.14852 * gslpp::complex::i());
411 F29_L1_2 = (0.13015 - 0.22155 * gslpp::complex::i());
412 F29_L1_3 = (-0.079692 - 0.31214 * gslpp::complex::i());
414 F27_0 = 416. / 81. * log(
mu_b /
Mb) + 3.8367 + 0.3531 * gslpp::complex::i();
415 F27_1 = (1.3098 + 0.60185 * gslpp::complex::i());
416 F27_2 = (0.13507 + 0.89014 * gslpp::complex::i());
417 F27_3 = (-1.0271 + 0.77168 * gslpp::complex::i());
418 F27_L1_1 = (-0.031936 - 0.10981 * gslpp::complex::i());
419 F27_L1_2 = (-0.14169 - 0.035553 * gslpp::complex::i());
420 F27_L1_3 = (-0.13592 + 0.093 * gslpp::complex::i());
422 std::map<std::pair<double, double>,
unsigned int >::iterator it;
424 if (I0_updated == 0)
for (it = sigma0Cached.begin(); it != sigma0Cached.end(); ++it) it->second = 0;
425 if (I2_updated == 0)
for (it = sigma2Cached.begin(); it != sigma2Cached.end(); ++it) it->second = 0;
426 if (I8_updated == 0)
for (it = sigma8Cached.begin(); it != sigma8Cached.end(); ++it) it->second = 0;
428 if (I0_updated == 0)
for (it = delta0Cached.begin(); it != delta0Cached.end(); ++it) it->second = 0;
429 if (I2_updated == 0)
for (it = delta2Cached.begin(); it != delta2Cached.end(); ++it) it->second = 0;
431 if (Itree_updated)
for (it = sigmaTreeCached.begin(); it != sigmaTreeCached.end(); ++it) it->second = 0;
433 std::map<double, unsigned int >::iterator iti;
434 if (deltaTparpupdated == 0)
for (iti = deltaTparpCached.begin(); iti != deltaTparpCached.end(); ++iti) iti->second = 0;
435 if (deltaTparmupdated == 0)
for (iti = deltaTparmCached.begin(); iti != deltaTparmCached.end(); ++iti) iti->second = 0;
437 if (deltaTparpupdated * deltaTparmupdated == 0)
for (it = I1Cached.begin(); it != I1Cached.end(); ++it) it->second = 0;
455void MPll::checkCache()
458 if (
MM == k2_cache(0) &&
MP == k2_cache(1)) {
467 if (b_0_fplus == fplus_lat_cache(0) && b_1_fplus == fplus_lat_cache(1) && b_2_fplus == fplus_lat_cache(2)) {
468 fplus_lat_updated = 1;
470 fplus_lat_updated = 0;
471 fplus_lat_cache(0) = b_0_fplus;
472 fplus_lat_cache(1) = b_1_fplus;
473 fplus_lat_cache(2) = b_2_fplus;
476 if (b_0_fT == fT_lat_cache(0) && b_1_fT == fT_lat_cache(1) && b_2_fT == fT_lat_cache(2)) {
480 fT_lat_cache(0) = b_0_fT;
481 fT_lat_cache(1) = b_1_fT;
482 fT_lat_cache(2) = b_2_fT;
485 if (b_0_f0 == f0_lat_cache(0) && b_1_f0 == f0_lat_cache(1) && b_2_f0 == f0_lat_cache(2)) {
489 f0_lat_cache(0) = b_0_f0;
490 f0_lat_cache(1) = b_1_f0;
491 f0_lat_cache(2) = b_2_f0;
494 if (r_1_fplus == fplus_cache(0) && r_2_fplus == fplus_cache(1)) {
498 fplus_cache(0) = r_1_fplus;
499 fplus_cache(1) = r_2_fplus;
502 if (r_1_fT == fT_cache(0) && r_2_fT == fT_cache(1)) {
506 fT_cache(0) = r_1_fT;
507 fT_cache(1) = r_2_fT;
510 if (r_2_f0 == f0_cache) {
518 if (
Mlep == beta_cache) {
525 lambda_updated = k2_updated;
526 F_updated = lambda_updated * beta_updated;
529 VL_updated = k2_updated * fplus_lat_updated;
530 TL_updated = k2_updated * fT_lat_updated;
532 VL_updated = k2_updated * fplus_updated;
533 TL_updated = k2_updated * fT_updated;
536 if (
Mb == SL_cache(0) &&
Ms == SL_cache(1)) {
538 SL_updated = k2_updated * f0_lat_updated;
540 SL_updated = k2_updated * f0_updated;
547 if (
GF == N_cache(0) &&
ale == N_cache(1) &&
MM == N_cache(2) && lambda_t == Nc_cache) {
557 if (C_1 == C_1_cache) {
564 if (C_2 == C_2_cache) {
571 if (C_3 == C_3_cache) {
578 if (C_4 == C_4_cache) {
585 if (C_5 == C_5_cache) {
592 if (C_6 == C_6_cache) {
599 if (C_7 == C_7_cache) {
606 if (C_9 == C_9_cache) {
613 if (C_10 == C_10_cache) {
620 if (C_S == C_S_cache) {
627 if (C_P == C_P_cache) {
634 if (C_7p == C_7p_cache) {
641 if (C_9p == C_9p_cache) {
648 if (C_10p == C_10p_cache) {
655 if (C_Sp == C_Sp_cache) {
662 if (C_Pp == C_Pp_cache) {
669 if (C_2Lh_bar == C_2Lh_cache) {
673 C_2Lh_cache = C_2Lh_bar;
676 if (C_8Lh == C_8Lh_cache) {
683 if (C_L_nunu_e == C_L_nunu_e_cache) {
684 C_L_nunu_e_updated = 1;
686 C_L_nunu_e_updated = 0;
687 C_L_nunu_e_cache = C_L_nunu_e;
690 if (C_L_nunu_mu == C_L_nunu_mu_cache) {
691 C_L_nunu_mu_updated = 1;
693 C_L_nunu_mu_updated = 0;
694 C_L_nunu_mu_cache = C_L_nunu_mu;
697 if (C_L_nunu_tau == C_L_nunu_tau_cache) {
698 C_L_nunu_tau_updated = 1;
700 C_L_nunu_tau_updated = 0;
701 C_L_nunu_tau_cache = C_L_nunu_tau;
704 if (C_R_nunu_e == C_R_nunu_e_cache) {
705 C_R_nunu_e_updated = 1;
707 C_R_nunu_e_updated = 0;
708 C_R_nunu_e_cache = C_R_nunu_e;
711 if (C_R_nunu_mu == C_R_nunu_mu_cache) {
712 C_R_nunu_mu_updated = 1;
714 C_R_nunu_mu_updated = 0;
715 C_R_nunu_mu_cache = C_R_nunu_mu;
718 if (C_R_nunu_tau == C_R_nunu_tau_cache) {
719 C_R_nunu_tau_updated = 1;
721 C_R_nunu_tau_updated = 0;
722 C_R_nunu_tau_cache = C_R_nunu_tau;
725 if (
Mb == Ycache(0) &&
Mc == Ycache(1)) {
726 Yupdated = C_1_updated * C_2_updated * C_3_updated * C_4_updated * C_5_updated * C_6_updated;
734 H_V0updated = N_updated * VL_updated * C_L_nunu_e_updated * C_L_nunu_mu_updated * C_L_nunu_tau_updated * C_R_nunu_e_updated * C_R_nunu_mu_updated * C_R_nunu_tau_updated;
735 H_A0updated = H_V0updated;
739 if (
MM == H_V0cache(0) &&
Mb == H_V0cache(1) &&
h_0 == H_V0Ccache[0] && h_1 == H_V0Ccache[1] && h_2 == H_V0Ccache[2]) {
740 H_V0updated = N_updated * C_9_updated * Yupdated * VL_updated * C_9p_updated * C_7_updated * TL_updated * C_7p_updated;
750 if (
MM == H_V0cache(0) &&
Mb == H_V0cache(1) && r_1 == H_V0Ccache_dispersion[0] && r_2 == H_V0Ccache_dispersion[1] && Delta_C9 == H_V0Ccache_dispersion[2] && exp_Phase == H_V0Ccache_dispersion[3]) {
751 H_V0updated = N_updated * C_9_updated * Yupdated * VL_updated * C_9p_updated * C_7_updated * TL_updated * C_7p_updated;
756 H_V0Ccache_dispersion[0] = r_1;
757 H_V0Ccache_dispersion[1] = r_2;
758 H_V0Ccache_dispersion[2] = Delta_C9;
759 H_V0Ccache_dispersion[3] = exp_Phase;
763 H_A0updated = N_updated * C_10_updated * VL_updated * C_10p_updated;
766 if (
Mb == H_Scache(0) && MW == H_Scache(1)) {
767 H_Supdated = N_updated * C_S_updated * SL_updated * C_Sp_updated;
774 if (
Mb == H_P_cache(0) && MW == H_P_cache(1) &&
Mlep == H_P_cache(2) &&
Ms == H_P_cache(3)) {
775 H_P_updated = N_updated * C_P_updated * SL_updated * C_Pp_updated * SL_updated * C_10_updated * C_10p_updated;
784 if (
MM == T_cache(0) &&
Mb == T_cache(1) &&
Mc == T_cache(2) &&
796 deltaTparpupdated = C_2Lh_updated * T_updated;
797 deltaTparmupdated = C_2Lh_updated * C_8Lh_updated * T_updated;
799 I0_updated = F_updated * H_V0updated * H_A0updated * H_P_updated * beta_updated * H_Supdated * deltaTparmupdated;
800 I2_updated = F_updated * beta_updated * H_V0updated * H_A0updated * deltaTparmupdated;
801 I8_updated = F_updated * beta_updated * H_Supdated * H_V0updated * deltaTparmupdated;
803 if (MM2 == Itree_cache(0) && mtau2 == Itree_cache(1) && MP2 == Itree_cache(2)) {
807 Itree_cache(0) = MM2;
808 Itree_cache(1) = mtau2;
809 Itree_cache(2) = MP2;
817double MPll::LCSR_fit1(
double q2,
double r_1,
double r_2,
double m_fit2)
819 return r_1 / (1. - q2 / m_fit2) + r_2 / pow((1. - q2 / m_fit2), 2.);
823double MPll::LCSR_fit2(
double q2,
double r_2,
double m_fit2)
825 return r_2 / (1. - q2 / m_fit2);
828double MPll::LCSR_fit3(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2)
830 return 1. / (1. - q2 / m_fit2) * (b_0 + b_1 * (zeta(q2) - zeta(0)) + b_2 * (zeta(q2) - zeta(0)) * (zeta(q2) - zeta(0)));
833double MPll::zeta(
double q2)
838 t0 = (
MM +
MP)*(sqrt(
MM) - sqrt(
MP))*(sqrt(
MM) - sqrt(
MP));
840 return (sqrt(tp - q2) - sqrt(tp - t0)) / (sqrt(tp - q2) + sqrt(tp - t0));
843double MPll::zeta_DM(
double q2)
850 return (sqrt(tp - q2) - sqrt(tp - tm)) / (sqrt(tp - q2) + sqrt(tp - tm));
853double MPll::phiplus_DM(
double q2,
double m_fit2)
855 double z = zeta_DM(q2);
856 double z_M = zeta_DM(m_fit2);
858 double Chi1minus = 0.000623174575;
860 return 16.*rP*rP/
MM*sqrt(4./3./Chi1minus/M_PI) * (1. + z)*(1. + z)*sqrt(1. - z)/pow((1. + rP)*(1. - z)+2.*sqrt(rP)*(1. + z),5) * (z - z_M)/(1. - z_M*z);
863double MPll::phi0_DM(
double q2)
865 double z = zeta_DM(q2);
867 double Chi0plus = 0.0142;
869 return 2.*rP*(1 - rP*rP)*sqrt(4./Chi0plus/M_PI)* (1. - z*z)*sqrt(1. - z)/pow((1. + rP)*(1. - z)+2.*sqrt(rP)*(1. + z),4);
872double MPll::phiT_DM(
double q2,
double m_fit2)
874 double z = zeta_DM(q2);
875 double z_M = zeta_DM(m_fit2);
877 double ChiTT = 0.0454644444;
879 return 16*rP*rP/
MM/(1. + rP)*sqrt(4./3./ChiTT/M_PI) * (1. + z)*(1. + z)/sqrt(1. - z)/pow((1. + rP)*(1. - z)+2.*sqrt(rP)*(1. + z),4) * (z - z_M)/(1. - z_M*z);
882double MPll::fplus_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2)
884 double z = zeta_DM(q2);
886 return (b_0 + b_1*z + b_2*z*z) / phiplus_DM(q2, m_fit2);
889double MPll::f0_DM(
double q2,
double b_0,
double b_1,
double b_2)
891 double z = zeta_DM(q2);
893 return (b_0 + b_1*z + b_2*z*z) / phi0_DM(q2);
896double MPll::fT_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2)
898 double z = zeta_DM(q2);
900 return (b_0 + b_1*z + b_2*z*z) / phiT_DM(q2, m_fit2);
904double MPll::LATTICE_fit1(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2)
906 double z2 = zeta(q2) * zeta(q2);
907 double z3 = zeta(q2) * z2;
909 return 1. / (1. - q2 / m_fit2) * (b_0 + b_1 * (zeta(q2) - 1. / 3. * z3) + b_2 * (z2 + 2. / 3. * z3));
913double MPll::LATTICE_fit2(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2)
915 return 1. / (1. - q2 / m_fit2) * (b_0 + b_1 * zeta(q2) + b_2 * zeta(q2) * zeta(q2));
918double MPll::f_plus(
double q2)
921 return LATTICE_fit1(q2, b_0_fplus, b_1_fplus, b_2_fplus, m_fit2_fplus_lat);
923 return LCSR_fit3(q2, b_0_fplus, b_1_fplus, b_2_fplus, m_fit2_fplus_lat);
925 return fplus_DM(q2, b_0_fplus, b_1_fplus, b_2_fplus, m_fit2_fplus_lat);
927 return LCSR_fit1(q2, r_1_fplus, r_2_fplus, m_fit2_fplus);
930double MPll::f_T(
double q2)
933 return LATTICE_fit1(q2, b_0_fT, b_1_fT, b_2_fT, m_fit2_fT_lat);
935 return LCSR_fit3(q2, b_0_fT, b_1_fT, b_2_fT, m_fit2_fT_lat);
937 return fT_DM(q2, b_0_fT, b_1_fT, b_2_fT, m_fit2_fT_lat);
939 return LCSR_fit1(q2, r_1_fT, r_2_fT, m_fit2_fT);
942double MPll::f_0(
double q2)
945 return LATTICE_fit2(q2, b_0_f0, b_1_f0, b_2_f0, m_fit2_f0_lat);
947 return LCSR_fit3(q2, b_0_f0, b_1_f0, b_2_f0, m_fit2_f0_lat);
949 return f0_DM(q2, b_0_f0, b_1_f0, b_2_f0);
951 return LCSR_fit2(q2, r_2_f0, m_fit2_f0);
956 return sqrt(lambda(q2)) / (twoMM * sqrt(q2)) * f_plus(q2);
961 return sqrt(lambda(q2) * q2) / (twoMM2_MMpMP) * f_T(q2);
966 return S_L_pre * f_0(q2);
975 std::pair<double, double > uq2 = std::make_pair(u, q2);
977 if (I1Cached[uq2] == 0) {
979 xp = .5 + sqrt(0.25 - (Mc2 - gslpp::complex::i()*1.e-10) / (ubar * MM2 + u * q2));
980 xm = .5 - sqrt(0.25 - (Mc2 - gslpp::complex::i()*1.e-10) / (ubar * MM2 + u * q2));
981 yp = .5 + sqrt(0.25 - (Mc2 - gslpp::complex::i()*1.e-10) / q2);
982 ym = .5 - sqrt(0.25 - (Mc2 - gslpp::complex::i()*1.e-10) / q2);
983 L1xp = log(1. - 1. / xp) * log(1. - xp) - M_PI2osix + dilog(xp / (xp - 1.));
984 L1xm = log(1. - 1. / xm) * log(1. - xm) - M_PI2osix + dilog(xm / (xm - 1.));
985 L1yp = log(1. - 1. / yp) * log(1. - yp) - M_PI2osix + dilog(yp / (yp - 1.));
986 L1ym = log(1. - 1. / ym) * log(1. - ym) - M_PI2osix + dilog(ym / (ym - 1.));
988 cacheI1[uq2] = 1. + twoMc2 / ubar / (MM2 - q2)*(L1xp + L1xm - L1yp - L1ym);
997 Ee = (MM2 - q2) / twoMM;
999 arg1 = (fourMc2 - gslpp::complex::i()*1.e-10) / (ubar * MM2 + u * q2) - 1.;
1000 B01 = -2. * sqrt(arg1) * arctan(1. / sqrt(arg1));
1001 arg1 = (fourMc2 - gslpp::complex::i()*1.e-10) / q2 - 1.;
1002 B00 = -2. * sqrt(arg1) * arctan(1. / sqrt(arg1));
1004 gslpp::complex tpar = twoMM / Ee / ubar *
I1(u, q2) + (ubar * MM2 + u * q2) / Ee / Ee / ubar / ubar * (B01 - B00);
1010 double ubar = 1. - u;
1012 + sixMMoMb * H_c(ubar * MM2 + u * q2,
mu_h *
mu_h) * C_2Lh_bar);
1018 return ((
Tparplus(u, tmpq2)*6. * u * (1. - u)*
1019 (1 + threeGegen0 * (2. * u - 1)
1026 return ((
Tparplus(u, tmpq2)*6. * u * (1. - u)*
1027 (1 + threeGegen0 * (2. * u - 1)
1034 gslpp::complex Lambdamin = exp(-tmpq2 /
MM / Lambdaplus) / Lambdaplus * (-gsl_sf_expint_Ei(tmpq2 /
MM / Lambdaplus) + gslpp::complex::i() * M_PI);
1037 return ((
Tparminus(u, tmpq2)*6. * u * (1. - u)*
1038 (1 + threeGegen0 * (2. * u - 1)
1039 + threeGegen1otwo * ((10. * u - 5.)*(2. * u - 1.) - 1.))) / Lambdamin).real();
1045 gslpp::complex Lambdamin = exp(-tmpq2 /
MM / Lambdaplus) / Lambdaplus * (-gsl_sf_expint_Ei(tmpq2 /
MM / Lambdaplus) + gslpp::complex::i() * M_PI);
1048 return ((
Tparminus(u, tmpq2)*6. * u * (1. - u)*
1049 (1 + threeGegen0 * (2. * u - 1)
1050 + threeGegen1otwo * ((10. * u - 5.)*(2. * u - 1.) - 1.))) / Lambdamin).imag();
1065 double s = q2 / Mb2;
1068 double Lc = log(
Mc /
Mb);
1069 double Lm = log(
mu_b /
Mb);
1070 gslpp::complex i = gslpp::complex::i();
1071 return (-1424. / 729. + 16. / 243. * i * M_PI + 64. / 27. * Lc)*Lm - 16. / 243. * Lm * Ls + (16. / 1215. - 32. / 135. / Mc2 * Mb2) * Lm *
s
1072 + (4. / 2835. - 8. / 315. / Mc2 * Mb2 / Mc2 * Mb2) * Lm * s2 + (16. / 76545. - 32. / 8505 / Mc2 * Mb2 / Mc2 * Mb2 / Mc2 * Mb2) * Lm *
s * s2 - 256. / 243. * Lm * Lm
1073 + (-11.65 + 0.18223 * i + (-24.709 - 0.13474 * i) *
s + (-43.588 - 0.4738 * i) * s2 + (-86.22 - 1.3542 * i) *
s * s2
1074 + (-0.080959 - 0.051864 * i + (-0.036585 + 0.024753 * i) *
s + (-0.021692 + 0.036925 * i) * s2 + (0.013282 + 0.052023 * i) *
s * s2) * Ls);
1079 double s = q2 / Mb2;
1082 gslpp::complex i = gslpp::complex::i();
1083 return F27_0 + F27_1 *
s + F27_2 * s2 + F27_3 *
s * s2 + F27_L1_1 * Ls *
s + F27_L1_2 * Ls * s2 + F27_L1_3 * Ls *
s * s2;
1088 double s = q2 / Mb2;
1091 gslpp::complex i = gslpp::complex::i();
1092 return F29_0 + F29_L1 * Ls + F29_1 *
s + F29_2 * s2 + F29_3 *
s * s2 + F29_L1_1 * Ls *
s + F29_L1_2 * Ls * s2 + F29_L1_3 * Ls * s2 *
s;
1097 double s = q2 / Mb2;
1099 return F87_0 + F87_1 *
s + F87_2 * s2 + F87_3 *
s * s2 - 0.888889 * log(
s)*(1. +
s + s2 +
s * s2);
1104 double s = q2 / Mb2;
1106 return F89_0 + F89_1 *
s + F89_2 * s2 + F89_3 *
s * s2 + 1.77778 * log(
s)*(1. +
s + s2 +
s * s2);
1111 return -(C_2L_bar *
F27(q2) + C_8L *
F87(q2) +
MM / 2. /
Mb *
1112 (C_2L_bar *
F29(q2) + 2. * C_1L_bar * (
F19(q2) +
F29(q2) / 6.) + C_8L *
F89(q2)));
1121 if (deltaTparpCached[q2] == 0) {
1124 if (gsl_integration_cquad(&DTPPR, 0., 1., 1.e-2, 1.e-1, w_DTPPR, &avaDTPPR, &errDTPPR, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1125 double ReTppint = avaDTPPR;
1128 if (gsl_integration_cquad(&DTPPR, 0., 1., 1.e-2, 1.e-1, w_DTPPR, &avaDTPPR, &errDTPPR, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1129 double ImTppint = avaDTPPR;
1131 cacheDeltaTparp[q2] = (ReTppint + gslpp::complex::i() * ImTppint);
1132 deltaTparpCached[q2] = 1;
1137 return deltaT_0 *
Cpar(q2) + deltaT_1par * cacheDeltaTparp[q2] / f_plus(q2);
1142 return p[0] / x[0] + p[1] + p[2] * x[0] + p[3] * x[0] * x[0] + p[4] * x[0] * x[0] * x[0] + p[5] * x[0] * x[0] * x[0] * x[0] + p[6] * x[0] * x[0] * x[0] * x[0] * x[0];
1147 return p[0] / x[0] + p[1] + p[2] * x[0] + p[3] * x[0] * x[0] + p[4] * x[0] * x[0] * x[0] + p[5] * x[0] * x[0] * x[0] * x[0] + p[6] * x[0] * x[0] * x[0] * x[0] * x[0] + p[7] * x[0] * x[0] * x[0] * x[0] * x[0] * x[0];
1155 for (
double i = 0.1; i < MPllSWITCH; i += 0.4) {
1157 myq2.push_back(q2tmp);
1158 ReDeltaC9.push_back((
deltaTpar(q2tmp)).real());
1159 ImDeltaC9.push_back((
deltaTpar(q2tmp)).imag());
1162 for (
double i = MPllSWITCH; i < 8.2; i += 0.4) {
1164 myq2.push_back(q2tmp);
1165 ReDeltaC9.push_back(q2tmp * (
deltaTpar(q2tmp)).real());
1166 ImDeltaC9.push_back(q2tmp * (
deltaTpar(q2tmp)).imag());
1170 gr1 = TGraph(dim, myq2.data(), ReDeltaC9.data());
1171 gr2 = TGraph(dim, myq2.data(), ImDeltaC9.data());
1176 refres = gr1.Fit(&reffit,
"SQN0+rob=0.99");
1177 imfres = gr2.Fit(&imffit,
"SQN0+rob=0.99");
1186 if (q2 < MPllSWITCH)
return (
reDC9fit(&q2,
const_cast<double *
> (refres->GetParams()))
1187 + gslpp::complex::i() *
imDC9fit(&q2,
const_cast<double *
> (imfres->GetParams())));
1188 else return (
reDC9fit(&q2,
const_cast<double *
> (refres->GetParams()))
1189 + gslpp::complex::i() *
imDC9fit(&q2,
const_cast<double *
> (imfres->GetParams()))) / q2;
1201 if (spline)
return gsl_spline_eval(spline_Re_deltaC7_QCDF, q2, acc_Re_deltaC7_QCDF);
1212 gslpp::complex F_17 =
myF_1->F_17re(muh, z, sh, 20) + gslpp::complex::i() *
myF_1->F_17im(muh, z, sh, 20);
1213 gslpp::complex F_27 =
myF_2->F_27re(muh, z, sh, 20) + gslpp::complex::i() *
myF_2->F_27im(muh, z, sh, 20);
1214 gslpp::complex F_87 = F87_0 + F87_1 * sh + F87_2 * sh2 + F87_3 * sh * sh2 - 8. / 9. * log(sh) * (sh + sh2 + sh * sh2);
1216 gslpp::complex delta = C_1 * F_17 + C_2 * F_27;
1217 gslpp::complex delta_t = C_8 * F_87 + delta;
1226 if (spline)
return gsl_spline_eval(spline_Re_deltaC9_QCDF, q2, acc_Re_deltaC9_QCDF);
1237 gslpp::complex F_19 =
myF_1->F_19re(muh, z, sh, 20) + gslpp::complex::i() *
myF_1->F_19im(muh, z, sh, 20);
1238 gslpp::complex F_29 =
myF_2->F_29re(muh, z, sh, 20) + gslpp::complex::i() *
myF_2->F_29im(muh, z, sh, 20);
1239 gslpp::complex F_89 = (F89_0 + F89_1 * sh + F89_2 * sh2 + F89_3 * sh * sh2 + 16. / 9. * log(sh) * (1. + sh + sh2 + sh * sh2));
1241 gslpp::complex delta = C_1 * F_19 + C_2 * F_29;
1242 gslpp::complex delta_t = C_8 * F_89 + delta;
1250 int dim_DC = GSL_INTERP_DIM_DC;
1252 double interval_DC = (9.9 - min) / ((
double) dim_DC);
1253 double q2_spline_DC[dim_DC];
1254 double fq2_Re_deltaC7_QCDF[dim_DC], fq2_Im_deltaC7_QCDF[dim_DC], fq2_Re_deltaC9_QCDF[dim_DC], fq2_Im_deltaC9_QCDF[dim_DC];
1256 for (
int i = 0; i < dim_DC; i++) {
1257 q2_spline_DC[i] = min + (double) i*interval_DC;
1258 fq2_Re_deltaC7_QCDF[i] =
deltaC7_QCDF(q2_spline_DC[i],
false).real();
1259 fq2_Im_deltaC7_QCDF[i] =
deltaC7_QCDF(q2_spline_DC[i],
false).imag();
1260 fq2_Re_deltaC9_QCDF[i] =
deltaC9_QCDF(q2_spline_DC[i],
false).real();
1261 fq2_Im_deltaC9_QCDF[i] =
deltaC9_QCDF(q2_spline_DC[i],
false).imag();
1265 gsl_spline_init(spline_Re_deltaC7_QCDF, q2_spline_DC, fq2_Re_deltaC7_QCDF, dim_DC);
1266 gsl_spline_init(spline_Im_deltaC7_QCDF, q2_spline_DC, fq2_Im_deltaC7_QCDF, dim_DC);
1267 gsl_spline_init(spline_Re_deltaC9_QCDF, q2_spline_DC, fq2_Re_deltaC9_QCDF, dim_DC);
1268 gsl_spline_init(spline_Im_deltaC9_QCDF, q2_spline_DC, fq2_Im_deltaC9_QCDF, dim_DC);
1276gslpp::complex MPll::H_c(
double q2,
double mu2)
1278 double x = fourMc2 / q2;
1281 if (x > 1.) par = sqrt(x - 1.) * atan(1. / sqrt(x - 1.));
1282 else par = sqrt(1. - x) * (log((1. + sqrt(1. - x)) / sqrt(x)) - ihalfMPI);
1283 return -fournineth * (log(Mc2 / mu2) - twothird - x) - fournineth * (2. + x) * par;
1286gslpp::complex MPll::H_b(
double q2,
double mu2)
1288 double x = fourMb2 / q2;
1291 if (x > 1.) par = sqrt(x - 1.) * atan(1. / sqrt(x - 1.));
1292 else par = sqrt(1. - x) * (log((1. + sqrt(1. - x)) / sqrt(x)) - ihalfMPI);
1294 return -fournineth * (log(Mb2 / mu2) - twothird - x) - fournineth * (2. + x) * par;
1297gslpp::complex MPll::H_0(
double q2)
1299 return (H_0_pre - fournineth * log(q2 / mu_b2));
1302gslpp::complex MPll::Y(
double q2)
1304 return -half * H_0(q2) * H_0_WC + H_c(q2, mu_b2) * H_c_WC - half * H_b(q2, mu_b2) * H_b_WC;
1309 if (q2 < 4. *
Mc *
Mc)
1310 return -8. / 9. * log(
Mc /
Mb) + 8. / 27. + 16. / 9. *
Mc *
Mc / q2 - 4. / 9. * (2. + 4. *
Mc *
Mc / q2) * (sqrt(4. *
Mc *
Mc / q2 - 1.) * atan(1. / sqrt(4. *
Mc *
Mc / q2 - 1.)));
1312 return -8. / 9. * log(
Mc /
Mb) + 8. / 27. + 16. / 9. *
Mc *
Mc / q2 - 4. / 9. * (2. + 4. *
Mc *
Mc / q2) * (sqrt(1. - 4. *
Mc *
Mc / q2) * (log(1. + sqrt(1. - 4. *
Mc *
Mc / q2) / sqrt(4. *
Mc *
Mc / q2)) - gslpp::complex::i() * M_PI_2));
1317 return ((Delta_C9 + r_1 * q2 /
mJ2) / (1. - r_2 * q2 /
mJ2) - (3. * (-0.267) + 1.117) *
funct_g(q2))*exp_Phase;
1331 return (h_1 + h_2 * q2 ) * sqrt(q2) * sqrt(lambda(q2)) / MM3 / 2.;
1334 return -q2 / (MM2 * sixteenM_PI2) *
V_L(q2) *
DeltaC9_KD(q2);
1340 return -((C_9 +
deltaC9_QCDF(q2, SPLINE) + Y(q2) - etaP * pow(-1, angmomP) * C_9p) *
V_L(q2)
1341 + MM2 / q2 * (twoMboMM * (C_7 +
deltaC7_QCDF(q2, SPLINE) - etaP * pow(-1, angmomP) * C_7p) *
T_L(q2)
1347 return (-C_10 + etaP * pow(-1, angmomP) * C_10p) *
V_L(q2);
1352 return MboMW * (C_S - etaP * pow(-1, angmomP) * C_Sp) *
S_L(q2);
1357 return ( MboMW * (C_P - etaP * pow(-1, angmomP) * C_Pp) + twoMlepMb / q2 * (C_10 * (1. + etaP * pow(-1, angmomP) * MsoMb) - C_10p * (etaP * pow(-1, angmomP) + MsoMb))) *
S_L(q2);
1363 return -(C_L_nunu_e - etaP * pow(-1, angmomP) * C_R_nunu_e) *
V_L(q2);
1365 return -(C_L_nunu_mu - etaP * pow(-1, angmomP) * C_R_nunu_mu) *
V_L(q2);
1367 return -(C_L_nunu_tau - etaP * pow(-1, angmomP) * C_R_nunu_tau) *
V_L(q2);
1368 else throw std::runtime_error(
"MPll::H_nunu: lepton not supported");
1374double MPll::k2(
double q2)
1376 return (MM4 + q2 * q2 + MP4 - twoMP2 * q2 - twoMM2 * (q2 + MP2)) / fourMM2;
1379double MPll::beta(
double q2)
1381 return sqrt(1. - 4. * Mlep2 / q2);
1384double MPll::beta2(
double q2)
1386 return 1. - 4. * Mlep2 / q2;
1389double MPll::lambda(
double q2)
1391 return 4. * MM2 * k2(q2);
1394double MPll::F(
double q2)
1396 return sqrt(lambda(q2)) * beta(q2) * q2 / (ninetysixM_PI3MM3);
1399double MPll::I_1c(
double q2)
1403 else return F(q2)*((
H_V(q2).abs2() +
H_A(q2).abs2()) / 2. +
H_P(q2).abs2() + 2. * Mlep2 / q2 * (
H_V(q2).abs2()
1404 -
H_A(q2).abs2()) + beta2(q2) *
H_S(q2).abs2());
1407double MPll::I_2c(
double q2)
1411 else return -F(q2) * beta2(q2) / 2. * (
H_V(q2).abs2() +
H_A(q2).abs2());
1414double MPll::I_6c(
double q2)
1416 return 4. * F(q2) * beta(q2) *
Mlep / sqrt(q2)*(
H_S(q2).conjugate() *
H_V(q2)).real();
1419double MPll::Delta(
int i,
double q2)
1429 std::pair<double, double > qbin = std::make_pair(q_min, q_max);
1431 old_handler = gsl_set_error_handler_off();
1435 if (sigma0Cached[qbin] == 0) {
1437 if (gsl_integration_cquad(&FS, q_min, q_max, 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1438 cacheSigma0[qbin] = NN*avaSigma;
1439 sigma0Cached[qbin] = 1;
1441 return cacheSigma0[qbin];
1444 if (sigma2Cached[qbin] == 0) {
1446 if (gsl_integration_cquad(&FS, q_min, q_max, 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1447 cacheSigma2[qbin] = NN*avaSigma;
1448 sigma2Cached[qbin] = 1;
1450 return cacheSigma2[qbin];
1453 if (sigma8Cached[qbin] == 0) {
1455 if (gsl_integration_cquad(&FS, q_min, q_max, 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1456 cacheSigma8[qbin] = NN*avaSigma;
1457 sigma8Cached[qbin] = 1;
1459 return cacheSigma8[qbin];
1462 std::stringstream out;
1464 throw std::runtime_error(
"MPll::integrateSigma: index " + out.str() +
" not implemented");
1467 gsl_set_error_handler(old_handler);
1486 std::stringstream out;
1488 throw std::runtime_error(
"MPll::getSigma: index " + out.str() +
" not implemented");
1496 std::pair<double, double > qbin = std::make_pair(q_min, q_max);
1498 old_handler = gsl_set_error_handler_off();
1502 if (delta0Cached[qbin] == 0) {
1504 if (gsl_integration_cquad(&FD, q_min, q_max, 1.e-2, 1.e-1, w_delta, &avaDelta, &errDelta, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1505 cacheDelta0[qbin] = NN*avaDelta;
1506 delta0Cached[qbin] = 1;
1508 return cacheDelta0[qbin];
1511 if (delta2Cached[qbin] == 0) {
1513 if (gsl_integration_cquad(&FD, q_min, q_max, 1.e-2, 1.e-1, w_delta, &avaDelta, &errDelta, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1514 cacheDelta2[qbin] = NN*avaDelta;
1515 delta2Cached[qbin] = 1;
1517 return cacheDelta2[qbin];
1520 std::stringstream out;
1522 throw std::runtime_error(
"MPll::integrateDelta: index " + out.str() +
" not implemented");
1525 gsl_set_error_handler(old_handler);
1536 double q_cut = (mtau2 - MP2) * (MM2 - mtau2) / mtau2;
1537 if (q_max >= q_cut) {
1542 double prefactor =
mySM.
getMesons(
meson).
getLifetime() / HCUT * GF4 * VusVub_abs2 * fP2 * fM2 / (64. * M_PI2 * MM3 * Gammatau) * mtau2 * mtau;
1544 std::pair<double, double > qbin = std::make_pair(q_min, q_max);
1546 old_handler = gsl_set_error_handler_off();
1548 if (sigmaTreeCached[qbin] == 0) {
1550 if (gsl_integration_cquad(&FD, q_min, q_max, 1.e-2, 1.e-1, w_sigmaTree, &avaSigmaTree, &errSigmaTree, NULL) != 0)
return std::numeric_limits<double>::quiet_NaN();
1551 cacheSigmaTree[qbin] = avaSigmaTree;
1552 sigmaTreeCached[qbin] = 1;
1554 return prefactor * cacheSigmaTree[qbin];
1556 gsl_set_error_handler(old_handler);
1561 return MM2 * (mtau2 - MP2) - mtau2 * (mtau2 + q2 - MP2);
1566 return mySM.
getMesons(
meson).
getLifetime() / HCUT * GF4 * VusVub_abs2 * fP2 * fM2 / (128. * M_PI2 * MM3 * Gammatau) * mtau * (mtau2 - MP2) * (mtau2 - MP2) * (MM2 - mtau2) * (MM2 - mtau2);
const gslpp::complex computelamt_s() const
The product of the CKM elements .
const gslpp::complex computelamu_s() const
The product of the CKM elements .
bool getFlagUseDispersionRelation() const
bool getFlagMPll_DM() const
gslpp::vector< gslpp::complex > ** ComputeCoeffsnunu(QCD::lepton lepton=QCD::NOLEPTON, bool noSM=false) const
bool getFlagFixedWCbtos() const
bool getFlagNeutrinoTree() const
void setUpdateFlag(QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i, bool updated_i) const
sets the update flag for the initial and final state dependent object for .
bool getFlagMPll_FNALMILC() const
gslpp::vector< gslpp::complex > ** ComputeCoeffprimeBMll(double mu, QCD::lepton lepton, schemes scheme=NDR) const
Computes the chirality flipped Wilson coefficient for the process .
bool getUpdateFlag(QCD::meson meson_i, QCD::meson meson_j, QCD::lepton lep_i) const
gets the update flag for the initial and final state dependent object for .
gslpp::vector< gslpp::complex > ** ComputeCoeffBMll(double mu, QCD::lepton lepton, bool noSM=false, schemes scheme=NDR) const
Computes the Wilson coefficient for the process .
bool getFlagMPll_GRvDV() const
std::vector< std::string > initializeMPllParameters()
A method for initializing the parameters necessary for MPll.
double Integrand_ReTpar_pm(double up)
The sum of Integrand_ReTparplus() and Integrand_ReTparminus().
double getSigma1c(double q2)
The CP average .
double SigmaTree(double q2)
gslpp::complex H_A(double q2)
The helicity amplitude .
gslpp::complex h_lambda(double q2)
The non-pertubative ccbar contributions to the helicity amplitudes.
double F89(double q2)
The correction from .
gslpp::complex deltaC9_QCDF(double q2, bool spline=false)
QCDF Correction from various BFS papers (hep-ph/0403185, hep-ph/0412400) and Greub et....
gslpp::complex DeltaC9_KD(double q2)
gslpp::complex H_P(double q2)
The helicity amplitude .
gslpp::complex H_S(double q2)
The helicity amplitude .
gslpp::complex F87(double q2)
The correction from .
std::vector< std::string > mpllParameters
double Integrand_ImTparminus(double up)
The imaginary part of the integral involving at fixed , according to .
std::unique_ptr< F_2 > myF_2
gslpp::complex I1(double u, double q2)
The function from .
double Integrand_ReTparminus(double up)
The real part of the integral involving at fixed , according to .
void fit_DeltaC9_mumu()
The fitting routine for the QCDF correction in the muon channel.
gslpp::complex Tparminus(double u, double q2)
The function from .
double imDC9fit(double *x, double *p)
The fit function for the imaginary part of the QCDF correction .
double getDelta2c(double q2)
The CP asymmetry .
gslpp::complex F19(double q2)
The correction from .
double integrateSigma(int i, double q_min, double q_max)
The integral of from to .
gslpp::complex Cpar(double q2)
The correction from .
double reDC9fit(double *x, double *p)
The fit function for the real part of the QCDF correction .
const StandardModel & mySM
gslpp::complex V_L(double q2)
The helicity form factor .
gslpp::complex H_nunu(double q2, QCD::lepton lep)
The helicity amplitude for the invisible decay.
double getSigma(int i, double q_2)
The value of from to .
virtual ~MPll()
Destructor.
gslpp::complex funct_g(double q2)
double Integrand_ImTpar_pm(double up)
The sum of Integrand_ImTparplus() and Integrand_ImTparminus().
double Integrand_ReTparplus(double up)
The real part of the integral involving at fixed , according to .
gslpp::complex T_L(double q2)
The helicity form factor .
double getSigma2c(double q2)
The CP average .
gslpp::complex Tparplus(double u, double q2)
The function from .
std::unique_ptr< F_1 > myF_1
double integrateSigmaTree(double q_min, double q_max)
The integral of from to (arxiv/2301.06990)
double getintegratedSigmaTree()
The integral of from 0 to .
double getDelta1c(double q2)
The CP asymmetry .
gslpp::complex H_V(double q2)
The helicity amplitude .
gslpp::complex DeltaC9(double q2)
The total QCDF correction computed integrating over .
gslpp::complex deltaC7_QCDF(double q2, bool spline=false)
QCDF Correction from various BFS papers (hep-ph/0403185, hep-ph/0412400) and Greub et....
double getSigma6c(double q2)
The CP average .
gslpp::complex F27(double q2)
The correction from .
gslpp::complex fDeltaC9(double q2)
The total QCDF correction computed fitting over .
double S_L(double q2)
The helicity form factor .
MPll(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson pseudoscalar_i, QCD::lepton lep_i)
Constructor.
gslpp::complex deltaTpar(double q2)
The total correction from .
double integrateDelta(int i, double q_min, double q_max)
The integral of from to .
gslpp::complex F29(double q2)
The correction from .
double Integrand_ImTparplus(double up)
The imaginary part of the integral involving at fixed , according to .
const double & getLambdaM() const
double computeWidth() const
A method to compute the width of the meson from its lifetime.
const double & getDecayconst() const
A get method for the decay constant of the meson.
const double & getGegenalpha(int i) const
A get method to get the Gegenbaur coefficient.
double getLifetime() const
A get method for the lifetime of the meson.
const double & getMass() const
A get method to access the particle mass.
double getCharge() const
A get method to access the particle charge.
meson
An enum type for mesons.
const double getOptionalParameter(std::string name) const
A method to get parameters that are specific to only one set of observables.
const Meson & getMesons(const QCD::meson m) const
A get method to access a meson as an object of the type Meson.
lepton
An enum type for leptons.
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
void initializeMeson(QCD::meson meson_i) const
A method to initialize a meson.
const double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
const double Mbar2Mp(const double mbar, const quark q, const orders order=FULLNNLO) const
Converts the mass to the pole mass.
A model class for the Standard Model.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
const CKM & getCKM() const
A get method to retrieve the member object of type CKM.
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
const Flavour & getFlavour() const
const double getGF() const
A get method to retrieve the Fermi constant .
const double Als(const double mu, const orders order, const bool Nf_thr, const bool qed_flag) const
The running QCD coupling in the scheme including QED corrections.
const double getAle() const
A get method to retrieve the fine-structure constant .
A class for the correction in .