14 #include <gsl/gsl_sf_zeta.h>
15 #include <boost/bind.hpp>
17 #include <TFitResult.h>
18 #include <gsl/gsl_sf_gegenbauer.h>
19 #include <gsl/gsl_sf_expint.h>
22 : mySM(SM_i), myF_1(new
F_1()), myF_2(new
F_2()),
76 deltaTparpupdated = 0;
77 deltaTparmupdated = 0;
78 deltaTperpupdated = 0;
80 w_sigma = gsl_integration_cquad_workspace_alloc(100);
82 w_delta = gsl_integration_cquad_workspace_alloc(100);
84 acc_Re_T_perp = gsl_interp_accel_alloc();
85 acc_Im_T_perp = gsl_interp_accel_alloc();
86 acc_Re_T_para = gsl_interp_accel_alloc();
87 acc_Im_T_para = gsl_interp_accel_alloc();
89 spline_Re_T_perp = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
90 spline_Im_T_perp = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
91 spline_Re_T_para = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
92 spline_Im_T_para = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
95 acc_Re_T_perp_conj = gsl_interp_accel_alloc();
96 acc_Im_T_perp_conj = gsl_interp_accel_alloc();
97 acc_Re_T_para_conj = gsl_interp_accel_alloc();
98 acc_Im_T_para_conj = gsl_interp_accel_alloc();
100 spline_Re_T_perp_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
101 spline_Im_T_perp_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
102 spline_Re_T_para_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
103 spline_Im_T_para_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM);
106 acc_Re_deltaC7_QCDF = gsl_interp_accel_alloc();
107 acc_Im_deltaC7_QCDF = gsl_interp_accel_alloc();
108 acc_Re_deltaC9_QCDF = gsl_interp_accel_alloc();
109 acc_Im_deltaC9_QCDF = gsl_interp_accel_alloc();
111 spline_Re_deltaC7_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
112 spline_Im_deltaC7_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
113 spline_Re_deltaC9_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
114 spline_Im_deltaC9_QCDF = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
117 acc_Re_deltaC7_QCDF_conj = gsl_interp_accel_alloc();
118 acc_Im_deltaC7_QCDF_conj = gsl_interp_accel_alloc();
119 acc_Re_deltaC9_QCDF_conj = gsl_interp_accel_alloc();
120 acc_Im_deltaC9_QCDF_conj = gsl_interp_accel_alloc();
122 spline_Re_deltaC7_QCDF_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
123 spline_Im_deltaC7_QCDF_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
124 spline_Re_deltaC9_QCDF_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
125 spline_Im_deltaC9_QCDF_conj = gsl_spline_alloc(gsl_interp_cspline, GSL_INTERP_DIM_DC);
132 F87_1 = (4. / 3. * M_PI2 - 40. / 3.);
133 F87_2 = (32. / 9. * M_PI2 - 316. / 9.);
134 F87_3 = (200. / 27. * M_PI2 - 658. / 9.);
136 F89_0 = (104. / 9. - 32. / 27. * M_PI2);
137 F89_1 = (1184. / 27. - 40. / 9. * M_PI2);
138 F89_2 = (-32. / 3. * M_PI2 + 14212. / 135.);
139 F89_3 = (-560. / 27. * M_PI2 + 193444. / 945.);
154 #if NFPOLARBASIS_MVLL
156 <<
"a_0Vphi" <<
"a_1Vphi" <<
"a_2Vphi" <<
"MRV" <<
"a_0A0phi" <<
"a_1A0phi" <<
"a_2A0phi" <<
"MRA0"
157 <<
"a_0A1phi" <<
"a_1A1phi" <<
"a_2A1phi" <<
"MRA1" <<
"a_1A12phi" <<
"a_2A12phi" <<
"MRA12"
158 <<
"a_0T1phi" <<
"a_1T1phi" <<
"a_2T1phi" <<
"MRT1" <<
"a_1T2phi" <<
"a_2T2phi" <<
"MRT2"
159 <<
"a_0T23phi" <<
"a_1T23phi" <<
"a_2T23phi" <<
"MRT23"
160 <<
"absh_0" <<
"absh_p" <<
"absh_m" <<
"argh_0" <<
"argh_p" <<
"argh_m"
161 <<
"absh_0_1" <<
"absh_p_1" <<
"absh_m_1" <<
"argh_0_1" <<
"argh_p_1" <<
"argh_m_1"
162 <<
"absh_p_2" <<
"absh_m_2" <<
"argh_p_2" <<
"argh_m_2" <<
"xs_phi" <<
"SU3_breaking_abs" <<
"SU3_breaking_arg";
164 <<
"a_0V" <<
"a_1V" <<
"a_2V" <<
"MRV" <<
"a_0A0" <<
"a_1A0" <<
"a_2A0" <<
"MRA0"
165 <<
"a_0A1" <<
"a_1A1" <<
"a_2A1" <<
"MRA1" <<
"a_1A12" <<
"a_2A12" <<
"MRA12"
166 <<
"a_0T1" <<
"a_1T1" <<
"a_2T1" <<
"MRT1" <<
"a_1T2" <<
"a_2T2" <<
"MRT2"
167 <<
"a_0T23" <<
"a_1T23" <<
"a_2T23" <<
"MRT23"
168 <<
"absh_0" <<
"absh_p" <<
"absh_m" <<
"argh_0" <<
"argh_p" <<
"argh_m"
169 <<
"absh_0_1" <<
"absh_p_1" <<
"absh_m_1" <<
"argh_0_1" <<
"argh_p_1" <<
"argh_m_1"
170 <<
"absh_p_2" <<
"absh_m_2" <<
"argh_p_2" <<
"argh_m_2";
173 <<
"a_0Vphi" <<
"a_1Vphi" <<
"a_2Vphi" <<
"MRV" <<
"a_0A0phi" <<
"a_1A0phi" <<
"a_2A0phi" <<
"MRA0"
174 <<
"a_0A1phi" <<
"a_1A1phi" <<
"a_2A1phi" <<
"MRA1" <<
"a_1A12phi" <<
"a_2A12phi" <<
"MRA12"
175 <<
"a_0T1phi" <<
"a_1T1phi" <<
"a_2T1phi" <<
"MRT1" <<
"a_1T2phi" <<
"a_2T2phi" <<
"MRT2"
176 <<
"a_0T23phi" <<
"a_1T23phi" <<
"a_2T23phi" <<
"MRT23"
177 <<
"reh_0" <<
"reh_p" <<
"reh_m" <<
"imh_0" <<
"imh_p" <<
"imh_m"
178 <<
"reh_0_1" <<
"reh_p_1" <<
"reh_m_1" <<
"imh_0_1" <<
"imh_p_1" <<
"imh_m_1"
179 <<
"reh_p_2" <<
"reh_m_2" <<
"imh_p_2" <<
"imh_m_2" <<
"xs_phi" <<
"SU3_breaking_abs" <<
"SU3_breaking_arg";
181 <<
"a_0V" <<
"a_1V" <<
"a_2V" <<
"MRV" <<
"a_0A0" <<
"a_1A0" <<
"a_2A0" <<
"MRA0"
182 <<
"a_0A1" <<
"a_1A1" <<
"a_2A1" <<
"MRA1" <<
"a_1A12" <<
"a_2A12" <<
"MRA12"
183 <<
"a_0T1" <<
"a_1T1" <<
"a_2T1" <<
"MRT1" <<
"a_1T2" <<
"a_2T2" <<
"MRT2"
184 <<
"a_0T23" <<
"a_1T23" <<
"a_2T23" <<
"MRT23"
185 <<
"reh_0" <<
"reh_p" <<
"reh_m" <<
"imh_0" <<
"imh_p" <<
"imh_m"
186 <<
"reh_0_1" <<
"reh_p_1" <<
"reh_m_1" <<
"imh_0_1" <<
"imh_p_1" <<
"imh_m_1"
187 <<
"reh_p_2" <<
"reh_m_2" <<
"imh_p_2" <<
"imh_m_2";
190 std::stringstream out;
192 throw std::runtime_error(
"MVll: vector " + out.str() +
" not implemented");
198 <<
"a_0Vphi" <<
"a_1Vphi" <<
"a_2Vphi" <<
"MRV" <<
"a_0A0phi" <<
"a_1A0phi" <<
"a_2A0phi" <<
"MRA0"
199 <<
"a_0A1phi" <<
"a_1A1phi" <<
"a_2A1phi" <<
"MRA1" <<
"a_1A12phi" <<
"a_2A12phi" <<
"MRA12"
200 <<
"a_0T1phi" <<
"a_1T1phi" <<
"a_2T1phi" <<
"MRT1" <<
"a_1T2phi" <<
"a_2T2phi" <<
"MRT2"
201 <<
"a_0T23phi" <<
"a_1T23phi" <<
"a_2T23phi" <<
"MRT23"
202 <<
"r1_1" <<
"r2_1" <<
"deltaC9_1" <<
"phDC9_1"
203 <<
"r1_2" <<
"r2_2" <<
"deltaC9_2" <<
"phDC9_2"
204 <<
"r1_3" <<
"r2_3" <<
"deltaC9_3" <<
"phDC9_3" <<
"xs_phi" <<
"SU3_breaking_abs" <<
"SU3_breaking_arg";
206 <<
"a_0V" <<
"a_1V" <<
"a_2V" <<
"MRV" <<
"a_0A0" <<
"a_1A0" <<
"a_2A0" <<
"MRA0"
207 <<
"a_0A1" <<
"a_1A1" <<
"a_2A1" <<
"MRA1" <<
"a_1A12" <<
"a_2A12" <<
"MRA12"
208 <<
"a_0T1" <<
"a_1T1" <<
"a_2T1" <<
"MRT1" <<
"a_1T2" <<
"a_2T2" <<
"MRT2"
209 <<
"a_0T23" <<
"a_1T23" <<
"a_2T23" <<
"MRT23"
210 <<
"r1_1" <<
"r2_1" <<
"deltaC9_1" <<
"phDC9_1"
211 <<
"r1_2" <<
"r2_2" <<
"deltaC9_2" <<
"phDC9_2"
212 <<
"r1_3" <<
"r2_3" <<
"deltaC9_3" <<
"phDC9_3";
222 void MVll::updateParameters()
349 std::stringstream out;
351 throw std::runtime_error(
"MVll: vector " + out.str() +
" not implemented");
355 #if NFPOLARBASIS_MVLL
400 C_1 = ((*(allcoeff[
LO]))(0) + (*(allcoeff[
NLO]))(0));
401 C_1L_bar = (*(allcoeff[
LO]))(0) / 2.;
402 C_2 = ((*(allcoeff[
LO]))(1) + (*(allcoeff[
NLO]))(1));
403 C_2L_bar = (*(allcoeff[
LO]))(1) - (*(allcoeff[
LO]))(0) / 6.;
404 C_3 = ((*(allcoeff[
LO]))(2) + (*(allcoeff[
NLO]))(2));
405 C_4 = ((*(allcoeff[
LO]))(3) + (*(allcoeff[
NLO]))(3));
406 C_5 = ((*(allcoeff[
LO]))(4) + (*(allcoeff[
NLO]))(4));
407 C_6 = ((*(allcoeff[
LO]))(5) + (*(allcoeff[
NLO]))(5));
408 C_8 = ((*(allcoeff[
LO]))(7) + (*(allcoeff[
NLO]))(7));
409 C_8L = (*(allcoeff[
LO]))(7);
410 C_S = MW /
Mb * (((*(allcoeff[
LO]))(10) + (*(allcoeff[
NLO]))(10)));
411 C_P = MW /
Mb * (((*(allcoeff[
LO]))(11) + (*(allcoeff[
NLO]))(11)));
412 C_9p = (*(allcoeffprime[
LO]))(8) + (*(allcoeffprime[
NLO]))(8);
413 C_10p = (*(allcoeffprime[
LO]))(9) + (*(allcoeffprime[
NLO]))(9);
414 C_Sp = MW /
Mb * ((*(allcoeffprime[
LO]))(10) + (*(allcoeffprime[
NLO]))(10));
415 C_Pp = MW /
Mb * ((*(allcoeffprime[
LO]))(11) + (*(allcoeffprime[
NLO]))(11));
423 C_7 = ((*(allcoeff[
LO]))(6) + (*(allcoeff[
NLO]))(6));
424 C_9 = ((*(allcoeff[
LO]))(8) + (*(allcoeff[
NLO]))(8));
425 C_10 = ((*(allcoeff[
LO]))(9) + (*(allcoeff[
NLO]))(9));
427 C_7p = MsoMb * ((*(allcoeffprime[
LO]))(6) + (*(allcoeffprime[
NLO]))(6));
428 C_7p -= MsoMb * (C_7 + 1. / 3. *
C_3 + 4 / 9 *
C_4 + 20. / 3. * C_5 + 80. / 9. * C_6);
432 C_1Lh_bar = (*(allcoeffh[
LO]))(0) / 2.;
433 C_2Lh_bar = (*(allcoeffh[
LO]))(1) - (*(allcoeff[
LO]))(0) / 6.;
434 C_8Lh = (*(allcoeffh[
LO]))(7);
440 t_0 = t_p * (1. -
sqrt(1. - t_m / t_p));
443 MMpMV2 = MMpMV * MMpMV;
445 MMmMV2 = MMmMV * MMmMV;
456 onepMMoMV = (1. +
MV /
MM);
457 MM_MMpMV =
MM * MMpMV;
458 twoMM_mbpms = 2. *
MM * (
Mb +
Ms);
464 ninetysixM_PI3MM3 = 96. * M_PI * M_PI * M_PI *
MM *
MM*
MM;
465 sixteenM_PI2 = 16. * M_PI2;
466 sixteenM_PI2MM2 = sixteenM_PI2 *
MM*
MM;
467 twoMboMM = 2 *
Mb /
MM;
469 H_0_WC = (
C_3 + 4. / 3. *
C_4 + 16. * C_5 + 64. / 3. * C_6);
470 H_c_WC = (4. / 3. * C_1 + C_2 + 6. *
C_3 + 60. * C_5);
471 H_b_WC = (7. *
C_3 + 4. / 3. *
C_4 + 76. * C_5 + 64. / 3. * C_6);
477 logMc =
log(Mc2 / mu_b2);
478 logMb =
log(Mb2 / mu_b2);
479 fournineth = 4. / 9.;
483 twoMM3 = 2. * MM2 *
MM;
484 C2_inv = 1. / (2. * C_2.real());
485 gtilde_1_pre = -16. *
pow(
MM, 3.)*(
MM +
MV) *
pow(M_PI, 2.);
486 gtilde_2_pre = -16. *
pow(
MM, 3.) *
pow(M_PI, 2.) / MMpMV;
487 gtilde_3_pre = 64. *
pow(
MM, 3.) *
pow(M_PI, 2.) *
MV*MMpMV;
488 S_L_pre = (-2. *
MM * (
Mb +
Ms));
490 M_PI2osix = M_PI2 / 6.;
493 N_QCDF = M_PI2 / 3. * fB * fperp /
MM;
495 deltaT_0 = alpha_s_mub * CF / 4. / M_PI;
503 NN = -(4. *
GF *
MM *
ale * lambda_t) / (
sqrt(2.)*4. * M_PI);
504 NN_conjugate = -(4. *
GF *
MM *
ale * lambda_t.conjugate()) / (
sqrt(2.)*4. * M_PI);
506 std::map<std::pair<double, double>,
unsigned int >::iterator it;
508 if (I0_updated == 0)
for (it = sigma0Cached.begin(); it != sigma0Cached.end(); ++it) it->second = 0;
509 if (I1_updated == 0)
for (it = sigma1Cached.begin(); it != sigma1Cached.end(); ++it) it->second = 0;
510 if (I2_updated == 0)
for (it = sigma2Cached.begin(); it != sigma2Cached.end(); ++it) it->second = 0;
511 if (I3_updated == 0)
for (it = sigma3Cached.begin(); it != sigma3Cached.end(); ++it) it->second = 0;
512 if (I4_updated == 0)
for (it = sigma4Cached.begin(); it != sigma4Cached.end(); ++it) it->second = 0;
513 if (I5_updated == 0)
for (it = sigma5Cached.begin(); it != sigma5Cached.end(); ++it) it->second = 0;
514 if (I6_updated == 0)
for (it = sigma6Cached.begin(); it != sigma6Cached.end(); ++it) it->second = 0;
515 if (I7_updated == 0)
for (it = sigma7Cached.begin(); it != sigma7Cached.end(); ++it) it->second = 0;
516 if (I9_updated == 0)
for (it = sigma9Cached.begin(); it != sigma9Cached.end(); ++it) it->second = 0;
517 if (I10_updated == 0)
for (it = sigma10Cached.begin(); it != sigma10Cached.end(); ++it) it->second = 0;
518 if (I11_updated == 0)
for (it = sigma11Cached.begin(); it != sigma11Cached.end(); ++it) it->second = 0;
520 if (I0_updated == 0)
for (it = delta0Cached.begin(); it != delta0Cached.end(); ++it) it->second = 0;
521 if (I1_updated == 0)
for (it = delta1Cached.begin(); it != delta1Cached.end(); ++it) it->second = 0;
522 if (I2_updated == 0)
for (it = delta2Cached.begin(); it != delta2Cached.end(); ++it) it->second = 0;
523 if (I3_updated == 0)
for (it = delta3Cached.begin(); it != delta3Cached.end(); ++it) it->second = 0;
524 if (I11_updated == 0)
for (it = delta11Cached.begin(); it != delta11Cached.end(); ++it) it->second = 0;
526 std::map<double, unsigned int >::iterator iti;
527 if (deltaTparpupdated == 0)
for (iti = deltaTparpCached.begin(); iti != deltaTparpCached.end(); ++iti) iti->second = 0;
528 if (deltaTparmupdated == 0)
for (iti = deltaTparmCached.begin(); iti != deltaTparmCached.end(); ++iti) iti->second = 0;
529 if (deltaTperpupdated == 0)
for (iti = deltaTparpCached.begin(); iti != deltaTparpCached.end(); ++iti) iti->second = 0;
531 if (deltaTparpupdated * deltaTparmupdated == 0)
for (it = I1Cached.begin(); it != I1Cached.end(); ++it) it->second = 0;
544 void MVll::checkCache()
547 if (
MM == k2_cache(0) &&
MV == k2_cache(1)) {
557 if (
Mlep == beta_cache) {
564 lambda_updated = k2_updated;
565 F_updated = lambda_updated * beta_updated;
567 if (
GF == N_cache(0) &&
ale == N_cache(1) &&
MM == N_cache(2) && lambda_t == Nc_cache) {
577 if (a_0V == V_cache(0) && a_1V == V_cache(1) && a_2V == V_cache(2)) {
578 V_updated = V_updated * z_updated;
586 if (a_0A0 == A0_cache(0) && a_1A0 == A0_cache(1) && a_2A0 == A0_cache(2)) {
587 A0_updated = A0_updated * z_updated;
595 if (a_0A1 == A1_cache(0) && a_1A1 == A1_cache(1) && a_2A1 == A1_cache(2)) {
596 A1_updated = A1_updated * z_updated;
604 if (a_0T1 == T1_cache(0) && a_1T1 == T1_cache(1) && a_2T1 == T1_cache(2)) {
605 T1_updated = T1_updated * z_updated;
613 if (a_0T2 == T2_cache(0) && a_1T2 == T2_cache(1) && a_2T2 == T2_cache(2)) {
614 T2_updated = T2_updated * z_updated;
622 VL1_updated = k2_updated * lambda_updated * A1_updated * V_updated;
623 VL2_updated = VL1_updated;
625 TL1_updated = k2_updated * lambda_updated * T1_updated * T2_updated;
626 TL2_updated = TL1_updated;
628 VR1_updated = VL2_updated;
629 VR2_updated = VL1_updated;
631 TR1_updated = TL2_updated;
632 TR2_updated = TL1_updated;
634 if (
Mb == SL_cache(0) &&
Ms == SL_cache(1)) {
636 SL_updated = lambda_updated * A0_updated;
637 SR_updated = SL_updated;
641 SR_updated = SL_updated;
646 if (a_0A12 == VL0_cache(0) && a_1A12 == VL0_cache(1) && a_2A12 == VL0_cache(2)) {
647 VL0_updated = VL0_updated * z_updated;
648 VR0_updated = VL0_updated;
651 VR0_updated = VL0_updated;
652 VL0_cache(0) = a_0A12;
653 VL0_cache(1) = a_1A12;
654 VL0_cache(2) = a_2A12;
657 if (a_0T23 == TL0_cache(0) && a_1T23 == TL0_cache(1) && a_2T23 == TL0_cache(2)) {
658 TL0_updated = TL0_updated * z_updated;
659 TR0_updated = TL0_updated;
662 TR0_updated = TL0_updated;
663 TL0_cache(0) = a_0T23;
664 TL0_cache(1) = a_1T23;
665 TL0_cache(2) = a_2T23;
669 if (C_1 == C_1_cache) {
676 if (C_2 == C_2_cache) {
683 if (
C_3 == C_3_cache) {
690 if (
C_4 == C_4_cache) {
697 if (C_5 == C_5_cache) {
704 if (C_6 == C_6_cache) {
711 if (C_7 == C_7_cache) {
718 if (C_9 == C_9_cache) {
725 if (C_10 == C_10_cache) {
732 if (C_S == C_S_cache) {
739 if (C_P == C_P_cache) {
746 if (C_7p == C_7p_cache) {
753 if (C_9p == C_9p_cache) {
760 if (C_10p == C_10p_cache) {
767 if (C_Sp == C_Sp_cache) {
774 if (C_Pp == C_Pp_cache) {
781 if (C_2Lh_bar == C_2Lh_cache) {
785 C_2Lh_cache = C_2Lh_bar;
788 if (C_8Lh == C_8Lh_cache) {
795 if (
Mb == Ycache(0) &&
Mc == Ycache(1)) {
796 Yupdated = C_1_updated * C_2_updated * C_3_updated * C_4_updated * C_5_updated * C_6_updated;
803 if (
h_0[0] == h0Ccache[0] && h_1[0] == h0Ccache[1] && h_2[0] == h0Ccache[2] && SU3_breaking == h0Ccache[3]) {
807 h0Ccache[0] =
h_0[0];
808 h0Ccache[1] = h_1[0];
809 h0Ccache[2] = h_2[0];
810 h0Ccache[3] = SU3_breaking;
813 if (
h_0[1] == h1Ccache[0] && h_1[1] == h1Ccache[1] && h_2[1] == h1Ccache[2] && SU3_breaking == h1Ccache[3]) {
817 h1Ccache[0] =
h_0[1];
818 h1Ccache[1] = h_1[1];
819 h1Ccache[2] = h_2[1];
820 h1Ccache[3] = SU3_breaking;
823 if (
h_0[2] == h2Ccache[0] && h_1[2] == h2Ccache[1] && h_2[2] == h2Ccache[2] && SU3_breaking == h2Ccache[3]) {
827 h2Ccache[0] =
h_0[2];
828 h2Ccache[1] = h_1[2];
829 h2Ccache[2] = h_2[2];
830 h2Ccache[3] = SU3_breaking;
833 if (
MM == H_V0cache(0) &&
Mb == H_V0cache(1)) {
834 H_V0updated = N_updated * C_9_updated * Yupdated * VL0_updated * C_9p_updated * VR0_updated * C_7_updated * TL0_updated * C_7p_updated * TR0_updated * h0_updated;
841 if (
MM == H_V1cache(0) &&
Mb == H_V1cache(1)) {
842 H_V1updated = N_updated * C_9_updated * Yupdated * VL1_updated * C_9p_updated * VR1_updated * C_7_updated * TL1_updated * C_7p_updated * TR1_updated * h1_updated;
849 if (
MM == H_V2cache(0) &&
Mb == H_V2cache(1)) {
850 H_V2updated = N_updated * C_9_updated * Yupdated * VL2_updated * C_9p_updated * VR2_updated * C_7_updated * TL2_updated * C_7p_updated * TR2_updated * h2_updated;
857 H_A0updated = N_updated * C_10_updated * VL0_updated * C_10p_updated * VR0_updated;
858 H_A1updated = N_updated * C_10_updated * VL1_updated * C_10p_updated * VR1_updated;
859 H_A2updated = N_updated * C_10_updated * VL2_updated * C_10p_updated * VR2_updated;
861 if (
Mb == H_Scache(0) && MW == H_Scache(1)) {
862 H_Supdated = N_updated * C_S_updated * SL_updated * C_Sp_updated * SR_updated;
869 if (
Mb == H_Pcache(0) && MW == H_Pcache(1) &&
Mlep == H_Pcache(2) &&
Ms == H_Pcache(3)) {
870 H_Pupdated = N_updated * C_P_updated * SL_updated * C_Pp_updated * SR_updated * C_10_updated * C_10p_updated;
880 if (
MM == T_cache(0) &&
Mb == T_cache(1) &&
Mc == T_cache(2) &&
892 deltaTparpupdated = C_2Lh_updated * T_updated;
893 deltaTparmupdated = C_2Lh_updated * C_8Lh_updated * T_updated;
894 deltaTperpupdated = deltaTparpupdated;
896 I0_updated = F_updated * H_V0updated * H_A0updated * H_Pupdated * beta_updated * H_Supdated * deltaTparmupdated;
897 I1_updated = F_updated * beta_updated * H_V1updated * H_V2updated * H_A1updated * H_A2updated * deltaTparmupdated;
898 I2_updated = F_updated * beta_updated * H_V0updated * H_A0updated * deltaTparmupdated;
899 I3_updated = F_updated * H_V1updated * H_V2updated * H_A1updated * H_A2updated * beta_updated * deltaTparmupdated;
900 I4_updated = F_updated * H_V1updated * H_V2updated * H_A1updated * H_A2updated * deltaTparmupdated;
901 I5_updated = F_updated * H_V0updated * H_V1updated * H_V2updated * H_A0updated * H_A1updated * H_A2updated * beta_updated * deltaTparmupdated;
902 I6_updated = F_updated * H_V1updated * H_V2updated * H_A0updated * H_A1updated * H_A2updated * H_V0updated * beta_updated * H_Supdated * deltaTparmupdated;
903 I7_updated = I4_updated * beta_updated;
904 I8_updated = F_updated * beta_updated * H_Supdated * H_V0updated * deltaTparmupdated;
905 I9_updated = I6_updated;
906 I10_updated = I5_updated;
907 I11_updated = I7_updated;
915 double MVll::FF_fit(
double q2,
double a_0,
double a_1,
double a_2,
double MR_2)
917 return 1. / (1. - q2 / MR_2) * (a_0 + a_1 * (z(q2) - z_0) + a_2 * (z(q2) - z_0) * (z(q2) - z_0));
920 double MVll::z(
double q2)
922 return (
sqrt(t_p - q2) -
sqrt(t_p - t_0)) / (
sqrt(t_p - q2) +
sqrt(t_p - t_0));
925 double MVll::V(
double q2)
927 return FF_fit(q2, a_0V, a_1V, a_2V, MRV_2);
930 double MVll::A_0(
double q2)
932 return FF_fit(q2, a_0A0, a_1A0, a_2A0, MRA0_2);
935 double MVll::A_1(
double q2)
937 return FF_fit(q2, a_0A1, a_1A1, a_2A1, MRA1_2);
940 double MVll::A_2(
double q2)
942 return (MMpMV2 * (MM2mMV2 - q2) * A_1(q2) - 16. *
MM * MV2 * MMpMV * FF_fit(q2, a_0A12, a_1A12, a_2A12, MRA12_2)) / lambda(q2);
945 double MVll::T_1(
double q2)
947 return FF_fit(q2, a_0T1, a_1T1, a_2T1, MRT1_2);
950 double MVll::T_2(
double q2)
952 return FF_fit(q2, a_0T2, a_1T2, a_2T2, MRT2_2);
955 double MVll::V_0t(
double q2)
957 return fourMV /
sqrt(q2) * FF_fit(q2, a_0A12, a_1A12, a_2A12, MRA12_2);
960 double MVll::V_p(
double q2)
962 return half * (onepMMoMV * A_1(q2) -
sqrt(lambda(q2)) / (MM_MMpMV) * V(q2));
965 double MVll::V_m(
double q2)
967 return half * (onepMMoMV * A_1(q2) +
sqrt(lambda(q2)) / (MM_MMpMV) * V(q2));
970 double MVll::T_0t(
double q2)
972 return 2 *
sqrt(q2) *
MV / MM_MMpMV * FF_fit(q2, a_0T23, a_1T23, a_2T23, MRT23_2);
975 double MVll::T_p(
double q2)
977 return (MM2mMV2 * T_2(q2) -
sqrt(lambda(q2)) * T_1(q2)) / twoMM2;
980 double MVll::T_m(
double q2)
982 return (MM2mMV2 * T_2(q2) +
sqrt(lambda(q2)) * T_1(q2)) / twoMM2;
985 double MVll::S_L(
double q2)
987 return -
sqrt(lambda(q2)) / twoMM_mbpms * A_0(q2);
996 double sh = q2 / mb2;
997 double z = (4. * mb2) / q2;
998 double lsh =
log(sh);
1001 double osh2 = (1. - sh)*(1. - sh);
1002 return (-(104.) / (243.) *
log((mb2) / (mu_b2)) + (4. * sh) / (27. * (1. - sh)) * (
dilog((
gslpp::complex)sh) + lsh *
log(1. - sh))
1003 + (1.) / (729. * osh2) * (6. * sh * (29. - 47. * sh) * lsh + 785. - 1600. * sh + 833. * sh * sh + 6. * M_PI *
gslpp::complex::i() * (20. - 49. * sh + 47. * sh2))
1004 - (2.) / (243. * osh2 * (1. - sh)) * (2. *
sqrt(z - 1.) * (-4. + 9. * sh - 15. * sh2 + 4. * sh2 * sh) * acsq + 9. * sh2 * sh * lsh * lsh + 18. * M_PI *
gslpp::complex::i() * sh * (1. - 2. * sh) * lsh)
1005 + (2. * sh) / (243. * osh2 * osh2) * (36. * acsq * acsq + M_PI2 * (-4. + 9. * sh - 9. * sh2 + 3. * sh2 * sh)));
1010 double sh = q2 / mb2;
1011 double z = (4. * mb2) / q2;
1012 double sqrt_z_m_1 =
sqrt(z - 1.);
1025 double lsh =
log(sh);
1026 double osh2 = (1. - sh)*(1. - sh);
1027 double lmb_mu =
log(mb2 / mu_b2);
1028 return (8. / (243. * sh) * ((4. - 34. * sh - 17. * M_PI *
gslpp::complex::i() * sh) * lmb_mu + 8. * sh * lmb_mu * lmb_mu + 17. * sh * lsh * lmb_mu)
1029 + ((2. + sh) * sqrt_z_m_1) / (729. * sh) * (-48. * lmb_mu * acsq - 18. * M_PI *
log(z - 1.) + 3. *
gslpp::complex::i() * lzm1 * lzm1
1031 + 6. *
gslpp::complex::i() * (-9. * lx1 * lx1 + lx2 * lx2 - 2. * lx4 * lx4 + 6. * lx1 * lx2 - 4. * lx1 * lx3 + 8. * lx1 * lx4)
1032 - 12. * M_PI * (2. * lx1 + lx3 + lx4)) - 2. / (243. * sh * (1 - sh)) * (4. * sh * (-8. + 17. * sh) * (
dilog((
gslpp::complex)sh) + lsh *
log(1. - sh))
1033 + 3. * (2. + sh) * (3. - sh) * lx2_x1 * lx2_x1 + 12. * M_PI * (-6. - sh + sh2) * acsq) + 2. / (2187. * sh * osh2) * (-18. * sh * (120. - 211. * sh + 73. * sh2) * lsh
1034 - 288. - 8. * sh + 934. * sh2 - 692. * sh2 * sh + 18. * M_PI *
gslpp::complex::i() * sh * (82. - 173. * sh + 73. * sh2))
1035 - 4. / (243. * sh * osh2 * (1 - sh)) * (-2. * sqrt_z_m_1 * (4. - 3. * sh - 18. * sh2 + 16. * sh2 * sh - 5. * sh2 * sh2) * acsq - 9. * sh * sh2 * lsh * lsh
1036 + 2. * M_PI *
gslpp::complex::i() * sh * (8. - 33. * sh + 51. * sh2 - 17. * sh * sh2) * lsh) + 2. / (729. * sh * osh2 * osh2) * (72. * (3. - 8. * sh + 2. * sh2) * acsq * acsq
1037 - M_PI2 * (54. - 53. * sh - 286. * sh2 + 612. * sh * sh2 - 446. * sh2 * sh2 + 113. * sh2 * sh2 * sh)));
1042 return -(16.) / (81.) *
log((q2) / (mu_b2)) + (428.) / (243.) - (64.) / (27.) * gsl_sf_zeta_int(3) + (16.) / (81.) * M_PI *
gslpp::complex::i();
1046 gslpp::complex MVll::deltaC7_QCDF(
double q2,
bool conjugate,
bool spline)
1048 #if COMPUTECP && SPLINE
1049 if (spline && !conjugate)
return gsl_spline_eval(spline_Re_deltaC7_QCDF, q2, acc_Re_deltaC7_QCDF);
1050 else if (spline && conjugate)
return gsl_spline_eval(spline_Re_deltaC7_QCDF_conj, q2, acc_Re_deltaC7_QCDF_conj);
1052 if (spline)
return gsl_spline_eval(spline_Re_deltaC7_QCDF, q2, acc_Re_deltaC7_QCDF);
1060 #if FULLNLOQCDF_MVLL
1067 gslpp::complex F_87 = F87_0 + F87_1 * sh + F87_2 * sh2 + F87_3 * sh * sh2 - 8. / 9. *
log(sh) * (sh + sh2 + sh * sh2);
1072 #if FULLNLOQCDF_MVLL
1074 return -alpha_s_mub / (4. * M_PI) * (delta_t - lambda_u / lambda_t * delta_u);
1076 return -alpha_s_mub / (4. * M_PI) * delta_t;
1081 #if FULLNLOQCDF_MVLL
1083 return -alpha_s_mub / (4. * M_PI) * (delta_t - (lambda_u / lambda_t).conjugate() * delta_u);
1085 return -alpha_s_mub / (4. * M_PI) * delta_t;
1090 gslpp::complex MVll::deltaC9_QCDF(
double q2,
bool conjugate,
bool spline)
1092 #if COMPUTECP && SPLINE
1093 if (spline && !conjugate)
return gsl_spline_eval(spline_Re_deltaC9_QCDF, q2, acc_Re_deltaC9_QCDF);
1094 else if (spline && conjugate)
return gsl_spline_eval(spline_Re_deltaC9_QCDF_conj, q2, acc_Re_deltaC9_QCDF_conj);
1096 if (spline)
return gsl_spline_eval(spline_Re_deltaC9_QCDF, q2, acc_Re_deltaC9_QCDF);
1104 #if FULLNLOQCDF_MVLL
1112 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));
1117 #if FULLNLOQCDF_MVLL
1119 return -alpha_s_mub / (4. * M_PI) * (delta_t - lambda_u / lambda_t * delta_u);
1121 return -alpha_s_mub / (4. * M_PI) * delta_t;
1126 #if FULLNLOQCDF_MVLL
1128 return -alpha_s_mub / (4. * M_PI) * (delta_t - (lambda_u / lambda_t).conjugate() * delta_u);
1130 return -alpha_s_mub / (4. * M_PI) * delta_t;
1141 if (!conjugate)
return T_t + lambda_u / lambda_t * T_u;
1142 else return T_t + (lambda_u / lambda_t).conjugate() * T_u;
1162 double ubar = 1. - u;
1163 double ed = -1. / 3.;
1165 return -(alpha_s_mub / (3. * M_PI))*4. * ed * C_8 / (u + ubar * q2 / MM2);
1170 double ubar = 1. - u;
1172 return (alpha_s_mub / (3. * M_PI))*
spectator_charge * 8. * C_8 / (ubar + u * q2 / MM2);
1177 double EV = (MM2 - q2 + MV2) / (2. *
MM);
1178 double ubar = 1. - u;
1180 return (2. *
MM) / (ubar * EV) * I1(q2, u, m2) + q2 / (ubar * ubar * EV * EV) * B0diff(q2, u, m2);
1186 double EV = (MM2pMV2 - q2) / (2. *
MM);
1187 double ubar = 1. - u;
1188 return (2. *
MM) / (ubar * EV) * I1(q2, u, m2) + (ubar * MM2 + u * q2) / (ubar * ubar * EV * EV) * B0diff(q2, u, m2);
1193 if (m2 == 0.)
return 1.;
1200 L1xp =
log(1. - 1. / xp) *
log(1. - xp) - M_PI2osix +
dilog(xp / (xp - 1.));
1201 L1xm =
log(1. - 1. / xm) *
log(1. - xm) - M_PI2osix +
dilog(xm / (xm - 1.));
1202 L1yp =
log(1. - 1. / yp) *
log(1. - yp) - M_PI2osix +
dilog(yp / (yp - 1.));
1203 L1ym =
log(1. - 1. / ym) *
log(1. - ym) - M_PI2osix +
dilog(ym / (ym - 1.));
1205 return 1. + 2. * m2 / ubar / (MM2 - q2)*(L1xp + L1xm - L1yp - L1ym);
1210 double ubar = 1. - u;
1213 else return B0(ubar * MM2 + u * q2, m2) - B0(q2, m2);
1225 if (s == 0.)
return -4. / 9. * (1. +
log(m2 /
mu_b /
mu_b));
1227 double z = 4 * m2 / s;
1229 if (z > 1) term = atan(1. /
sqrt(z - 1.));
1230 else term =
log((1. +
sqrt(1. - z)) /
sqrt(z)) - ihalfMPI;
1232 return -4. / 9. *
log(m2 /
mu_b /
mu_b) + 8. / 27. + 4. / 9. * z - 4. / 9. * (2. + z) *
sqrt(std::abs(z - 1.)) * term;
1236 gslpp::complex MVll::T_perp_plus_QSS(
double q2,
double u,
bool conjugate)
1239 double eu = 0.666666667;
1240 #if FULLNLOQCDF_MVLL
1243 double ed = -0.333333333;
1245 gslpp::complex T_t = (eu * t_perp_mc * (-C_1 / 6. + C_2 + 6. * C_6)
1246 + ed * t_perp_mb * (
C_3 -
C_4/6. + 16. * C_5 + 10. * C_6/3. + 4. *
mb_pole /
MM * (-
C_3 +
C_4/6. - 4. * C_5 + 2. * C_6/3.))
1247 + ed * t_perp_0 * (
C_3 -
C_4/6. + 16. * C_5 - 8. * C_6/3.));
1249 gslpp::complex T_u = eu * (t_perp_mc - t_perp_0)*(C_2 - C_1 / 6.);
1251 if (!conjugate)
return alpha_s_mub / (3. * M_PI) *
MM / (2. *
mb_pole)*(T_t + lambda_u / lambda_t * T_u);
1252 else return alpha_s_mub / (3. * M_PI) *
MM / (2. *
mb_pole)*(T_t + (lambda_u / lambda_t).conjugate() * T_u);
1254 return alpha_s_mub / (3. * M_PI) *
MM / (2. *
mb_pole)*(eu * t_perp_mc * (-C_1 / 6. + C_2 + 6. * C_6));
1258 gslpp::complex MVll::T_para_plus_QSS(
double q2,
double u,
bool conjugate)
1261 double eu = 0.666666667;
1262 #if FULLNLOQCDF_MVLL
1265 double ed = -0.333333333;
1267 gslpp::complex T_t = (eu * t_para_mc * (-C_1 / 6. + C_2 + 6. * C_6)
1268 + ed * t_para_mb * (
C_3 -
C_4/6. + 16.*C_5 + 10.*C_6/3.)
1269 + ed * t_para_0 * (
C_3 -
C_4/6. + 16.*C_5 - 8.*C_6/3.));
1271 gslpp::complex T_u = eu * (t_para_mc - t_para_0) * (C_2 - C_1/6.);
1273 if (!conjugate)
return alpha_s_mub / (3. * M_PI) *
MM /
mb_pole * (T_t + lambda_u / lambda_t * T_u);
1274 else return alpha_s_mub / (3. * M_PI) *
MM /
mb_pole * (T_t + (lambda_u / lambda_t).conjugate() * T_u);
1276 return alpha_s_mub / (3. * M_PI) *
MM /
mb_pole * (eu * t_para_mc * (-C_1 / 6. + C_2 + 6. * C_6));
1280 gslpp::complex MVll::T_para_minus_QSS(
double q2,
double u,
bool conjugate)
1282 double ubar = 1. - u;
1284 #if FULLNLOQCDF_MVLL
1289 + h_mb * (
C_3 + 5.*
C_4/6. + 16.*C_5 + 22.*C_6/3.)
1290 +
h_0 * (
C_3 + 17.*
C_4/6. + 16.*C_5 + 82.*C_6/3.)
1291 - 8./27. * (-15.*
C_4/2. + 12.*C_5 - 32.*C_6));
1295 if (!conjugate)
return alpha_s_mub / (3. * M_PI) *
spectator_charge * 6. *
MM /
mb_pole * (T_t + lambda_u / lambda_t * T_u);
1296 else return alpha_s_mub / (3. * M_PI) *
spectator_charge * 6. *
MM /
mb_pole * (T_t + (lambda_u / lambda_t).conjugate() * T_u);
1302 double MVll::phi_V(
double u)
1313 double MVll::T_perp_real(
double q2,
double u,
bool conjugate)
1316 #if FULLNLOQCDF_MVLL
1317 double ubar = 1. - u;
1319 T_amp += N_QCDF/(ubar + u*q2/MM2) * phi_V(u) * T_perp_WA_1()
1323 return T_amp.
real();
1326 double MVll::T_perp_imag(
double q2,
double u,
bool conjugate)
1329 #if FULLNLOQCDF_MVLL
1330 double ubar = 1. - u;
1332 T_amp += N_QCDF/(ubar + u*q2/MM2) * phi_V(u) * T_perp_WA_1()
1336 return T_amp.
imag();
1339 double MVll::T_para_real(
double q2,
double u,
bool conjugate)
1341 double N = N_QCDF * (
MV / ((MM2pMV2 - q2) / (2. *
MM)));
1343 gslpp::complex T_amp = (N / lambda_B_minus(q2) * (T_para_minus_O8(q2, u) + T_para_minus_QSS(q2, u, conjugate))
1345 #if FULLNLOQCDF_MVLL
1346 T_amp += N / lambda_B_minus(q2) * T_para_minus_WA(conjugate)* phi_V(u);
1351 double MVll::T_para_imag(
double q2,
double u,
bool conjugate)
1353 double N = N_QCDF * (
MV / ((MM2pMV2 - q2) / (2. *
MM)));
1355 gslpp::complex T_amp = (N / lambda_B_minus(q2) * (T_para_minus_O8(q2, u) + T_para_minus_QSS(q2, u, conjugate))
1357 #if FULLNLOQCDF_MVLL
1358 T_amp += N / lambda_B_minus(q2) * T_para_minus_WA(conjugate) * phi_V(u);
1363 double MVll::T_perp_real(
double q2,
bool conjugate)
1366 gsl_integration_cquad(&FS, 0., 1., 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL);
1371 double MVll::T_perp_imag(
double q2,
bool conjugate)
1374 gsl_integration_cquad(&FS, 0., 1., 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL);
1379 double MVll::T_para_real(
double q2,
bool conjugate)
1382 gsl_integration_cquad(&FS, 0., 1., 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL);
1387 double MVll::T_para_imag(
double q2,
bool conjugate)
1390 gsl_integration_cquad(&FS, 0., 1., 1.e-2, 1.e-1, w_sigma, &avaSigma, &errSigma, NULL);
1395 double MVll::QCDF_fit_func(
double* x,
double* p)
1397 return p[0] + p[1] * x[0] + p[2] * x[0] * x[0] + p[3] * x[0] * x[0] * x[0] + p[4] * x[0] * x[0] * x[0] * x[0] + p[5] * x[0] * x[0] * x[0] * x[0] * x[0] + p[6] * x[0] * x[0] * x[0] * x[0] * x[0] * x[0];
1400 void MVll::fit_QCDF_func()
1403 for (
double i = 0.001; i < 8.6; i += 0.5) {
1405 Re_T_perp.push_back(T_perp_real(i,
false));
1406 Im_T_perp.push_back(T_perp_imag(i,
false));
1407 Re_T_para.push_back(T_para_real(i,
false));
1408 Im_T_para.push_back(T_para_imag(i,
false));
1411 Re_T_perp_conj.push_back(T_perp_real(i,
true));
1412 Im_T_perp_conj.push_back(T_perp_imag(i,
true));
1413 Re_T_para_conj.push_back(T_para_real(i,
true));
1414 Im_T_para_conj.push_back(T_para_imag(i,
true));
1419 gr1 = TGraph(dim, myq2.data(), Re_T_perp.data());
1420 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Re_T_perp");
1421 Re_T_perp_res = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1424 gr1 = TGraph(dim, myq2.data(), Im_T_perp.data());
1425 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Im_T_perp");
1426 Im_T_perp_res = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1429 gr1 = TGraph(dim, myq2.data(), Re_T_para.data());
1430 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Re_T_para");
1431 Re_T_para_res = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1434 gr1 = TGraph(dim, myq2.data(), Im_T_para.data());
1435 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Im_T_para");
1436 Im_T_para_res = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1440 gr1 = TGraph(dim, myq2.data(), Re_T_perp_conj.data());
1441 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Re_T_perp_conj");
1442 Re_T_perp_res_conj = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1443 Re_T_perp_conj.clear();
1445 gr1 = TGraph(dim, myq2.data(), Im_T_perp_conj.data());
1446 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Im_T_perp_conj");
1447 Im_T_perp_res_conj = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1448 Im_T_perp_conj.clear();
1450 gr1 = TGraph(dim, myq2.data(), Re_T_para_conj.data());
1451 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Re_T_para_conj");
1452 Re_T_para_res_conj = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1453 Re_T_para_conj.clear();
1455 gr1 = TGraph(dim, myq2.data(), Im_T_para_conj.data());
1456 QCDFfit = TF1(
"QCDFfit",
this, &MVll::QCDF_fit_func, 0.001, 8.51, 7,
"MVll",
"Im_T_para_conj");
1457 Im_T_para_res_conj = gr1.Fit(&QCDFfit,
"SQN0+rob=0.99");
1458 Im_T_para_conj.clear();
1464 void MVll::spline_QCDF_func()
1466 int dim = GSL_INTERP_DIM;
1467 int dim_DC = GSL_INTERP_DIM_DC;
1469 double interval = (9.9 - min) / ((
double) dim);
1470 double interval_DC = (9.9 - min) / ((
double) dim_DC);
1471 double q2_spline[dim];
1472 double fq2_Re_T_perp[dim], fq2_Im_T_perp[dim], fq2_Re_T_para[dim], fq2_Im_T_para[dim];
1473 double q2_spline_DC[dim_DC];
1474 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];
1476 double fq2_Re_T_perp_conj[dim], fq2_Im_T_perp_conj[dim], fq2_Re_T_para_conj[dim], fq2_Im_T_para_conj[dim];
1477 double fq2_Re_deltaC7_QCDF_conj[dim_DC], fq2_Im_deltaC7_QCDF_conj[dim_DC], fq2_Re_deltaC9_QCDF_conj[dim_DC], fq2_Im_deltaC9_QCDF_conj[dim_DC];
1480 for (
int i = 0; i < dim; i++) {
1481 q2_spline[i] = min + (double) i*interval;
1482 fq2_Re_T_perp[i] = T_perp_real(q2_spline[i],
false);
1483 fq2_Im_T_perp[i] = T_perp_imag(q2_spline[i],
false);
1484 fq2_Re_T_para[i] = T_para_real(q2_spline[i],
false);
1485 fq2_Im_T_para[i] = T_para_imag(q2_spline[i],
false);
1488 fq2_Re_T_perp_conj[i] = T_perp_real(q2_spline[i],
true);
1489 fq2_Im_T_perp_conj[i] = T_perp_imag(q2_spline[i],
true);
1490 fq2_Re_T_para_conj[i] = T_para_real(q2_spline[i],
true);
1491 fq2_Im_T_para_conj[i] = T_para_imag(q2_spline[i],
true);
1494 for (
int i = 0; i < dim_DC; i++) {
1495 q2_spline_DC[i] = min + (double) i*interval_DC;
1496 fq2_Re_deltaC7_QCDF[i] = deltaC7_QCDF(q2_spline_DC[i],
false).real();
1497 fq2_Im_deltaC7_QCDF[i] = deltaC7_QCDF(q2_spline_DC[i],
false).imag();
1498 fq2_Re_deltaC9_QCDF[i] = deltaC9_QCDF(q2_spline_DC[i],
false).real();
1499 fq2_Im_deltaC9_QCDF[i] = deltaC9_QCDF(q2_spline_DC[i],
false).imag();
1502 fq2_Re_deltaC7_QCDF_conj[i] = deltaC7_QCDF(q2_spline_DC[i],
true).real();
1503 fq2_Im_deltaC7_QCDF_conj[i] = deltaC7_QCDF(q2_spline_DC[i],
true).imag();
1504 fq2_Re_deltaC9_QCDF_conj[i] = deltaC9_QCDF(q2_spline_DC[i],
true).real();
1505 fq2_Im_deltaC9_QCDF_conj[i] = deltaC9_QCDF(q2_spline_DC[i],
true).imag();
1509 gsl_spline_init(spline_Re_T_perp, q2_spline, fq2_Re_T_perp, dim);
1510 gsl_spline_init(spline_Im_T_perp, q2_spline, fq2_Im_T_perp, dim);
1511 gsl_spline_init(spline_Re_T_para, q2_spline, fq2_Re_T_para, dim);
1512 gsl_spline_init(spline_Im_T_para, q2_spline, fq2_Im_T_para, dim);
1514 gsl_spline_init(spline_Re_deltaC7_QCDF, q2_spline_DC, fq2_Re_deltaC7_QCDF, dim_DC);
1515 gsl_spline_init(spline_Im_deltaC7_QCDF, q2_spline_DC, fq2_Im_deltaC7_QCDF, dim_DC);
1516 gsl_spline_init(spline_Re_deltaC9_QCDF, q2_spline_DC, fq2_Re_deltaC9_QCDF, dim_DC);
1517 gsl_spline_init(spline_Im_deltaC9_QCDF, q2_spline_DC, fq2_Im_deltaC9_QCDF, dim_DC);
1520 gsl_spline_init(spline_Re_T_perp_conj, q2_spline, fq2_Re_T_perp_conj, dim);
1521 gsl_spline_init(spline_Im_T_perp_conj, q2_spline, fq2_Im_T_perp_conj, dim);
1522 gsl_spline_init(spline_Re_T_para_conj, q2_spline, fq2_Re_T_para_conj, dim);
1523 gsl_spline_init(spline_Im_T_para_conj, q2_spline, fq2_Im_T_para_conj, dim);
1525 gsl_spline_init(spline_Re_deltaC7_QCDF_conj, q2_spline_DC, fq2_Re_deltaC7_QCDF_conj, dim_DC);
1526 gsl_spline_init(spline_Im_deltaC7_QCDF_conj, q2_spline_DC, fq2_Im_deltaC7_QCDF_conj, dim_DC);
1527 gsl_spline_init(spline_Re_deltaC9_QCDF_conj, q2_spline_DC, fq2_Re_deltaC9_QCDF_conj, dim_DC);
1528 gsl_spline_init(spline_Im_deltaC9_QCDF_conj, q2_spline_DC, fq2_Im_deltaC9_QCDF_conj, dim_DC);
1535 #if COMPUTECP && SPLINE
1536 if (!conjugate)
return -2. *
MM *
mb_pole / q2 * (1. - q2 / MM2) * (gsl_spline_eval(spline_Re_T_perp, q2, acc_Re_T_perp) +
gslpp::complex::i() * gsl_spline_eval(spline_Im_T_perp, q2, acc_Im_T_perp));
1537 else return -2. *
MM *
mb_pole / q2 * (1. - q2 / MM2) * (gsl_spline_eval(spline_Re_T_perp_conj, q2, acc_Re_T_perp_conj) +
gslpp::complex::i() * gsl_spline_eval(spline_Im_T_perp_conj, q2, acc_Im_T_perp_conj));
1539 return -2. *
MM *
mb_pole / q2 * (1. - q2 / MM2) * (gsl_spline_eval(spline_Re_T_perp, q2, acc_Re_T_perp) +
gslpp::complex::i() * gsl_spline_eval(spline_Im_T_perp, q2, acc_Im_T_perp));
1542 #if COMPUTECP && !SPLINE
1543 if (!conjugate)
return -2. *
MM *
mb_pole / q2 * (1. - q2 / MM2) * (QCDF_fit_func(&q2, const_cast<double *> (Re_T_perp_res->GetParams())) +
gslpp::complex::i() * QCDF_fit_func(&q2, const_cast<double *> (Im_T_perp_res->GetParams())));
1544 else return -2. *
MM *
mb_pole / q2 * (1. - q2 / MM2) * (QCDF_fit_func(&q2, const_cast<double *> (Re_T_perp_res_conj->GetParams())) +
gslpp::complex::i() * QCDF_fit_func(&q2, const_cast<double *> (Im_T_perp_res_conj->GetParams())));
1546 return -2. *
MM *
mb_pole / q2 * (1. - q2 / MM2) * (QCDF_fit_func(&q2, const_cast<double *> (Re_T_perp_res->GetParams())) +
gslpp::complex::i() * QCDF_fit_func(&q2, const_cast<double *> (Im_T_perp_res->GetParams())));
1552 #if COMPUTECP && SPLINE
1553 if (!conjugate)
return -(1. - q2 / MM2)* (1. - q2 / MM2) *
MM *
mb_pole /
sqrt(q2) * (gsl_spline_eval(spline_Re_T_para, q2, acc_Re_T_para) +
gslpp::complex::i() * gsl_spline_eval(spline_Im_T_para, q2, acc_Im_T_para));
1554 else return -(1. - q2 / MM2)* (1. - q2 / MM2) *
MM *
mb_pole /
sqrt(q2) * (gsl_spline_eval(spline_Re_T_para_conj, q2, acc_Re_T_para_conj) +
gslpp::complex::i() * gsl_spline_eval(spline_Im_T_para_conj, q2, acc_Im_T_para_conj));
1556 return -(1. - q2 / MM2)* (1. - q2 / MM2) *
MM *
mb_pole /
sqrt(q2) * (gsl_spline_eval(spline_Re_T_para, q2, acc_Re_T_para) +
gslpp::complex::i() * gsl_spline_eval(spline_Im_T_para, q2, acc_Im_T_para));
1559 #if COMPUTECP && !SPLINE
1560 if (!conjugate)
return -(1. - q2 / MM2)* (1. - q2 / MM2) *
MM *
mb_pole /
sqrt(q2) * (QCDF_fit_func(&q2, const_cast<double *> (Re_T_para_res->GetParams())) +
gslpp::complex::i() * QCDF_fit_func(&q2, const_cast<double *> (Im_T_para_res->GetParams())));
1561 else return -(1. - q2 / MM2)* (1. - q2 / MM2) *
MM *
mb_pole /
sqrt(q2) * (QCDF_fit_func(&q2, const_cast<double *> (Re_T_para_res_conj->GetParams())) +
gslpp::complex::i() * QCDF_fit_func(&q2, const_cast<double *> (Im_T_para_res_conj->GetParams())));
1563 return -(1. - q2 / MM2)* (1. - q2 / MM2) *
MM *
mb_pole /
sqrt(q2) * (QCDF_fit_func(&q2, const_cast<double *> (Re_T_para_res->GetParams())) +
gslpp::complex::i() * QCDF_fit_func(&q2, const_cast<double *> (Im_T_para_res->GetParams())));
1572 double x = 4. * m2 / q2;
1575 if (x > 1.) par =
sqrt(x - 1.) * atan(1. /
sqrt(x - 1.));
1576 else par =
sqrt(1. - x) * (
log((1. +
sqrt(1. - x)) /
sqrt(x)) - ihalfMPI);
1578 return -fournineth * (
log(m2 / mu2) - twothird - x) - fournineth * (2. + x) * par;
1583 return (H_0_pre - fournineth *
log(q2 / mu_b2));
1593 if (q2 < 4. *
Mc *
Mc)
1594 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.)));
1601 return ((
h_0[com] * (1. - 1. / q2) + h_2[com] / q2) / (1. + h_1[com] * (1. - q2) /
mJ2) - (3. * (-0.267) + 1.117) * funct_g(q2))*
exp_Phase[com];
1608 if (h_pole ==
true)
return SU3_breaking * (
h_0[hel]+(1. - h_2[hel]) * q2 * (h_1[hel] -
h_0[hel]) / (q2 - h_2[hel]));
1609 else if (hel == 1)
return SU3_breaking * (
h_0[1] + h_1[1] * q2 + h_2[1] * q2 * q2 + (twoMboMM *
h_0[2] * T_p(q2) + h_1[2] * q2 / MM2 * V_p(q2)) / sixteenM_PI2);
1610 else if (hel == 2)
return SU3_breaking * (twoMboMM *
h_0[2] * T_m(q2) + h_1[2] * q2 / MM2 * V_m(q2)) / sixteenM_PI2 + h_2[2] * q2 * q2;
1611 else return SU3_breaking * ((
h_0[hel] + h_1[hel] * q2) *
sqrt(q2) + (twoMboMM *
h_0[2] * T_0t(q2) + h_1[2] * q2 * V_0t(q2) / MM2) / sixteenM_PI2);
1613 if (hel == 0)
return SU3_breaking * (-
sqrt(q2) / (MM2 * 16. * M_PI * M_PI) * ((MMpMV2 * (MM2mMV2 - q2) * A_1(q2) * DeltaC9_KD(q2, 1) - lambda(q2) * A_2(q2) * DeltaC9_KD(q2, 2)) / (4. *
MV *
MM * MMpMV)));
1614 else if (hel == 1) {
1615 if (q2 == 0.)
return SU3_breaking * (-1. / (MM2 * 16. * M_PI * M_PI) * (
1616 (MMpMV * A_1(0.)) / (2. *
MM) * ((-
h_0[1] + h_2[1]) / (1. + h_1[1] /
mJ2)) *
exp_Phase[1]
1617 -
sqrt(lambda(0.)) / (2. *
MM * MMpMV) * V(0.) * ((-
h_0[0] + h_2[0]) / (1. + h_1[0] /
mJ2)) *
exp_Phase[1]));
1618 else return SU3_breaking * (-q2 / (MM2 * 16. * M_PI * M_PI) * ((MMpMV * A_1(q2)) / (2. *
MM) * DeltaC9_KD(q2, 1) -
sqrt(lambda(q2)) / (2. *
MM * MMpMV) * V(q2) * DeltaC9_KD(q2, 0)));
1620 if (q2 == 0.)
return SU3_breaking * (-1. / (MM2 * 16. * M_PI * M_PI) *
1621 ((MMpMV * A_1(0.)) / (2. *
MM) * ((-
h_0[1] + h_2[1]) / (1. + h_1[1] /
mJ2)) *
exp_Phase[1]
1622 +
sqrt(lambda(0.)) / (2. *
MM * MMpMV) * V(0.) * ((-
h_0[0] + h_2[0]) / (1. + h_1[0] /
mJ2)) *
exp_Phase[1]));
1623 else return SU3_breaking * (-q2 / (MM2 * 16. * M_PI * M_PI) * ((MMpMV * A_1(q2)) / (2. *
MM) * DeltaC9_KD(q2, 1) +
sqrt(lambda(q2)) / (2. *
MM * MMpMV) * V(q2) * DeltaC9_KD(q2, 0)));
1630 if (!bar)
return -
gslpp::complex::i() * NN * (((C_9 + deltaC9_QCDF(q2, !bar, SPLINE) + Y(q2)) -
etaV *
pow(-1,
angmomV) * C_9p) * V_0t(q2) + T_0(q2, !bar) + MM2 / q2 * (twoMboMM * (C_7 + deltaC7_QCDF(q2, !bar, SPLINE) -
etaV *
pow(-1,
angmomV) * C_7p) * T_0t(q2) - sixteenM_PI2 *
h_lambda(0, q2)));
1637 if (!bar)
return -
gslpp::complex::i() * NN * (((C_9 + deltaC9_QCDF(q2, !bar, SPLINE) + Y(q2)) * V_p(q2) -
etaV *
pow(-1,
angmomV) * C_9p * V_m(q2)) + MM2 / q2 * (twoMboMM * ((C_7 + deltaC7_QCDF(q2, !bar, SPLINE)) * T_p(q2) -
etaV *
pow(-1,
angmomV) * C_7p * T_m(q2)) - sixteenM_PI2 *
h_lambda(1, q2)));
1643 if (!bar)
return -
gslpp::complex::i() * NN * (((C_9 + deltaC9_QCDF(q2, !bar, SPLINE) + Y(q2)) * V_m(q2) -
etaV *
pow(-1,
angmomV) * C_9p * V_p(q2)) + T_minus(q2, !bar) + MM2 / q2 * (twoMboMM * ((C_7 + deltaC7_QCDF(q2, !bar, SPLINE)) * T_m(q2) -
etaV *
pow(-1,
angmomV) * C_7p * T_p(q2)) - sixteenM_PI2 *
h_lambda(2, q2)));
1680 double MVll::k2(
double q2)
1682 return (MM4 + q2 * q2 + MV4 - twoMV2 * q2 - twoMM2 * (q2 + MV2)) / fourMM2;
1687 return sqrt(1. - 4. * Mlep2 / q2);
1690 double MVll::beta2(
double q2)
1692 return 1. - 4. * Mlep2 / q2;
1695 double MVll::lambda(
double q2)
1697 return (MM4 + q2 * q2 + MV4 - twoMV2 * q2 - twoMM2 * (q2 + MV2));
1700 double MVll::F(
double q2,
double b_i)
1702 return sqrt(lambda(q2)) *
beta(q2) * q2 * b_i / (ninetysixM_PI3MM3);
1705 double MVll::I_1c(
double q2,
bool bar)
1711 double MVll::I_1s(
double q2,
bool bar)
1717 double MVll::I_2c(
double q2,
bool bar)
1722 double MVll::I_2s(
double q2,
bool bar)
1727 double MVll::I_3(
double q2,
bool bar)
1732 double MVll::I_4(
double q2,
bool bar)
1737 double MVll::I_5(
double q2,
bool bar)
1743 double MVll::I_6s(
double q2,
bool bar)
1748 double MVll::I_6c(
double q2,
bool bar)
1753 double MVll::I_7(
double q2,
bool bar)
1759 double MVll::I_8(
double q2,
bool bar)
1764 double MVll::I_9(
double q2,
bool bar)
1769 double MVll::h_1c(
double q2,
bool bar)
1775 double MVll::h_1s(
double q2,
bool bar)
1777 return F(q2, b)*((beta2(q2) + 2.) / 2. * ((
H_V_p(q2, bar) *
H_V_m(q2, bar).
conjugate()).real()
1783 double MVll::h_2c(
double q2,
bool bar)
1788 double MVll::h_2s(
double q2,
bool bar)
1794 double MVll::h_3(
double q2,
bool bar)
1800 double MVll::h_4(
double q2,
bool bar)
1806 double MVll::h_7(
double q2,
bool bar)
1813 double MVll::s_5(
double q2,
bool bar)
1820 double MVll::s_6s(
double q2,
bool bar)
1825 double MVll::s_6c(
double q2,
bool bar)
1830 double MVll::s_8(
double q2,
bool bar)
1836 double MVll::s_9(
double q2,
bool bar)
1846 std::pair<double, double > qbin = std::make_pair(q_min, q_max);
1848 old_handler = gsl_set_error_handler_off();
1852 if (sigma0Cached[qbin] == 0) {
1854 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();
1855 cacheSigma0[qbin] = avaSigma;
1856 sigma0Cached[qbin] = 1;
1858 return cacheSigma0[qbin];
1861 if (sigma1Cached[qbin] == 0) {
1863 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();
1864 cacheSigma1[qbin] = avaSigma;
1865 sigma1Cached[qbin] = 1;
1867 return cacheSigma1[qbin];
1870 if (sigma2Cached[qbin] == 0) {
1872 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();
1873 cacheSigma2[qbin] = avaSigma;
1874 sigma2Cached[qbin] = 1;
1876 return cacheSigma2[qbin];
1879 if (sigma3Cached[qbin] == 0) {
1881 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();
1882 cacheSigma3[qbin] = avaSigma;
1883 sigma3Cached[qbin] = 1;
1885 return cacheSigma3[qbin];
1888 if (sigma4Cached[qbin] == 0) {
1890 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();
1891 cacheSigma4[qbin] = avaSigma;
1892 sigma4Cached[qbin] = 1;
1894 return cacheSigma4[qbin];
1897 if (sigma5Cached[qbin] == 0) {
1899 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();
1900 cacheSigma5[qbin] = avaSigma;
1901 sigma5Cached[qbin] = 1;
1903 return cacheSigma5[qbin];
1906 if (sigma6Cached[qbin] == 0) {
1908 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();
1909 cacheSigma6[qbin] = avaSigma;
1910 sigma6Cached[qbin] = 1;
1912 return cacheSigma6[qbin];
1915 if (sigma7Cached[qbin] == 0) {
1917 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();
1918 cacheSigma7[qbin] = avaSigma;
1919 sigma7Cached[qbin] = 1;
1921 return cacheSigma7[qbin];
1924 if (sigma9Cached[qbin] == 0) {
1926 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();
1927 cacheSigma9[qbin] = avaSigma;
1928 sigma9Cached[qbin] = 1;
1930 return cacheSigma9[qbin];
1933 if (sigma10Cached[qbin] == 0) {
1935 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();
1936 cacheSigma10[qbin] = avaSigma;
1937 sigma10Cached[qbin] = 1;
1939 return cacheSigma10[qbin];
1942 if (sigma11Cached[qbin] == 0) {
1944 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();
1945 cacheSigma11[qbin] = avaSigma;
1946 sigma11Cached[qbin] = 1;
1948 return cacheSigma11[qbin];
1951 std::stringstream out;
1953 throw std::runtime_error(
"MVll::integrateSigma: index " + out.str() +
" not implemented");
1956 gsl_set_error_handler(old_handler);
1966 return getSigma1c(q_2);
1969 return getSigma1s(q_2);
1972 return getSigma2c(q_2);
1975 return getSigma2s(q_2);
1978 return getSigma3(q_2);
1981 return getSigma4(q_2);
1984 return getSigma5(q_2);
1987 return getSigma6s(q_2);
1990 return getSigma7(q_2);
1993 return getSigma8(q_2);
1996 return getSigma9(q_2);
1999 std::stringstream out;
2001 throw std::runtime_error(
"MVll::getSigma: index " + out.str() +
" not implemented");
2009 std::pair<double, double > qbin = std::make_pair(q_min, q_max);
2011 old_handler = gsl_set_error_handler_off();
2015 if (delta0Cached[qbin] == 0) {
2017 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();
2018 cacheDelta0[qbin] = avaDelta;
2019 delta0Cached[qbin] = 1;
2021 return cacheDelta0[qbin];
2024 if (delta1Cached[qbin] == 0) {
2026 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();
2027 cacheDelta1[qbin] = avaDelta;
2028 delta1Cached[qbin] = 1;
2030 return cacheDelta1[qbin];
2033 if (delta2Cached[qbin] == 0) {
2035 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();
2036 cacheDelta2[qbin] = avaDelta;
2037 delta2Cached[qbin] = 1;
2039 return cacheDelta2[qbin];
2042 if (delta3Cached[qbin] == 0) {
2044 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();
2045 cacheDelta3[qbin] = avaDelta;
2046 delta3Cached[qbin] = 1;
2048 return cacheDelta3[qbin];
2051 if (delta6Cached[qbin] == 0) {
2053 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();
2054 cacheDelta6[qbin] = avaDelta;
2055 delta6Cached[qbin] = 1;
2057 return cacheDelta6[qbin];
2060 if (delta7Cached[qbin] == 0) {
2062 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();
2063 cacheDelta7[qbin] = avaDelta;
2064 delta7Cached[qbin] = 1;
2066 return cacheDelta7[qbin];
2069 if (delta8Cached[qbin] == 0) {
2071 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();
2072 cacheDelta8[qbin] = avaDelta;
2073 delta8Cached[qbin] = 1;
2075 return cacheDelta8[qbin];
2078 if (delta10Cached[qbin] == 0) {
2080 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();
2081 cacheDelta10[qbin] = avaDelta;
2082 delta10Cached[qbin] = 1;
2084 return cacheDelta10[qbin];
2087 if (delta11Cached[qbin] == 0) {
2089 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();
2090 cacheDelta11[qbin] = avaDelta;
2091 delta11Cached[qbin] = 1;
2093 return cacheDelta11[qbin];
2096 std::stringstream out;
2098 throw std::runtime_error(
"MVll::integrateDelta: index " + out.str() +
" not implemented");
2101 gsl_set_error_handler(old_handler);