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);
349 gslpp::complex lambda_t;
355 gslpp::complex Delta_C9;
356 gslpp::complex exp_Phase;
362 double m_fit2_fplus_lat;
366 double m_fit2_fT_lat;
370 double m_fit2_f0_lat;
382 gslpp::vector<gslpp::complex> ** allcoeff;
383 gslpp::vector<gslpp::complex> ** allcoeffh;
384 gslpp::vector<gslpp::complex> ** allcoeffprime;
386 gslpp::vector<gslpp::complex> ** allcoeff_noSM;
388 gslpp::vector<gslpp::complex> ** allcoeff_nu;
390 gslpp::vector<gslpp::complex> ** allcoeff_noSM_nu;
393 gslpp::complex C_1L_bar;
394 gslpp::complex C_1Lh_bar;
396 gslpp::complex C_2L_bar;
397 gslpp::complex C_2Lh_bar;
405 gslpp::complex C_8Lh;
413 gslpp::complex C_10p;
417 gslpp::complex C_L_nunu_e;
418 gslpp::complex C_R_nunu_e;
419 gslpp::complex C_L_nunu_mu;
420 gslpp::complex C_R_nunu_mu;
421 gslpp::complex C_L_nunu_tau;
422 gslpp::complex C_R_nunu_tau;
424 gsl_interp_accel *acc_Re_deltaC7_QCDF;
425 gsl_interp_accel *acc_Im_deltaC7_QCDF;
426 gsl_interp_accel *acc_Re_deltaC9_QCDF;
427 gsl_interp_accel *acc_Im_deltaC9_QCDF;
429 gsl_spline *spline_Re_deltaC7_QCDF;
430 gsl_spline *spline_Im_deltaC7_QCDF;
431 gsl_spline *spline_Re_deltaC9_QCDF;
432 gsl_spline *spline_Im_deltaC9_QCDF;
435 std::vector<double> ReDeltaC9;
436 std::vector<double> ImDeltaC9;
437 std::vector<double> myq2;
438 TFitResultPtr refres;
439 TFitResultPtr imfres;
449 gslpp::complex H_0_pre;
450 gslpp::complex H_0_WC;
451 gslpp::complex H_c_WC;
452 gslpp::complex H_b_WC;
454 gslpp::complex ihalfMPI;
481 double ninetysixM_PI3MM3;
487 double threeGegen1otwo;
507 gslpp::complex F87_0;
508 gslpp::complex F87_1;
509 gslpp::complex F87_2;
510 gslpp::complex F87_3;
511 gslpp::complex F29_0;
512 gslpp::complex F29_L1;
513 gslpp::complex F29_1;
514 gslpp::complex F29_2;
515 gslpp::complex F29_3;
516 gslpp::complex F29_L1_1;
517 gslpp::complex F29_L1_2;
518 gslpp::complex F29_L1_3;
519 gslpp::complex F27_0;
520 gslpp::complex F27_1;
521 gslpp::complex F27_2;
522 gslpp::complex F27_3;
523 gslpp::complex F27_L1_1;
524 gslpp::complex F27_L1_2;
525 gslpp::complex F27_L1_3;
533 const double M_PI2 = M_PI * M_PI;
544 unsigned int fplus_lat_updated;
545 gslpp::vector<double> fplus_lat_cache;
547 unsigned int fT_lat_updated;
548 gslpp::vector<double> fT_lat_cache;
550 unsigned int f0_lat_updated;
551 gslpp::vector<double> f0_lat_cache;
553 unsigned int fplus_updated;
554 gslpp::vector<double> fplus_cache;
556 unsigned int fT_updated;
557 gslpp::vector<double> fT_cache;
559 unsigned int f0_updated;
562 unsigned int k2_updated;
563 gslpp::vector<double> k2_cache;
565 unsigned int beta_updated;
568 unsigned int lambda_updated;
570 unsigned int F_updated;
572 unsigned int VL_updated;
574 unsigned int TL_updated;
576 unsigned int SL_updated;
577 gslpp::vector<double> SL_cache;
579 unsigned int N_updated;
580 gslpp::vector<double> N_cache;
581 gslpp::complex Nc_cache;
583 unsigned int C_1_updated;
584 gslpp::complex C_1_cache;
586 unsigned int C_2_updated;
587 gslpp::complex C_2_cache;
589 unsigned int C_3_updated;
590 gslpp::complex C_3_cache;
592 unsigned int C_4_updated;
593 gslpp::complex C_4_cache;
595 unsigned int C_5_updated;
596 gslpp::complex C_5_cache;
598 unsigned int C_6_updated;
599 gslpp::complex C_6_cache;
601 unsigned int C_7_updated;
602 gslpp::complex C_7_cache;
604 unsigned int C_9_updated;
605 gslpp::complex C_9_cache;
607 unsigned int C_10_updated;
608 gslpp::complex C_10_cache;
610 unsigned int C_7p_updated;
611 gslpp::complex C_7p_cache;
613 unsigned int C_9p_updated;
614 gslpp::complex C_9p_cache;
616 unsigned int C_10p_updated;
617 gslpp::complex C_10p_cache;
619 unsigned int C_S_updated;
620 gslpp::complex C_S_cache;
622 unsigned int C_P_updated;
623 gslpp::complex C_P_cache;
625 unsigned int C_Sp_updated;
626 gslpp::complex C_Sp_cache;
628 unsigned int C_Pp_updated;
629 gslpp::complex C_Pp_cache;
631 unsigned int C_2Lh_updated;
632 gslpp::complex C_2Lh_cache;
634 unsigned int C_8Lh_updated;
635 gslpp::complex C_8Lh_cache;
637 unsigned int C_L_nunu_e_updated;
638 unsigned int C_L_nunu_mu_updated;
639 unsigned int C_L_nunu_tau_updated;
640 gslpp::complex C_L_nunu_e_cache;
641 gslpp::complex C_L_nunu_mu_cache;
642 gslpp::complex C_L_nunu_tau_cache;
644 unsigned int C_R_nunu_e_updated;
645 unsigned int C_R_nunu_mu_updated;
646 unsigned int C_R_nunu_tau_updated;
647 gslpp::complex C_R_nunu_e_cache;
648 gslpp::complex C_R_nunu_mu_cache;
649 gslpp::complex C_R_nunu_tau_cache;
651 unsigned int Yupdated;
652 gslpp::vector<double> Ycache;
654 unsigned int H_V0updated;
655 gslpp::vector<double> H_V0cache;
656 gslpp::complex H_V0Ccache[3];
657 gslpp::complex H_V0Ccache_dispersion[4];
659 unsigned int H_A0updated;
661 unsigned int H_Supdated;
662 gslpp::vector<double> H_Scache;
664 unsigned int H_P_updated;
665 gslpp::vector<double> H_P_cache;
667 unsigned int I0_updated;
668 unsigned int I2_updated;
669 unsigned int I8_updated;
671 unsigned int Itree_updated;
672 gslpp::vector<double> Itree_cache;
674 std::map<std::pair<double, double>,
unsigned int > I1Cached;
676 std::map<std::pair<double, double>,
unsigned int > sigma0Cached;
677 std::map<std::pair<double, double>,
unsigned int > sigma2Cached;
679 std::map<std::pair<double, double>,
unsigned int > delta0Cached;
680 std::map<std::pair<double, double>,
unsigned int > delta2Cached;
682 std::map<std::pair<double, double>,
unsigned int > sigmaTreeCached;
698 gsl_integration_cquad_workspace * w_sigma;
699 gsl_integration_cquad_workspace * w_delta;
700 gsl_integration_cquad_workspace * w_sigmaTree;
701 gsl_integration_cquad_workspace * w_DTPPR;
703 gsl_error_handler_t * old_handler;
705 std::map<std::pair<double, double>, gslpp::complex > cacheI1;
707 std::map<std::pair<double, double>,
double > cacheSigma0;
708 std::map<std::pair<double, double>,
double > cacheSigma2;
710 std::map<std::pair<double, double>,
double > cacheDelta0;
711 std::map<std::pair<double, double>,
double > cacheDelta2;
713 std::map<std::pair<double, double>,
double > cacheSigmaTree;
715 std::map<double, unsigned int> deltaTparpCached;
716 std::map<double, unsigned int> deltaTparmCached;
718 std::map<double, gslpp::complex> cacheDeltaTparp;
719 std::map<double, gslpp::complex> cacheDeltaTparm;
721 unsigned int deltaTparpupdated;
722 unsigned int deltaTparmupdated;
724 unsigned int T_updated;
725 gslpp::vector<double> T_cache;
732 void updateParameters();
747 double LCSR_fit1(
double q2,
double r_1,
double r_2,
double m_fit2);
757 double LCSR_fit2(
double q2,
double r_2,
double m_fit2);
769 double LCSR_fit3(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
777 double zeta(
double q2);
785 double zeta_DM(
double q2);
793 double phiplus_DM(
double q2,
double m_fit2);
801 double phi0_DM(
double q2);
809 double phiT_DM(
double q2,
double m_fit2);
820 double fplus_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
831 double f0_DM(
double q2,
double b_0,
double b_1,
double b_2);
842 double fT_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
854 double LATTICE_fit1(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
866 double LATTICE_fit2(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
874 double f_plus(
double q2);
882 double f_T(
double q2);
890 double f_0(
double q2);
898 gslpp::complex H_0(
double q2);
906 gslpp::complex H_c(
double q2,
double mu2);
914 gslpp::complex H_b(
double q2,
double mu2);
922 gslpp::complex Y(
double q2);
930 double k2 (
double q2);
938 double beta (
double q2);
945 double beta2 (
double q2);
953 double lambda(
double q2);
968 double I_1c(
double q2);
975 double I_2c(
double q2);
982 double I_6c(
double q2);
991 double Delta(
int i,
double q2);
1043 return Delta(0, q2);
1053 return Delta(2, q2);
1062 gslpp::complex
I1(
double u,
double q2);
1070 gslpp::complex
Tparplus(
double u,
double q2);
1078 gslpp::complex
Tparminus(
double u,
double q2);
1127 gslpp::complex
F19(
double q2);
1134 gslpp::complex
F27(
double q2);
1141 gslpp::complex
F29(
double q2);
1148 gslpp::complex
F87(
double q2);
1155 double F89(
double q2);
1162 gslpp::complex
Cpar(
double q2);
1177 double reDC9fit(
double* x,
double* p);
1185 double imDC9fit(
double* x,
double* p);
1197 gslpp::complex
fDeltaC9(
double q2);
1204 gslpp::complex
DeltaC9(
double q2);
1211 gslpp::complex
deltaC7_QCDF(
double q2,
bool spline =
false);
1218 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 .
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 .
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 .