14#include <gsl/gsl_integration.h>
17#include <TFitResultPtr.h>
18#include <gsl/gsl_spline.h>
24#define GSL_INTERP_DIM_DC 10
27#define NFPOLARBASIS_MPLL false
189 gslpp::complex
funct_g(
double q2);
206 gslpp::complex
V_L(
double q2);
214 gslpp::complex
T_L(
double q2);
222 double S_L(
double q2);
229 gslpp::complex
H_V(
double q2);
237 gslpp::complex
H_A(
double q2);
245 gslpp::complex
H_S(
double q2);
253 gslpp::complex
H_P(
double q2);
341 gslpp::complex lambda_t;
347 gslpp::complex Delta_C9;
348 gslpp::complex exp_Phase;
354 double m_fit2_fplus_lat;
358 double m_fit2_fT_lat;
362 double m_fit2_f0_lat;
374 gslpp::vector<gslpp::complex> ** allcoeff;
375 gslpp::vector<gslpp::complex> ** allcoeffh;
376 gslpp::vector<gslpp::complex> ** allcoeffprime;
378 gslpp::vector<gslpp::complex> ** allcoeff_noSM;
380 gslpp::vector<gslpp::complex> ** allcoeff_nu;
382 gslpp::vector<gslpp::complex> ** allcoeff_noSM_nu;
385 gslpp::complex C_1L_bar;
386 gslpp::complex C_1Lh_bar;
388 gslpp::complex C_2L_bar;
389 gslpp::complex C_2Lh_bar;
397 gslpp::complex C_8Lh;
405 gslpp::complex C_10p;
409 gslpp::complex C_L_nunu;
410 gslpp::complex C_R_nunu;
412 gslpp::complex C_L_nunu_e;
413 gslpp::complex C_R_nunu_e;
414 gslpp::complex C_L_nunu_mu;
415 gslpp::complex C_R_nunu_mu;
416 gslpp::complex C_L_nunu_tau;
417 gslpp::complex C_R_nunu_tau;
419 gsl_interp_accel *acc_Re_deltaC7_QCDF;
420 gsl_interp_accel *acc_Im_deltaC7_QCDF;
421 gsl_interp_accel *acc_Re_deltaC9_QCDF;
422 gsl_interp_accel *acc_Im_deltaC9_QCDF;
424 gsl_spline *spline_Re_deltaC7_QCDF;
425 gsl_spline *spline_Im_deltaC7_QCDF;
426 gsl_spline *spline_Re_deltaC9_QCDF;
427 gsl_spline *spline_Im_deltaC9_QCDF;
430 std::vector<double> ReDeltaC9;
431 std::vector<double> ImDeltaC9;
432 std::vector<double> myq2;
433 TFitResultPtr refres;
434 TFitResultPtr imfres;
444 gslpp::complex H_0_pre;
445 gslpp::complex H_0_WC;
446 gslpp::complex H_c_WC;
447 gslpp::complex H_b_WC;
449 gslpp::complex ihalfMPI;
476 double ninetysixM_PI3MM3;
482 double threeGegen1otwo;
502 gslpp::complex F87_0;
503 gslpp::complex F87_1;
504 gslpp::complex F87_2;
505 gslpp::complex F87_3;
506 gslpp::complex F29_0;
507 gslpp::complex F29_L1;
508 gslpp::complex F29_1;
509 gslpp::complex F29_2;
510 gslpp::complex F29_3;
511 gslpp::complex F29_L1_1;
512 gslpp::complex F29_L1_2;
513 gslpp::complex F29_L1_3;
514 gslpp::complex F27_0;
515 gslpp::complex F27_1;
516 gslpp::complex F27_2;
517 gslpp::complex F27_3;
518 gslpp::complex F27_L1_1;
519 gslpp::complex F27_L1_2;
520 gslpp::complex F27_L1_3;
528 const double M_PI2 = M_PI * M_PI;
539 unsigned int fplus_lat_updated;
540 gslpp::vector<double> fplus_lat_cache;
542 unsigned int fT_lat_updated;
543 gslpp::vector<double> fT_lat_cache;
545 unsigned int f0_lat_updated;
546 gslpp::vector<double> f0_lat_cache;
548 unsigned int fplus_updated;
549 gslpp::vector<double> fplus_cache;
551 unsigned int fT_updated;
552 gslpp::vector<double> fT_cache;
554 unsigned int f0_updated;
557 unsigned int k2_updated;
558 gslpp::vector<double> k2_cache;
560 unsigned int beta_updated;
563 unsigned int lambda_updated;
565 unsigned int F_updated;
567 unsigned int VL_updated;
569 unsigned int TL_updated;
571 unsigned int SL_updated;
572 gslpp::vector<double> SL_cache;
574 unsigned int N_updated;
575 gslpp::vector<double> N_cache;
576 gslpp::complex Nc_cache;
578 unsigned int C_1_updated;
579 gslpp::complex C_1_cache;
581 unsigned int C_2_updated;
582 gslpp::complex C_2_cache;
584 unsigned int C_3_updated;
585 gslpp::complex C_3_cache;
587 unsigned int C_4_updated;
588 gslpp::complex C_4_cache;
590 unsigned int C_5_updated;
591 gslpp::complex C_5_cache;
593 unsigned int C_6_updated;
594 gslpp::complex C_6_cache;
596 unsigned int C_7_updated;
597 gslpp::complex C_7_cache;
599 unsigned int C_9_updated;
600 gslpp::complex C_9_cache;
602 unsigned int C_10_updated;
603 gslpp::complex C_10_cache;
605 unsigned int C_7p_updated;
606 gslpp::complex C_7p_cache;
608 unsigned int C_9p_updated;
609 gslpp::complex C_9p_cache;
611 unsigned int C_10p_updated;
612 gslpp::complex C_10p_cache;
614 unsigned int C_S_updated;
615 gslpp::complex C_S_cache;
617 unsigned int C_P_updated;
618 gslpp::complex C_P_cache;
620 unsigned int C_Sp_updated;
621 gslpp::complex C_Sp_cache;
623 unsigned int C_Pp_updated;
624 gslpp::complex C_Pp_cache;
626 unsigned int C_2Lh_updated;
627 gslpp::complex C_2Lh_cache;
629 unsigned int C_8Lh_updated;
630 gslpp::complex C_8Lh_cache;
632 unsigned int C_L_nunu_updated;
633 gslpp::complex C_L_nunu_cache;
635 unsigned int C_R_nunu_updated;
636 gslpp::complex C_R_nunu_cache;
638 unsigned int Yupdated;
639 gslpp::vector<double> Ycache;
641 unsigned int H_V0updated;
642 gslpp::vector<double> H_V0cache;
643 gslpp::complex H_V0Ccache[3];
644 gslpp::complex H_V0Ccache_dispersion[4];
646 unsigned int H_A0updated;
648 unsigned int H_Supdated;
649 gslpp::vector<double> H_Scache;
651 unsigned int H_P_updated;
652 gslpp::vector<double> H_P_cache;
654 unsigned int I0_updated;
655 unsigned int I2_updated;
656 unsigned int I8_updated;
658 unsigned int Itree_updated;
659 gslpp::vector<double> Itree_cache;
661 std::map<std::pair<double, double>,
unsigned int > I1Cached;
663 std::map<std::pair<double, double>,
unsigned int > sigma0Cached;
664 std::map<std::pair<double, double>,
unsigned int > sigma2Cached;
666 std::map<std::pair<double, double>,
unsigned int > delta0Cached;
667 std::map<std::pair<double, double>,
unsigned int > delta2Cached;
669 std::map<std::pair<double, double>,
unsigned int > sigmaTreeCached;
685 gsl_integration_cquad_workspace * w_sigma;
686 gsl_integration_cquad_workspace * w_delta;
687 gsl_integration_cquad_workspace * w_sigmaTree;
688 gsl_integration_cquad_workspace * w_DTPPR;
690 gsl_error_handler_t * old_handler;
692 std::map<std::pair<double, double>, gslpp::complex > cacheI1;
694 std::map<std::pair<double, double>,
double > cacheSigma0;
695 std::map<std::pair<double, double>,
double > cacheSigma2;
697 std::map<std::pair<double, double>,
double > cacheDelta0;
698 std::map<std::pair<double, double>,
double > cacheDelta2;
700 std::map<std::pair<double, double>,
double > cacheSigmaTree;
702 std::map<double, unsigned int> deltaTparpCached;
703 std::map<double, unsigned int> deltaTparmCached;
705 std::map<double, gslpp::complex> cacheDeltaTparp;
706 std::map<double, gslpp::complex> cacheDeltaTparm;
708 unsigned int deltaTparpupdated;
709 unsigned int deltaTparmupdated;
711 unsigned int T_updated;
712 gslpp::vector<double> T_cache;
719 void updateParameters();
734 double LCSR_fit1(
double q2,
double r_1,
double r_2,
double m_fit2);
744 double LCSR_fit2(
double q2,
double r_2,
double m_fit2);
756 double LCSR_fit3(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
764 double zeta(
double q2);
772 double zeta_DM(
double q2);
780 double phiplus_DM(
double q2,
double m_fit2);
788 double phi0_DM(
double q2);
796 double phiT_DM(
double q2,
double m_fit2);
807 double fplus_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
818 double f0_DM(
double q2,
double b_0,
double b_1,
double b_2);
829 double fT_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
841 double LATTICE_fit1(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
853 double LATTICE_fit2(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
861 double f_plus(
double q2);
869 double f_T(
double q2);
877 double f_0(
double q2);
885 gslpp::complex H_0(
double q2);
893 gslpp::complex H_c(
double q2,
double mu2);
901 gslpp::complex H_b(
double q2,
double mu2);
909 gslpp::complex Y(
double q2);
917 double k2 (
double q2);
925 double beta (
double q2);
932 double beta2 (
double q2);
940 double lambda(
double q2);
955 double I_1c(
double q2);
962 double I_2c(
double q2);
969 double I_6c(
double q2);
978 double Delta(
int i,
double q2);
1030 return Delta(0, q2);
1040 return Delta(2, q2);
1049 gslpp::complex
I1(
double u,
double q2);
1057 gslpp::complex
Tparplus(
double u,
double q2);
1065 gslpp::complex
Tparminus(
double u,
double q2);
1114 gslpp::complex
F19(
double q2);
1121 gslpp::complex
F27(
double q2);
1128 gslpp::complex
F29(
double q2);
1135 gslpp::complex
F87(
double q2);
1142 double F89(
double q2);
1149 gslpp::complex
Cpar(
double q2);
1164 double reDC9fit(
double* x,
double* p);
1172 double imDC9fit(
double* x,
double* p);
1184 gslpp::complex
fDeltaC9(
double q2);
1191 gslpp::complex
DeltaC9(
double q2);
1198 gslpp::complex
deltaC7_QCDF(
double q2,
bool spline =
false);
1205 gslpp::complex
deltaC9_QCDF(
double q2,
bool spline =
false);
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 .
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 .
double getwidth()
The width of the meson M.
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 .
meson
An enum type for mesons.
lepton
An enum type for leptons.
A model class for the Standard Model.
A class for the correction in .