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;
365 double m_fit2_fplus_lat;
369 double m_fit2_fT_lat;
373 double m_fit2_f0_lat;
385 gslpp::vector<gslpp::complex> ** allcoeff;
386 gslpp::vector<gslpp::complex> ** allcoeffh;
387 gslpp::vector<gslpp::complex> ** allcoeffprime;
389 gslpp::vector<gslpp::complex> ** allcoeff_noSM;
391 gslpp::vector<gslpp::complex> ** allcoeff_nu;
393 gslpp::vector<gslpp::complex> ** allcoeff_noSM_nu;
396 gslpp::complex C_1L_bar;
397 gslpp::complex C_1Lh_bar;
399 gslpp::complex C_2L_bar;
400 gslpp::complex C_2Lh_bar;
408 gslpp::complex C_8Lh;
416 gslpp::complex C_10p;
420 gslpp::complex C_L_nunu_e;
421 gslpp::complex C_R_nunu_e;
422 gslpp::complex C_L_nunu_mu;
423 gslpp::complex C_R_nunu_mu;
424 gslpp::complex C_L_nunu_tau;
425 gslpp::complex C_R_nunu_tau;
427 gsl_interp_accel *acc_Re_deltaC7_QCDF;
428 gsl_interp_accel *acc_Im_deltaC7_QCDF;
429 gsl_interp_accel *acc_Re_deltaC9_QCDF;
430 gsl_interp_accel *acc_Im_deltaC9_QCDF;
432 gsl_spline *spline_Re_deltaC7_QCDF;
433 gsl_spline *spline_Im_deltaC7_QCDF;
434 gsl_spline *spline_Re_deltaC9_QCDF;
435 gsl_spline *spline_Im_deltaC9_QCDF;
438 std::vector<double> ReDeltaC9;
439 std::vector<double> ImDeltaC9;
440 std::vector<double> myq2;
441 TFitResultPtr refres;
442 TFitResultPtr imfres;
452 gslpp::complex H_0_pre;
453 gslpp::complex H_0_WC;
454 gslpp::complex H_c_WC;
455 gslpp::complex H_b_WC;
457 gslpp::complex ihalfMPI;
484 double ninetysixM_PI3MM3;
490 double threeGegen1otwo;
510 gslpp::complex F87_0;
511 gslpp::complex F87_1;
512 gslpp::complex F87_2;
513 gslpp::complex F87_3;
514 gslpp::complex F29_0;
515 gslpp::complex F29_L1;
516 gslpp::complex F29_1;
517 gslpp::complex F29_2;
518 gslpp::complex F29_3;
519 gslpp::complex F29_L1_1;
520 gslpp::complex F29_L1_2;
521 gslpp::complex F29_L1_3;
522 gslpp::complex F27_0;
523 gslpp::complex F27_1;
524 gslpp::complex F27_2;
525 gslpp::complex F27_3;
526 gslpp::complex F27_L1_1;
527 gslpp::complex F27_L1_2;
528 gslpp::complex F27_L1_3;
536 const double M_PI2 = M_PI * M_PI;
547 unsigned int fplus_lat_updated;
548 gslpp::vector<double> fplus_lat_cache;
550 unsigned int fT_lat_updated;
551 gslpp::vector<double> fT_lat_cache;
553 unsigned int f0_lat_updated;
554 gslpp::vector<double> f0_lat_cache;
556 unsigned int fplus_updated;
557 gslpp::vector<double> fplus_cache;
559 unsigned int fT_updated;
560 gslpp::vector<double> fT_cache;
562 unsigned int f0_updated;
565 unsigned int k2_updated;
566 gslpp::vector<double> k2_cache;
568 unsigned int beta_updated;
571 unsigned int lambda_updated;
573 unsigned int F_updated;
575 unsigned int VL_updated;
577 unsigned int TL_updated;
579 unsigned int SL_updated;
580 gslpp::vector<double> SL_cache;
582 unsigned int N_updated;
583 gslpp::vector<double> N_cache;
584 gslpp::complex Nc_cache;
586 unsigned int C_1_updated;
587 gslpp::complex C_1_cache;
589 unsigned int C_2_updated;
590 gslpp::complex C_2_cache;
592 unsigned int C_3_updated;
593 gslpp::complex C_3_cache;
595 unsigned int C_4_updated;
596 gslpp::complex C_4_cache;
598 unsigned int C_5_updated;
599 gslpp::complex C_5_cache;
601 unsigned int C_6_updated;
602 gslpp::complex C_6_cache;
604 unsigned int C_7_updated;
605 gslpp::complex C_7_cache;
607 unsigned int C_9_updated;
608 gslpp::complex C_9_cache;
610 unsigned int C_10_updated;
611 gslpp::complex C_10_cache;
613 unsigned int C_7p_updated;
614 gslpp::complex C_7p_cache;
616 unsigned int C_9p_updated;
617 gslpp::complex C_9p_cache;
619 unsigned int C_10p_updated;
620 gslpp::complex C_10p_cache;
622 unsigned int C_S_updated;
623 gslpp::complex C_S_cache;
625 unsigned int C_P_updated;
626 gslpp::complex C_P_cache;
628 unsigned int C_Sp_updated;
629 gslpp::complex C_Sp_cache;
631 unsigned int C_Pp_updated;
632 gslpp::complex C_Pp_cache;
634 unsigned int C_2Lh_updated;
635 gslpp::complex C_2Lh_cache;
637 unsigned int C_8Lh_updated;
638 gslpp::complex C_8Lh_cache;
640 unsigned int C_L_nunu_e_updated;
641 unsigned int C_L_nunu_mu_updated;
642 unsigned int C_L_nunu_tau_updated;
643 gslpp::complex C_L_nunu_e_cache;
644 gslpp::complex C_L_nunu_mu_cache;
645 gslpp::complex C_L_nunu_tau_cache;
647 unsigned int C_R_nunu_e_updated;
648 unsigned int C_R_nunu_mu_updated;
649 unsigned int C_R_nunu_tau_updated;
650 gslpp::complex C_R_nunu_e_cache;
651 gslpp::complex C_R_nunu_mu_cache;
652 gslpp::complex C_R_nunu_tau_cache;
654 unsigned int Yupdated;
655 gslpp::vector<double> Ycache;
657 unsigned int H_V0updated;
658 gslpp::vector<double> H_V0cache;
659 gslpp::complex H_V0Ccache[3];
660 gslpp::complex H_V0Ccache_dispersion[4];
662 unsigned int H_A0updated;
664 unsigned int H_Supdated;
665 gslpp::vector<double> H_Scache;
667 unsigned int H_P_updated;
668 gslpp::vector<double> H_P_cache;
670 unsigned int I0_updated;
671 unsigned int I2_updated;
672 unsigned int I8_updated;
674 unsigned int Itree_updated;
675 gslpp::vector<double> Itree_cache;
677 std::map<std::pair<double, double>,
unsigned int > I1Cached;
679 std::map<std::pair<double, double>,
unsigned int > sigma0Cached;
680 std::map<std::pair<double, double>,
unsigned int > sigma2Cached;
682 std::map<std::pair<double, double>,
unsigned int > delta0Cached;
683 std::map<std::pair<double, double>,
unsigned int > delta2Cached;
685 std::map<std::pair<double, double>,
unsigned int > sigmaTreeCached;
701 gsl_integration_cquad_workspace * w_sigma;
702 gsl_integration_cquad_workspace * w_delta;
703 gsl_integration_cquad_workspace * w_sigmaTree;
704 gsl_integration_cquad_workspace * w_DTPPR;
706 gsl_error_handler_t * old_handler;
708 std::map<std::pair<double, double>, gslpp::complex > cacheI1;
710 std::map<std::pair<double, double>,
double > cacheSigma0;
711 std::map<std::pair<double, double>,
double > cacheSigma2;
713 std::map<std::pair<double, double>,
double > cacheDelta0;
714 std::map<std::pair<double, double>,
double > cacheDelta2;
716 std::map<std::pair<double, double>,
double > cacheSigmaTree;
718 std::map<double, unsigned int> deltaTparpCached;
719 std::map<double, unsigned int> deltaTparmCached;
721 std::map<double, gslpp::complex> cacheDeltaTparp;
722 std::map<double, gslpp::complex> cacheDeltaTparm;
724 unsigned int deltaTparpupdated;
725 unsigned int deltaTparmupdated;
727 unsigned int T_updated;
728 gslpp::vector<double> T_cache;
735 void updateParameters();
750 double LCSR_fit1(
double q2,
double r_1,
double r_2,
double m_fit2);
760 double LCSR_fit2(
double q2,
double r_2,
double m_fit2);
772 double LCSR_fit3(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
780 double zeta(
double q2);
788 double zeta_DM(
double q2);
796 double phiplus_DM(
double q2,
double m_fit2);
804 double phi0_DM(
double q2);
812 double phiT_DM(
double q2,
double m_fit2);
823 double fplus_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
834 double f0_DM(
double q2,
double b_0,
double b_1,
double b_2);
845 double fT_DM(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
857 double LATTICE_fit1(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
869 double LATTICE_fit2(
double q2,
double b_0,
double b_1,
double b_2,
double m_fit2);
877 double f_plus(
double q2);
885 double f_T(
double q2);
893 double f_0(
double q2);
901 gslpp::complex H_0(
double q2);
909 gslpp::complex H_c(
double q2,
double mu2);
917 gslpp::complex H_b(
double q2,
double mu2);
925 gslpp::complex Y(
double q2);
933 double k2 (
double q2);
941 double beta (
double q2);
948 double beta2 (
double q2);
956 double lambda(
double q2);
971 double I_1c(
double q2);
978 double I_2c(
double q2);
985 double I_6c(
double q2);
994 double Delta(
int i,
double q2);
1046 return Delta(0, q2);
1056 return Delta(2, q2);
1065 gslpp::complex
I1(
double u,
double q2);
1073 gslpp::complex
Tparplus(
double u,
double q2);
1081 gslpp::complex
Tparminus(
double u,
double q2);
1130 gslpp::complex
F19(
double q2);
1137 gslpp::complex
F27(
double q2);
1144 gslpp::complex
F29(
double q2);
1151 gslpp::complex
F87(
double q2);
1158 double F89(
double q2);
1165 gslpp::complex
Cpar(
double q2);
1180 double reDC9fit(
double* x,
double* p);
1188 double imDC9fit(
double* x,
double* p);
1200 gslpp::complex
fDeltaC9(
double q2);
1207 gslpp::complex
DeltaC9(
double q2);
1214 gslpp::complex
deltaC7_QCDF(
double q2,
bool spline =
false);
1221 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 .