13 CW0b(2,0.),CW1b(2,0.),CW2b(2,0.),CWeb(2,0.),CWesb(2,0.),
14 U0_4b(2,0.),U0_5b(2,0.),J1_4b(2,0.),J2_4b(2,0.),J1_5b(2,0.),J2_5b(2,0.),
15 R0_4b(2,0.),R0_5b(2,0.),R1_4b(2,0.),R1_5b(2,0.),
16 CW0p(3,0.),CW1p(3,0.),CW2p(3,0.),CWep(3,0.),CWesp(3,0.),
17 U0_4p(3,0.),U0_5p(3,0.),J1_4p(3,0.),J2_4p(3,0.),J1_5p(3,0.),J2_5p(3,0.),
18 R0_4p(3,0.),R0_5p(3,0.),R1_4p(3,0.),R1_5p(3,0.)
30 xi2c=966966391. / 10546875. - 231404944. / 3515625. * (1. /
etac) - 272751559. / 10546875. *
31 (1. /
etac)*(1. /
etac) - 128. / 5. * (1. - (1. /
etac)*(1. /
etac)) * gsl_sf_zeta_int(3);;
32 xice= 8. / 3. / (11. - 2. / 3. * 3. ) * (
etac - 1.);
33 xices=(32. / 9. / (11. - 2. / 3. * 3. ) - (-8. / 9. * (1. + 2./4. ) ) * 8. / (11. - 2. / 3. * 3. ) / (11. - 2. / 3. * 3. ) - (102. - 38. / 3. * 3. ) * 8. / 3. / (11. - 2. / 3. * 3. ) / (11. - 2. / 3. * 3. )) *
34 log(
etac) + 8. / 3. / (11. - 2. / 3. * 3. ) * (8. * (102. - 38. / 3. * 3. ) / (11. - 2. / 3. * 3. ) / (11. - 2. / 3. * 3. ) - (404. / 3. - 40. / 9. * 3.) / (11. - 2. / 3. * 3. )) * (1. - 1. /
etac) * (1. -
etac);
81 gslpp::matrix<double> evo(3, 3, 0.);
87 evo(0, 0) = pow(
etab, 6. / 23.);
88 evo(1, 1) = pow(
etab, -12. / 23.);
89 evo(2, 0) = 12. / 5. * (pow(
etab, 6. / 23.) - pow(
etab, 1. / 23.));
90 evo(2, 1) = 6. / 13. * (pow(
etab, -12. / 23.) - pow(
etab, 1. / 23.));
91 evo(2, 2) = pow(
etab, 1. / 23.);
96 evo(0, 0) = pow(
etacb, 6. / 25.);
97 evo(1, 1) = pow(
etacb, -12. / 25.);
98 evo(2, 0) = 12. / 7. * (pow(
etacb, 6. / 25.) - pow(
etacb, -1. / 25.));
99 evo(2, 1) = 6. / 11. * (pow(
etacb, -12. / 25.) - pow(
etacb, -1. / 25.));
100 evo(2, 2) = pow(
etacb, -1. / 25.);
105 std::stringstream out;
107 throw std::runtime_error(
"Charm_Kpnunu::RgevolP() " + out.str() +
" wrong number of falvours");
112 evo(0, 0) = 5165. / 3174.;
113 evo(1, 1) = -2267. / 1587.;
114 evo(2, 0) = -15857. / 1587.;
115 evo(2, 1) = 15305. / 3174.;
116 evo(2, 2) = -14924. / 1587.;
121 evo(0, 0) = 6719. / 3750.;
122 evo(1, 1) = -3569. / 1875.;
123 evo(2, 0) = -15931. / 1875.;
124 evo(2, 1) = 5427. / 1250.;
125 evo(2, 2) = -15212. / 1875.;
130 std::stringstream out;
132 throw std::runtime_error(
"Charm_Kpnunu::RgevolP() " + out.str() +
" wrong number of flavours");
137 evo(0, 0) = -7.35665;
138 evo(1, 1) = -54.9107;
146 evo(0, 0) = -10.2451;
147 evo(1, 1) = -50.3422;
155 std::stringstream out;
157 throw std::runtime_error(
"Charm_Kpnunu::RgevolP() " + out.str() +
" wrong number of flavours");
160 std::stringstream out;
162 throw std::runtime_error(
"Charm_Kpnunu::RgevolP() " + out.str() +
" wrong order assignment ");
172 double Lb = log(mub * mub / Mb / Mb);
186 dcp(0) = -pow(
etab, 6. / 23.)*(2. / 3. * Lb * ((631. + 9699.) / 6348. * (1 -
etab) +
etab *
CW1p(0))
187 - 2. / 3. * (59. / 36. + 1. / 3. * Lb + Lb * Lb));
188 dcp(1) = -pow(
etab, -12. / 23.)*(2. / 3. * Lb * ((631. - 9699.) / 6348. * (1 -
etab) +
etab *
CW1p(1))
189 + 4. / 3. * (59. / 36. + 1. / 3. * Lb + Lb * Lb));
190 dcp(2) = (-2. / 3.) * Lb * ((284704. / 2645. + 694522. / 20631. *
etab) * pow(
etab, 1. / 23.)
191 -(1033492. / 7935. + 8264. / 529. *
etab) * pow(
etab, 6. / 23.) + (3058. / 1587. + 18136. / 6877. *
etab)
192 * pow(
etab, -12. / 23.) +
etab * (pow(
etab, 1. / 23.) *
CW1p(2) + 48. / 5. * (pow(
etab, 6. / 23.)
193 - pow(
etab, 1. / 23.)) *
CW1p(0) + 24. / 13. * (pow(
etab, -12. / 23.) - pow(
etab, 1. / 23.)) *
CW1p(1)));
198 std::stringstream out;
200 throw std::runtime_error(
"Charm_Kpnunu::MatchingCp() " + out.str() +
" wrong order assignment ");
211 double rhoP1p = 4 * (1. -
L) + 4. * log(
kc);
212 double rhoP1m = -2. * (1. -
L) - 2 * log(
kc);
213 gslpp::vector<double> C_LO =
C(
LO,
NO_QED,1);
215 return (
C(
NLO,
NO_QED,1)(2) + 4. * (C_LO(0) * rhoP1p +C_LO(1) * rhoP1m) +
xi1c * C_LO(2));
218 double rhoP1p = 4 * (1. -
L) + 4. * log(
kc);
219 double rhoP1m = -2. * (1. -
L) - 2 * log(
kc);
220 double rhoP2p = 11. + 20. *
L - 12. *
L *
L - 20. * log(
kc) - 12. * log(
kc) * log(
kc) +
222 double rhoP2m = -7. + 12. *
L + 12. *
L *
L - 12. * log(
kc) + 12. * log(
kc) * log(
kc)
223 - 24. * log(
kc) *
L - 2. *
xi1c;
224 gslpp::vector<double> C_NLO =
C(
NLO,
NO_QED,1);
225 gslpp::vector<double> C_LO =
C(
LO,
NO_QED,1);
227 return (
C(
NNLO,
NO_QED,1)(2) + 4. * (C_NLO(0) * rhoP1p + C_NLO(1) * rhoP1m + C_LO(0) * rhoP2p
228 + C_LO(1) * rhoP2m) +
xi1c * (C_NLO(2) + 4. * (C_LO(0) * rhoP1p + C_LO(1)
229 * rhoP1m)) +
xi2c * C_LO(2));
232 std::stringstream out;
234 throw std::runtime_error(
"Charm_Kpnunu::C_P() order" + out.str() +
" not implemented");
242 gslpp::matrix<double> evo(2, 2, 0.);
250 evo(1, 0) = 12. * (1. - pow(
etab, 1. / 23.));
251 evo(1, 1) = pow(
etab, 1. / 23.);
258 evo(1, 0) = -12. * (1. - pow(
etacb, -1. / 25.));
259 evo(1, 1) = pow(
etacb, -1. / 25.);
264 std::stringstream out;
266 throw std::runtime_error(
"Charm_Kpnunu::RgevolB() " + out.str() +
" wrong number of falvours");
273 evo(1, 0) = 2402. / 1587.;
274 evo(1, 1) = -14924. / 1587.;
281 evo(1, 0) = 581. / 1875.;
282 evo(1, 1) = -15212. / 1875.;
287 std::stringstream out;
289 throw std::runtime_error(
"Charm_Kpnunu::RgevolB() " + out.str() +
" wrong number of flavours");
296 evo(1, 0) = 1296371522. / 39457581. - 34624. / 1081. * gsl_sf_zeta_int(3);
297 evo(1, 1) = -177621017. / 7555707. + 800. / 23. * gsl_sf_zeta_int(3);
304 evo(1, 0) = 684990354. / 19140625. - 6976. / 245. * gsl_sf_zeta_int(3);
305 evo(1, 1) = -272751559. / 10546875. + 128. / 5. * gsl_sf_zeta_int(3);
310 std::stringstream out;
312 throw std::runtime_error(
"Charm_Kpnunu::RgevolB() " + out.str() +
" wrong number of flavours");
315 std::stringstream out;
317 throw std::runtime_error(
"Charm_Kpnunu::RgevolB() " + out.str() +
" wrong order assignment ");
327 double Lb = log(mub * mub / Mb / Mb);
342 dcb(1) = -2. / 3. * Lb * ((238784. / 529. - 9608. / 1587 *
etab) * pow(
etab, 1. / 23.) - 1336. / 3. +
348 std::stringstream out;
350 throw std::runtime_error(
"Charm_Kpnunu::MatchingCp() " + out.str() +
" wrong order assignment ");
361 double rhoB1_e = 5. + 4. *
L - 4. * log(
kc);
366 double rhoB1_e = 5. + 4. *
L - 4. * log(
kc);
367 double rhoB2_e = -2. *
model.
getCF()*(9. -
L - 6. *
L *
L) - 8. / 3. * log(
kc) + 16. * log(
kc) * log(
kc)
368 - 32. * log(
kc) *
L - 4. *
xi1c;
373 std::stringstream out;
375 throw std::runtime_error(
"Charm_Kpnunu::C_Be() order" + out.str() +
" not implemented");
389 double rhoB1_t = 5. + 4. *
L + 4. * x_t * log(x_t) / (1. - x_t) + 4. / (x_t -
kc)*(
kc * log(
kc) -
390 x_t * (1. -
kc) / (1. - x_t) * log(x_t));
395 double rhoB1_t = 5. + 4. *
L + 4. * x_t * log(x_t) / (1. - x_t) + 4. / (x_t -
kc)*(
kc * log(
kc) -
396 x_t * (1. -
kc) / (1. - x_t) * log(x_t));
398 double rhoB2_t = -2. *
model.
getCF()*((9. + 7. * x_t) / (1. - x_t) + x_t * (3. + 13. * x_t) /
399 (1. - x_t) / (1. - x_t) * log(x_t) - 12. * x_t / (1. - x_t) * gsl_sf_dilog(1. - x_t)
400 - ((1. - 13. * x_t) / (1. - x_t) - 12. * x_t * x_t / (1. - x_t) / (1. - x_t) * log(x_t))
401 *
L - 6. *
L *
L) + 32. / (x_t -
kc)*(4. * x_t * (1 -
kc) / 3. / (1. - x_t) - x_t
402 * ((x_t * (13. - 29. * x_t)) +
kc * (3. + 29. * x_t * x_t) -
kc *
kc * (3. + 13. * x_t))
403 / 12. / (x_t -
kc) / (1. - x_t) / (1. - x_t) * log(x_t) +
kc * (17. * x_t -
kc) / 12.
404 / (x_t -
kc) * log(
kc) + x_t * x_t / (x_t -
kc) * log(x_t) * log(
kc) - (x_t * x_t +
405 2. * x_t *
kc -
kc *
kc) / 2. / (x_t -
kc) * log(
kc) * log(
kc) - x_t * (x_t -
kc) /
406 (1. - x_t) * gsl_sf_dilog(1. - x_t) - x_t * gsl_sf_dilog(1. - x_t /
kc))
407 + 32. / (x_t -
kc) / (1. - x_t)*(x_t * (1. -
kc) +
kc * (1. - x_t)*(2. * x_t -
kc)
408 / (x_t -
kc) * log(
kc) - x_t * x_t * (1. -
kc)*(1. - 2. * x_t +
kc) / (x_t -
kc)
409 / (1. - x_t) * log(x_t)) *
L + 4. *
kc / (x_t -
kc)*(1. - x_t / (x_t -
kc) * log(x_t)
410 + x_t / (x_t -
kc) * log(
kc)) *
xi1c;
415 std::stringstream out;
417 throw std::runtime_error(
"Charm_Kpnunu::C_Bt() order" + out.str() +
" not implemented");
438 double xi_ce= 8. / 3. / (11. - 2. / 3. * 3.) * (
etac - 1.);
440 gslpp::vector<double> C0 =
C(
LO,
NO_QED,1);
441 gslpp::vector<double> Ce =
C(
LO,
LO_QED,1);
443 return (Ce(2) + C0(2) * xi_ce + 4. * C0(0) / 4. * rhop_e + 4. * C0(0) / 4. * rhom_e);
448 double rhop_es = 4. *
xice;
449 double rhom_es = -2. *
xice;
450 double rhop_1 = 4. * (1. -
L) + 4. * log(
kc);
451 double rhom_1 = -2. * (1. -
L) - 2. * log(
kc);
453 gslpp::vector<double> C0 =
C(
LO,
NO_QED,1);
455 gslpp::vector<double> Ce =
C(
LO,
LO_QED,1);
458 return (Ces(2) + Ce(2) *
xi1c + C1(2) *
xice + C0(2) *
xices +
459 4. * (rhop_es + rhop_e *
xi1c + rhop_1 *
xice) * C0(0) / 4. +
460 4. * (rhom_es + rhom_e *
xi1c + rhom_1 *
xice) * C0(1) / 4. +
461 4. * rhop_1 * Ce(0) / 4. +
462 4. * rhom_1 * Ce(1) / 4. +
463 4. * rhop_e * C1(0) / 4. + 4. * rhom_e * C1(1) / 4.);
466 std::stringstream out;
468 throw std::runtime_error(
"Charm_Kpnunu::C_P_qed() order" + out.str() +
" not implemented");
486 gslpp::vector<double> C0 =
C(
LO,
NO_QED,0);
487 gslpp::vector<double> Ce =
C(
LO,
LO_QED,0);
489 return (Ce(1) + C0(1) *
xice + 4. * C0(0) / 4. * rho_e);
493 double rho_es = -4. *
xice;
494 double rho_1 = 5. + 4. *
L - 4. * log(
kc);
496 gslpp::vector<double> C0 =
C(
LO,
NO_QED,0);
497 gslpp::vector<double> Ce =
C(
LO,
LO_QED,0);
501 return (Ces(1) + Ce(1) *
xi1c + C1(1) *
xice + C0(1) *
xices +
502 4. * C0(0) / 4. * rho_es + 4. * C0(0) / 4. * rho_e *
xi1c +
503 8. * Ce(0) / 4. * rho_1 + 4. * C0(0) / 4. * rho_1 *
xice);
507 std::stringstream out;
509 throw std::runtime_error(
"Charm_Kpnunu::C_Be_qed() order" + out.str() +
" not implemented");
526 gslpp::vector<double> C0 =
C(
LO,
NO_QED,0);
527 gslpp::vector<double> Ce =
C(
LO,
LO_QED,0);
530 return (Ce(1) + C0(1) *
xice + 4. * C0(0) / 4. * rho_e);
536 double rho_es = -4. *
kc *
xice * (
kc - xt * (1 - log(xt /
kc) ) ) / (
kc - xt) / (
kc - xt) ;
537 double rho_1 = 5. + 4. *
L + 4. * xt / (1. - xt) + 4. / (xt -
kc)*(
kc * log(
kc)
538 - xt * (1. -
kc) / (1. - xt) * log(xt));
540 gslpp::vector<double> C0 =
C(
LO,
NO_QED,0);
541 gslpp::vector<double> Ce =
C(
LO,
LO_QED,0);
545 return (Ces(1) + Ce(1) *
xi1c + C1(1) *
xice + C0(1) *
xices +
546 4. * C0(0) / 4. * rho_es + 4. * C0(0) / 4. * rho_e *
xi1c +
547 8. * Ce(0) / 4. * rho_1 + 4. * C0(0) / 4. * rho_1 *
xice);
551 std::stringstream out;
553 throw std::runtime_error(
"Charm_Kpnunu::C_Be_qed() order" + out.str() +
" not implemented");
562 double cbox = 2. * cpeng ;
578 std::stringstream out;
580 throw std::runtime_error(
"Charm_Kpnunu::EVOCkpnn(): order " + out.str() +
" not implemented");
592 std::stringstream out;
594 throw std::runtime_error(
"Charm_Kpnunu::EVOCkpnn(): qed order " + out.str() +
" not implemented");
618 switch (contribution)
630 double gamma_nuB = -8. ;
631 double gamma_M = 8. ;
632 double beta = 11. - 2. / 3. * nf ;
633 double gamma_nu = 2. * ( gamma_M - beta ) ;
635 gslpp::matrix<double> gamma_T(2, 0.);
638 gamma_T(1,0) = gamma_nuB;
639 gamma_T(1,1) = gamma_nu;
649 double gamma_M = 404. / 3. - 40. / 9. * nf ;
650 double beta = 102. - 38. / 3. * nf ;
651 double gamma_nu = 2. * ( gamma_M - beta ) ;
653 gslpp::matrix<double> gamma_T(2, 0.);
656 gamma_T(1,0) = gamma_nuB;
657 gamma_T(1,1) = gamma_nu;
666 double gamma_nuB = 2. *
model.
getCF() * (69. / 3. - 458./3.*3. - (48. / 3. - 96. * 3.) * gsl_sf_zeta_int(3) + 38. / 3. * nf) ;
667 double gamma_M = 2498. - (4432./27. + 320.*gsl_sf_zeta_int(3)/3.) * nf - (280. * nf * nf )/81. ;
668 double beta = 2857./2. - 5033.*nf/18. + 325.*nf*nf/54. ;
669 double gamma_nu = 2. * ( gamma_M - beta ) ;
671 gslpp::matrix<double> gamma_T(2, 0.);
674 gamma_T(1,0) = gamma_nuB;
675 gamma_T(1,1) = gamma_nu;
683 std::stringstream out;
685 throw std::runtime_error(
"Charm_Kpnunu::ADM: order " + out.str() +
" not implemented\n");
691 double gamma_W = -4. ;
692 double gamma_nuB = 0. ;
693 double gamma_M = 8. / 3. ;
695 double gamma_nu = 2. * ( gamma_M - beta ) ;
697 gslpp::matrix<double> gamma_T(2, 0.);
699 gamma_T(0,0) = 2. * gamma_W;
700 gamma_T(1,0) = gamma_nuB;
701 gamma_T(1,1) = gamma_nu;
709 double gamma_W = 4. ;
710 double gamma_nuB = -316. / 9. ;
711 double gamma_M = 32. / 9. ;
712 double beta = -8. / 9. * (nfu + nfd/4. ) ;
713 double gamma_nu = 2. * ( gamma_M - beta ) ;
715 gslpp::matrix<double> gamma_T(2, 0.);
717 gamma_T(0,0) = 2. * gamma_W;
718 gamma_T(1,0) = gamma_nuB;
719 gamma_T(1,1) = gamma_nu;
726 std::stringstream out, out2;
728 out2 << contribution;
729 throw std::runtime_error(
"Charm_Kpnunu::ADM: order_qed " + out.str() +
" of contribution " + out2.str() +
" not implemented\n");
742 gslpp::matrix<double> gamma_pm(2,0.);
743 gamma_pm(0,0)= +6.*(1.-1./3.);
746 gamma_pm(1,1)= -6.*(1.+1./3.);
748 double gamma_pnu = -0.5 * ( -4. * ( 1. + 3. ) ) ;
749 double gamma_mnu = -0.5 * ( -4. * ( 1. - 3. ) ) ;
750 double gamma_M = 8. ;
751 double beta = 11. - 2. / 3. * nf ;
752 double gamma_nu = 2. * ( gamma_M - beta ) ;
754 gslpp::matrix<double> gamma_T(3, 0.);
756 gamma_T(0,0) = gamma_pm(0,0);
757 gamma_T(1,0) = gamma_pm(0,1);
758 gamma_T(0,1) = gamma_pm(1,0);
759 gamma_T(1,1) = gamma_pm(1,1);
761 gamma_T(2,0) = gamma_pnu;
762 gamma_T(2,1) = gamma_mnu;
764 gamma_T(2,2) = gamma_nu;
772 gslpp::matrix<double> gamma_pm(2,0.);
773 gamma_pm(0,0)= (-21./2. + 2.*nf/3.) * (1. - 1./3.);
776 gamma_pm(1,1)= (-21./2. - 2.*nf/3.) * (1. + 1./3.);
778 double gamma_pnu = -0.5 * ( 16. * (2. - 11.) ) ;
779 double gamma_mnu = -0.5 * ( 16. * (2. + 11.) ) ;
780 double gamma_M = 404. / 3. - 40. / 9. * nf ;
781 double beta = 102. - 38. / 3. * nf ;
782 double gamma_nu = 2. * ( gamma_M - beta ) ;
784 gslpp::matrix<double> gamma_T(3, 0.);
786 gamma_T(0,0) = gamma_pm(0,0);
787 gamma_T(1,0) = gamma_pm(0,1);
788 gamma_T(0,1) = gamma_pm(1,0);
789 gamma_T(1,1) = gamma_pm(1,1);
791 gamma_T(2,0) = gamma_pnu;
792 gamma_T(2,1) = gamma_mnu;
794 gamma_T(2,2) = gamma_nu;
802 gslpp::matrix<double> gamma_pm(2,0.);
803 gamma_pm(0,0)= 1./300. * (349049. + 201485.) - 1./1350. * (115577. - 9795.)*nf - 130./27. * (1. - 1./3.)*nf*nf - (672. + 80. * (1. - 1./3.)*nf ) * gsl_sf_zeta_int(3);
806 gamma_pm(1,1)= 1./300. * (349049. - 201485.) - 1./1350. * (115577. + 9795.)*nf + 130./27. * (1. + 1./3.)*nf*nf + (672. + 80. * (1. + 1./3.)*nf ) * gsl_sf_zeta_int(3);
808 double gamma_pnu = -0.5 * ( -2./225. * (45124. + 484917.) + 32.*(13. + 15.)*gsl_sf_zeta_int(3) + 144.*nf ) ;
809 double gamma_mnu = -0.5 * ( -2./225. * (45124. - 484917.) + 32.*(13. - 15.)*gsl_sf_zeta_int(3) - 144.*nf );
810 double gamma_M = 2498. - (4432./27. + 320.*gsl_sf_zeta_int(3)/3.) * nf - (280. * nf * nf )/81. ;
811 double beta = 2857./2. - 5033.*nf/18. + 325.*nf*nf/54. ;
812 double gamma_nu = 2. * ( gamma_M - beta ) ; ;
814 gslpp::matrix<double> gamma_T(3, 0.);
816 gamma_T(0,0) = gamma_pm(0,0);
817 gamma_T(1,0) = gamma_pm(0,1);
818 gamma_T(0,1) = gamma_pm(1,0);
819 gamma_T(1,1) = gamma_pm(1,1);
821 gamma_T(2,0) = gamma_pnu;
822 gamma_T(2,1) = gamma_mnu;
824 gamma_T(2,2) = gamma_nu;
831 std::stringstream out;
833 throw std::runtime_error(
"Charm_Kpnunu::ADM: order " + out.str() +
" not implemented\n");
839 gslpp::matrix<double> gamma_pm(2,0.);
840 gamma_pm(0,0)= -8./3.;
843 gamma_pm(1,1)= -8./3.;
845 double gamma_pnu = 0. ;
846 double gamma_mnu = 0. ;
847 double gamma_M = 8. / 3. ;
849 double gamma_nu = 2. * ( gamma_M - beta ) ;
851 gslpp::matrix<double> gamma_T(3, 0.);
853 gamma_T(0,0) = gamma_pm(0,0);
854 gamma_T(1,0) = gamma_pm(0,1);
855 gamma_T(0,1) = gamma_pm(1,0);
856 gamma_T(1,1) = gamma_pm(1,1);
858 gamma_T(2,0) = gamma_pnu;
859 gamma_T(2,1) = gamma_mnu;
861 gamma_T(2,2) = gamma_nu;
869 gslpp::matrix<double> gamma_12(2,0.);
870 gslpp::matrix<complex> trash(2,0.);
871 gslpp::vector<complex> ev_gamma12(2,0.);
873 gamma_12.assign(0,0,194./9.);
874 gamma_12.assign(0,1,-2./3.);
875 gamma_12.assign(1,0,25./3.);
876 gamma_12.assign(1,1,-49./9.) ;
878 gamma_12.eigensystem(trash,ev_gamma12);
880 double gamma_pnu = 0. ;
881 double gamma_mnu = 0. ;
882 double gamma_M = 32. / 9. ;
883 double beta = -8. / 9. * (nfu + nfd/4. ) ;
884 double gamma_nu = 2. * ( gamma_M - beta ) ;
886 gslpp::matrix<double> gamma_T(3, 0.);
888 gamma_T(0,0) = ev_gamma12(0).real();
889 gamma_T(1,1) = ev_gamma12(1).real();
891 gamma_T(2,0) = gamma_pnu;
892 gamma_T(2,1) = gamma_mnu;
894 gamma_T(2,2) = gamma_nu;
901 std::stringstream out, out2;
903 out2 << contribution;
904 throw std::runtime_error(
"Charm_Kpnunu::ADM: order_qed " + out.str() +
" of contribution " + out2.str() +
" not implemented\n");
910 std::stringstream out ;
912 throw std::runtime_error(
"Charm_Kpnunu::ADM: contribution " + out.str() +
" not implemented\n");
921 switch (contribution)
934 gslpp::vector<double> CWin(2, 0.);
949 gslpp::vector<double> CWin(2, 0.);
950 double Cnu= -4. * (9. + 4. * LW) ;
964 gslpp::vector<double> CWin(2, 0.);
965 double Cnu= -8. *
model.
getCF()*(20. + 2. * M_PI * M_PI + 25. * LW + 6. * LW * LW) ;
976 std::stringstream out, out2;
978 out2 << contribution;
979 throw std::runtime_error(
"Charm_Kpnunu::CWin_muw: order " + out.str() +
" of contribution " + out2.str() +
" not implemented\n");
986 gslpp::vector<double> CWin(2, 0.);
990 CWin(0)= 4. * CW * CW ;
1001 gslpp::vector<double> CWin(2, 0.);
1002 double CW= -11. / 3. - 2. * LZ ;
1005 CWin(0)= 4. * CW * CW ;
1012 std::stringstream out, out2;
1014 out2 << contribution;
1015 throw std::runtime_error(
"Charm_Kpnunu::Cwin_qed: order_qed " + out.str() +
" of contribution " + out2.str() +
" not implemented\n");
1033 gslpp::vector<double> CWin(3, 0.);
1051 gslpp::vector<double> CWin(3, 0.);
1053 double Cp= 0.5*(1. - 1./3.) * (11. + 6. * LW) ;
1054 double Cm= -0.5*(1. + 1./3.) * (11. + 6. * LW) ;
1055 double Cnu= 8. * (2. + LW) ;
1072 gslpp::vector<double> CWin(3, 0.);
1074 double Cp= (-(135677. - 124095.) / 3600. + 58. / 18. * M_PI * M_PI - 0.5 * (2. / 3.)*
1075 (112. / 9. + 32. * x + (20. / 3. + 16. * x) * log(x) - (8. + 16. * x) *
1076 sqrt(4. * x - 1.) * gsl_sf_clausen(2. * asin(1. / (2. * sqrt(x)))))
1077 +(5. / 36. * 238. * LW) + 58. / 6. * LW * LW) ;
1078 double Cm= (-(135677. + 124095.) / 3600. - 44. / 18. * M_PI * M_PI + 0.5 * (4. / 3.)*
1079 (112. / 9. + 32. * x + (20. / 3. + 16. * x) * log(x) - (8. + 16. * x) *
1080 sqrt(4. * x - 1.) * gsl_sf_clausen(2. * asin(1. / (2. * sqrt(x)))))
1081 - (5. / 36. * 260. * LW) - 44. / 6. * LW * LW);
1082 double Cnu= 4. *
model.
getCF() * (33. + 4. * M_PI * M_PI + 34. * LW + 12. * LW * LW) ;
1095 std::stringstream out, out2;
1097 out2 << contribution;
1098 throw std::runtime_error(
"Charm_Kpnunu::CWin_muw: order " + out.str() +
" of contribution " + out2.str() +
" not implemented\n");
1105 gslpp::vector<double> CWin(3, 0.);
1111 CWin(0)= 4. * Cp * CA ;
1112 CWin(1)= 4. * Cm * CA ;
1127 double mt2 = mt * mt;
1128 double MW2 = MW * MW;
1129 double MZ2 = MZ * MZ;
1130 double MH2 = MH * MH;
1131 double MH4 = MH2 * MH2;
1133 double sw4 = sw2 * sw2;
1134 double cw2 = 1. - sw2;
1136 gslpp::vector<double> CWin(3, 0.);
1137 double Cp= -22. / 9. - 4. / 3. * LZ ;
1138 double Cm= -22. / 9. - 4. / 3. * LZ ;
1139 double CA= 3. * mt2 / 4. / sw2 / MW2 + (11. * sw2 - 6.) / 4. / sw2 / cw2 -
1140 3. / 4. * (MW2 - cw2 * MH2) / (MH2 - MW2) / sw4 * log(MW2 / MZ2) +
1141 3. * MH4 / 4. / (MH2 - MW2) / (MW2 - cw2 * MH2) * log(MH2 / MZ2);
1144 CWin(0)= 4. * Cp * CA ;
1145 CWin(1)= 4. * Cm * CA ;
1152 std::stringstream out, out2;
1154 out2 << contribution;
1155 throw std::runtime_error(
"Charm_Kpnunu::Cwin_qed: order_qed " + out.str() +
" of contribution " + out2.str() +
" not implemented\n");
1161 std::stringstream out ;
1162 out << contribution;
1163 throw std::runtime_error(
"Charm_Kpnunu::Cwin_qed: contribution " + out.str() +
" not implemented\n");
1175 switch (contribution)
1186 std::stringstream out ;
1187 out << contribution;
1188 throw std::runtime_error(
"Charm_Kpnunu::RGevol_J : contribution " + out.str() +
" not implemented\n");
1193 gslpp::matrix<gslpp::complex> V(dimension,0.) , V_inv(dimension,0.) ;
1194 gslpp::matrix<double> G1(dimension,0.) ;
1195 gslpp::matrix<double> S1(dimension,0.) ;
1196 gslpp::matrix<double> J1(dimension,0.) ;
1197 gslpp::matrix<double> ADM_0(dimension,0.) , ADM_1(dimension,0.) , ADM_2(dimension,0.);
1200 gslpp::vector<gslpp::complex> e(dimension,0.) ;
1202 double beta_0 = 11. - 2. / 3. * nf ;
1203 double beta_1 = 102. - 38. / 3. * nf ;
1204 double beta_2 = 2857. / 2. - 5033. / 18. * nf + 325. / 54. * nf * nf ;
1211 ADM_0.eigensystem(V,e);
1215 G1 = V_inv.real() * ADM_1 * V.real() ;
1218 for(
unsigned int i = 0; i < G1.size_i(); i++){
1219 for (
unsigned int j = 0; j < G1.size_j(); j++) {
1220 S1.assign(i , j, beta_1 / 2. / beta_0 / beta_0 * e(i).real() * (i==j) - G1(i,j) / (2. * beta_0 + e(i).real() - e(j).real() ));
1224 J1 = V.real() * S1 * V_inv.real() ;
1227 switch (contribution){
1233 std::stringstream out ;
1234 out << contribution;
1235 throw std::runtime_error(
"Charm_Kpnunu::RGevol_J : contribution " + out.str() +
" not implemented\n");
1237 }
else if (order==
NLO){
1239 }
else if (order==
NNLO){
1240 gslpp::matrix<double> S2(dimension,0.) , G2(dimension,0.) , J2(dimension,0.);
1241 G2 = V_inv.real() * ADM_2 * V.real() ;
1242 for(
unsigned int i = 0; i < G1.size_i(); i++){
1243 for (
unsigned int j = 0; j < G1.size_j(); j++) {
1245 for (
unsigned int k = 0; k < G1.size_j(); k++){
1246 term += ( 1. + e(i).real() / 2. / beta_0 - e(k).real() / 2. / beta_0 ) / ( 2. + e(i).real() / 2. / beta_0 - e(j).real() / 2. / beta_0 ) * ( S1(i,k) * S1(k,j) - beta_1 / beta_0 * S1(i,j) * (j==k) );
1248 S2.assign(i , j , beta_2 / 4. / beta_0 / beta_0 * e(i).real() * (i==j) + term - G2(i,j) / (4. * beta_0 + e(i).real() - e(j).real() ));
1251 J2 = V.real() * S2 * V_inv.real() ;
1255 std::stringstream out ;
1257 throw std::runtime_error(
"Charm_Kpnunu::RGevol_J : order " + out.str() +
" not implemented\n");
1266 switch (contribution)
1277 std::stringstream out ;
1278 out << contribution;
1279 throw std::runtime_error(
"Charm_Kpnunu::RGevol_K : contribution " + out.str() +
" not implemented\n");
1284 gslpp::matrix<gslpp::complex> V(dimension,0.) , V_inv(dimension,0.) ;
1285 gslpp::matrix<double> M_0(dimension,0.) , K_0(dimension,0.) ;
1286 gslpp::matrix<double> ADM_0(dimension,0.) , ADM_1(dimension,0.) , ADM_2(dimension,0.), ADM_e(dimension,0.), ADM_es(dimension,0.);
1287 gslpp::matrix<double> M_1(dimension,0.), S_1(dimension,0.) , K1_1(dimension,0.) , K2_1(dimension,0.) , K3_1(dimension,0.), G_1(dimension,0.) ;
1290 gslpp::vector<gslpp::complex> e(dimension,0.) ;
1292 double beta_0 = 11. - 2. / 3. * nf ;
1293 double beta_1 = 102. - 38. / 3. * nf ;
1303 ADM_0.eigensystem(V,e);
1307 M_0 = V_inv.real() * ADM_e * V.real();
1308 M_1 = V_inv.real() * ( (ADM_es - beta_1 / beta_0 * ADM_e) + (ADM_e *
RGevol_J(
NLO,nf,contribution) -
RGevol_J(
NLO,nf,contribution) * ADM_e) ) * V.real();
1309 G_1 = V_inv.real() * ADM_1 * V.real();
1311 for(
unsigned int i = 0; i < G_1.size_i(); i++){
1312 for (
unsigned int j = 0; j < G_1.size_j(); j++) {
1313 S_1.assign(i , j, beta_1 / 2. / beta_0 / beta_0 * e(i).real() * (i==j) - G_1(i,j) / (2. * beta_0 + e(i).real() - e(j).real() ));
1318 for(
unsigned int i = 0; i < M_0.size_i(); i++){
1319 for (
unsigned int j = 0; j < M_0.size_j(); j++) {
1320 if (e(i).real() != e(j).real() + 2. * beta_0){
1321 K_0.assign(i , j, M_0(i,j) / (e(i).real() / 2. / beta_0 - e(j).real() / 2. / beta_0 - 1.) * ( pow(
etacb,e(j).real() /2. / beta_0) - pow(
etacb,e(i).real() /2. / beta_0) /
etacb) );
1323 K_0.assign(i , j, M_0(i,j) * pow(
etacb, e(j).real() / 2. / beta_0) * log( 1. /
etacb) );
1329 for(
unsigned int i = 0; i < M_0.size_i(); i++){
1330 for (
unsigned int j = 0; j < M_0.size_j(); j++) {
1331 if (e(i).real() != e(j).real() + 2. * beta_0){
1332 K_0.assign(i , j, M_0(i,j) / (e(i).real() / 2. / beta_0 - e(j).real() / 2. / beta_0 - 1.) * ( pow(
etab,e(j).real() /2. / beta_0) /
etacb - pow(
etab,e(i).real() /2. / beta_0) /
etacb /
etab) );
1334 K_0.assign(i , j, M_0(i,j) * pow(
etab, e(j).real() / 2. / beta_0) * log( 1. /
etab) /
etacb );
1340 std::stringstream out ;
1342 throw std::runtime_error(
"Charm_Kpnunu::RGevol_K : nf " + out.str() +
" not implemented\n");
1352 return ((-2. * M_PI / beta_0) * (V.real() * K_0 * V_inv.real()) );
1355 for(
unsigned int i = 0; i < M_1.size_i(); i++){
1356 for (
unsigned int j = 0; j < M_1.size_j(); j++) {
1358 K1_1.assign(i , j, M_1(i,j) / (e(i).real() / 2. / beta_0 - e(j).real() / 2. / beta_0) * ( pow(
etacb,e(j).real() /2. / beta_0) - pow(
etacb,e(i).real() /2. / beta_0) ) );
1360 K1_1.assign(i , j, M_1(i,j) * pow(
etacb, e(i).real() / 2. / beta_0) * log( 1. /
etacb) );
1364 K2_1 = -
etacb * K_0 * S_1;
1367 return ( ( -0.5 / beta_0) * V.real() * (K1_1 + K2_1 + K3_1) * V_inv.real());
1370 std::stringstream out ;
1372 throw std::runtime_error(
"Charm_Kpnunu::RGevol_K : order " + out.str() +
" not implemented\n");
1378 return ((-2. * M_PI / beta_0) * (V.real() * K_0 * V_inv.real()) );
1381 for(
unsigned int i = 0; i < M_1.size_i(); i++){
1382 for (
unsigned int j = 0; j < M_1.size_j(); j++) {
1384 K1_1.assign(i , j, M_1(i,j) / (e(i).real() / 2. / beta_0 - e(j).real() / 2. / beta_0) * ( pow(
etab,e(j).real() /2. / beta_0) - pow(
etab,e(i).real() /2. / beta_0) ) );
1386 K1_1.assign(i , j, M_1(i,j) * pow(
etab, e(i).real() / 2. / beta_0) * log( 1. /
etab) );
1391 K3_1 =
etacb * S_1 * K_0;
1393 return ( ( -0.5 / beta_0) * V.real() * (K1_1 + K2_1 + K3_1) * V_inv.real());
1396 std::stringstream out ;
1398 throw std::runtime_error(
"Charm_Kpnunu::RGevol_K : order " + out.str() +
" not implemented\n");
1403 std::stringstream out ;
1405 throw std::runtime_error(
"Charm_Kpnunu::RGevol_K : nf " + out.str() +
" not implemented\n");
1417 switch(contribution){
1443 std::stringstream out ;
1445 throw std::runtime_error(
"Charm_Kpnunu::C : order " + out.str() +
" not implemented\n");
1462 std::stringstream out ;
1464 throw std::runtime_error(
"Charm_Kpnunu::C : order_qed " + out.str() +
" not implemented\n");
1494 std::stringstream out ;
1496 throw std::runtime_error(
"Charm_Kpnunu::C : order " + out.str() +
" not implemented\n");
1513 std::stringstream out ;
1515 throw std::runtime_error(
"Charm_Kpnunu::C : order_qed " + out.str() +
" not implemented\n");
1522 std::stringstream out ;
1523 out << contribution;
1524 throw std::runtime_error(
"Charm_Kpnunu::C : contribution " + out.str() +
" not implemented\n");
const gslpp::complex computelamc() const
The product of the CKM elements .
~Charm_Kpnunu()
destructor
gslpp::vector< double > CW1p
gslpp::vector< double > CW1b
gslpp::matrix< double > RGevol_R(orders_qed order_qed, int nf, int contribution)
This method returns the R matrices useful for the RGE of the charm penguin/box diagrams in qed.
gslpp::matrix< double > J2_5b
double C_Be(orders order)
gslpp::vector< double > CWesp
gslpp::matrix< double > R0_4b
std::vector< WilsonCoefficient > vevoCkpnn
gslpp::vector< double > CWesb
gslpp::matrix< double > J2_5p
gslpp::matrix< double > R1_5p
gslpp::matrix< double > ADM(orders order, orders_qed order_qed, double nf, int contribution)
Reference: 0805.4119v1 and hep-ph/0603079v3. To retrieve QCD ADM just put NO_QED to order_qed and the...
gslpp::vector< double > CWep
gslpp::matrix< double > J1_5p
gslpp::vector< double > CW2b
gslpp::matrix< double > R0_5p
gslpp::matrix< double > J2_4p
gslpp::matrix< double > R1_4p
gslpp::matrix< double > J2_4b
gslpp::vector< double > CW0p
double C_Be_qed(orders_qed order_qed)
gslpp::vector< double > dcp
gslpp::matrix< double > R0_5b
gslpp::matrix< double > RGevol_J(orders order, int nf, int contribution)
This method returns the J matrices useful for the RGE of the charm penguin/box diagrams.
gslpp::vector< double > ThresholdCb(orders order)
gslpp::vector< double > CW2p
double C_Bt_qed(orders_qed order_qed)
const StandardModel & model
gslpp::vector< double > ThresholdCp(orders order)
gslpp::matrix< double > RGevolB(int nf, orders order)
gslpp::vector< double > CW0b
gslpp::matrix< double > RGevolP(int nf, orders order)
gslpp::vector< double > C(orders order, orders_qed order_qed, int contribution)
This method solves the RGE equation: d/dlog(mu) C = gamma_transp C from mu_w to mu_c relevant for the...
double C_Bt(orders order)
gslpp::vector< double > CWin_muw(orders order, orders_qed order_qed, int contribution)
0805.4119v1 and hep-ph/0603079v3. To retrieve QCD CW at MuW just put NO_QED to order_qed and the qcd_...
gslpp::matrix< double > J1_5b
gslpp::vector< double > dcb
gslpp::matrix< double > J1_4b
gslpp::matrix< double > U0_5b
gslpp::matrix< double > R1_5b
WilsonCoefficient evoCkpnn
Charm_Kpnunu(const StandardModel &model_i)
constructor
std::vector< WilsonCoefficient > & EVOCkpnn()
gslpp::matrix< double > J1_4p
double C_P_qed(orders_qed order_qed)
gslpp::matrix< double > U0_4b
gslpp::matrix< double > R1_4b
gslpp::vector< double > CWeb
gslpp::matrix< double > R0_4p
gslpp::matrix< double > U0_5p
gslpp::matrix< double > U0_4p
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
const double & getMass() const
A get method to access the particle mass.
const double getMuc() const
A get method to access the threshold between four- and three-flavour theory in GeV.
const double getCF() const
A get method to access the Casimir factor of QCD.
const double Mrun(const double mu, const double m, const quark q, const orders order=FULLNNLO) const
Computes a running quark mass from .
const double getMut() const
A get method to access the threshold between six- and five-flavour theory in GeV.
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
const double getMub() const
A get method to access the threshold between five- and four-flavour theory in GeV.
A model class for the Standard Model.
const double getMuw() const
A get method to retrieve the matching scale around the weak scale.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
const double sW2_MSbar_Approx() const
The (approximated formula for the) square of the sine of the weak mixing angle in the MSbar scheme,...
const double getMz() const
A get method to access the mass of the boson .
const double Ale(double mu, orders order, bool Nf_thr=true) const
The running electromagnetic coupling in the scheme.
const CKM & getCKM() const
A get method to retrieve the member object of type CKM.
virtual const double getMHl() const
A get method to retrieve the Higgs mass .
virtual const double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
virtual StandardModelMatching & getMatching() const
A get method to access the member reference of type StandardModelMatching.
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 sW2_ND() const
The square of the sine of the weak mixing angle in the MSbar-ND scheme (w/o decoupling $\alpha\ln(m_t...
virtual const double alphaMz() const
The electromagnetic coupling at the -mass scale, .
void setCoeff(const gslpp::vector< gslpp::complex > &z, orders order_i)
virtual void setMu(double mu)
orders_qed getOrder_qed() const
orders
An enum type for orders in QCD.
orders_qed
An enum type for orders in electroweak.