v1.0
|
a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models
|
|
Go to the documentation of this file.
12 #include <gsl/gsl_sf_zeta.h>
27 "lambda",
"A",
"rhob",
"etab",
"Mz",
"AlsMz",
"GF",
"ale",
"dAle5Mz",
"mHl",
28 "delMw",
"delSin2th_l",
"delSin2th_q",
"delSin2th_b",
"delGammaZ",
"delsigma0H",
"delR0l",
"delR0c",
"delR0b",
29 "mneutrino_1",
"mneutrino_2",
"mneutrino_3",
"melectron",
"mmu",
"mtau",
"muw"
36 :
QCD(), Yu(3, 3, 0.), Yd(3, 3, 0.), Yn(3, 3, 0.),
37 Ye(3, 3, 0.), SMM(*this), SMFlavour(*this)
41 FlagMw =
"APPROXIMATEFORMULA";
66 for (
int i = 0; i < 12; ++i) {
161 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
162 if (it->first.compare(
"AlsM") == 0 || it->first.compare(
"MAls") == 0)
163 throw std::runtime_error(
"ERROR: inappropriate parameter " + it->first
164 +
" in model initialization");
166 std::map<std::string, double> myDPars(DPars);
167 myDPars[
"AlsM"] = myDPars.at(
"AlsMz");
168 myDPars[
"MAls"] = myDPars.at(
"Mz");
189 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
217 for (
int i = 0; i < 12; ++i) {
233 if (
name.compare(
"Mz") == 0) {
236 }
else if (
name.compare(
"AlsMz") == 0) {
239 }
else if (
name.compare(
"GF") == 0)
241 else if (
name.compare(
"ale") == 0)
243 else if (
name.compare(
"dAle5Mz") == 0)
245 else if (
name.compare(
"mHl") == 0)
247 else if (
name.compare(
"delMw") == 0)
249 else if (
name.compare(
"delSin2th_l") == 0)
251 else if (
name.compare(
"delSin2th_q") == 0)
253 else if (
name.compare(
"delSin2th_b") == 0)
255 else if (
name.compare(
"delGammaZ") == 0)
257 else if (
name.compare(
"delsigma0H") == 0)
259 else if (
name.compare(
"delR0l") == 0)
261 else if (
name.compare(
"delR0c") == 0)
263 else if (
name.compare(
"delR0b") == 0)
265 else if (
name.compare(
"mneutrino_1") == 0) {
268 }
else if (
name.compare(
"mneutrino_2") == 0) {
271 }
else if (
name.compare(
"mneutrino_3") == 0) {
274 }
else if (
name.compare(
"melectron") == 0) {
277 }
else if (
name.compare(
"mmu") == 0) {
280 }
else if (
name.compare(
"mtau") == 0) {
307 }
else if (
name.compare(
"muw") == 0)
315 for (
int i = 0; i <
NSMvars; i++) {
316 if (DPars.find(
SMvars[i]) == DPars.end()) {
317 std::cout <<
"ERROR: missing mandatory SM parameter " <<
SMvars[i] << std::endl;
352 for (
int i = 0; i < 3; i++)
353 Yu.assign(i, i, this->quarks[
UP + 2 * i].getMass() /
v() *
sqrt(2.));
358 for (
int i = 0; i < 3; i++)
359 Yd.assign(i, i, this->quarks[
DOWN + 2 * i].getMass() /
v() *
sqrt(2.));
363 for (
int i = 0; i < 3; i++)
364 Ye.assign(i, i, this->leptons[
ELECTRON + 2 * i].getMass() /
v() *
sqrt(2.));
368 for (
int i = 0; i < 3; i++)
381 if (
name.compare(
"CacheInStandardModel") == 0) {
384 }
else if (
name.compare(
"CacheInEWSMcache") == 0) {
387 }
else if (
name.compare(
"Wolfenstein") == 0) {
401 }
else if (
name.compare(
"WithoutNonUniversalVC") == 0) {
404 }
else if (
name.compare(
"NoApproximateGammaZ") == 0) {
407 }
else if (
name.compare(
"SMAux") == 0) {
421 if (
name.compare(
"Mw") == 0) {
426 throw std::runtime_error(
"StandardModel::setFlagStr(): Invalid flag "
427 +
name +
"=" + value);
429 }
else if (
name.compare(
"RhoZ") == 0) {
434 throw std::runtime_error(
"StandardModel::setFlagStr(): Invalid flag "
435 +
name +
"=" + value);
436 }
else if (
name.compare(
"KappaZ") == 0) {
441 throw std::runtime_error(
"StandardModel::setFlagStr(): Invalid flag "
442 +
name +
"=" + value);
494 bool bNotUpdated =
true;
498 bNotUpdated &=
false;
510 throw std::runtime_error(
"out of range in StandardModel::ale_OS()");
512 double N = 20.0 / 3.0;
513 double beta1 = N / 3.0;
514 double beta2 = N / 4.0;
516 double v = 1.0 + 2.0 * beta1 * alpha_ini / M_PI *
log(
Mz / mu);
520 return ( alpha_ini /
v);
522 return ( alpha_ini /
v * (1.0 - beta2 / beta1 * alpha_ini / M_PI *
log(
v) /
v));
524 throw std::runtime_error(
"Error in StandardModel::ale_OS()");
530 unsigned int nu = nf % 2 == 0 ? nf / 2 : nf / 2;
531 unsigned int nd = nf % 2 == 0 ? nf / 2 : 1 + nf / 2;
532 double Qu = 2. / 3., Qd = -1. / 3., Qbar2 = nu * Qu * Qu + nd * Qd * Qd,
533 Qbar4 = nu * Qu * Qu * Qu * Qu + nd * Qd * Qd * Qd * Qd;
538 return(
Beta0((
double) nf));
540 return(
Beta1((
double) nf));
542 return(
Beta2((
double) nf));
544 return(
Beta3((
double) nf));
546 return(-4. *
TF * Qbar2 );
548 return((4. *
CF - 8. *
CA) *
TF * Qbar2 );
550 return(11./3. *
TF * Qbar2 *
Beta_e(00, nf) + 2. *
TF * Qbar4);
552 throw std::runtime_error(
"StandardModel::Beta_s(): case not implemented");
558 unsigned int nu = nf % 2 == 0 ? nf / 2 : nf / 2;
559 unsigned int nd = nf % 2 == 0 ? nf / 2 : 1 + nf / 2;
560 double Qu = 2. / 3., Qd = -1. / 3., Qbar2 = nu * Qu * Qu + nd * Qd * Qd,
561 Qbar4 = nu * Qu * Qu * Qu * Qu + nd * Qd * Qd * Qd * Qd;
566 return(4./3. * (Qbar2 *
Nc + 3.));
568 return(4. * (Qbar4 *
Nc + 3.));
570 return(4. *
CF *
Nc * Qbar2);
572 throw std::runtime_error(
"StandardModel::Beta_e(): case not implemented");
591 return (
AlsByOrder(mu,
LO, qed_flag, Nf_thr) +
AlsByOrder(mu,
NLO, qed_flag, Nf_thr) +
AlsByOrder(mu,
NNLO, qed_flag, Nf_thr) +
AlsByOrder(mu,
NNNLO, qed_flag, Nf_thr));
593 throw std::runtime_error(
"StandardModel::Als(): " +
orderToString(order) +
" is not implemented.");
599 int i, nfAls = (int)
Nf(
Mz), nfmu = Nf_thr ? (int)
Nf(mu) : nfAls;
600 double als, alstmp, mutmp;
624 for (i = nfAls - 1; i > nfmu; i--) {
636 for (i = nfAls + 1; i < nfmu; i++) {
659 throw std::runtime_error(
"StandardModel::Als(): " +
orderToString(order) +
" is not implemented.");
667 double v = 1. + b00s * alsi / 2. / M_PI *
log(mu / mu_i);
668 double ve = 1. - b00e * alei / 2. / M_PI *
log(mu / mu_i);
669 double logv =
log(
v), logve =
log(ve);
670 double rho = 1. / (1. + b00e * alei / b00s / alsi);
672 double b01s =
Beta_s(01,nf), b01s00e = b01s / b00e;
680 als += alsi * alsi / 4. / M_PI /
v /
v * b01s00e * logve;
683 als += alsi * alsi * alsi / 4. / 4. / M_PI / M_PI /
v /
v /
v * (
684 b01s00e * b01s00e * logve * logve + b01s00e *
Beta_s(10, nf) / b00s *
685 (-2. * logv * logve + rho * ve * logve));
688 als += alsi * alsi * alei / 4. / 4. / M_PI / M_PI /
v /
v / ve * (
Beta_s(02, nf) / b00e *
689 (ve - 1.) +
Beta_s(11, nf) / b00s * rho * ve * (logve - logv) + b01s00e *
Beta_e(10, nf) /
690 b00e * (logve - ve + 1.) + b01s *
Beta_s(10, nf) / b00s / b00s * rho * logv +
691 b01s00e *
Beta_e(01, nf) / b00s * (rho * ve * (logv - logve) - logv));
696 return (
AlsWithInit(mu, alsi, mu_i,
LO,
true) +
AlsWithInit(mu, alsi, mu_i,
NLO,
true)+
AlsWithInit(mu, alsi, mu_i,
NNLO,
true));
698 return (
AlsWithInit(mu, alsi, mu_i,
LO,
true) +
AlsWithInit(mu, alsi, mu_i,
NLO,
true)+
AlsWithInit(mu, alsi, mu_i,
NNLO,
true) +
AlsWithInit(mu, alsi, mu_i,
NNNLO,
true));
700 throw std::runtime_error(
"StandardModel::AlsWithInit(): " +
orderToString(order) +
" is not implemented.");
708 int i, nfAle = (int)
Nf(
Mz), nfmu = Nf_thr ? (int)
Nf(mu) : nfAle;
723 return (
Ale(mu,
LO, Nf_thr) +
Ale(mu,
NLO, Nf_thr));
741 for (i = nfAle - 1; i > nfmu; i--) {
753 for (i = nfAle + 1; i < nfmu; i++) {
775 throw std::runtime_error(
"StandardModel::Ale(): " +
orderToString(order) +
" is not implemented.");
781 if (fabs(mu - mu_i) < MEPS)
return(alei);
785 double ve = 1. - b00e * alei / 2. / M_PI *
log(mu / mu_i);
786 double logv =
log(1. + b00s * alsi / 2. / M_PI *
log(mu / mu_i)), logve =
log(ve);
793 return (- alei * alei / 4. / M_PI / ve / ve * (
Beta_e(10, nf) / b00e * logve -
Beta_e(01, nf) / b00s * logv) );
798 throw std::runtime_error(
"StandardModel::AleWithInit(): " +
orderToString(order) +
" is not implemented.");
809 double DeltaAlphaL = 0.0;
876 double alphatilde_e =
alphaMz()/4./M_PI;
877 double alphatilde_s =
AlsMz/4./M_PI;
880 double B00S =
Beta0(nf), B10S =
Beta1(nf), B20S =
Beta2(nf), B30S = gsl_sf_zeta_int(3) * 352864./81. - 598391./1458,
881 B01S = -22./9., B11S = -308./27., B02S = 4945./243.;
883 double B00E = 80./9., B01E = 176./9., B10E = 464./27.;
885 double B10soB00s = B10S / B00S;
886 double B01soB00e = B01S/B00E;
888 double vs= 1. + 2. * B00S * alphatilde_s *
log(mu/ mu_0);
889 double ve= 1. - 2. * B00E * alphatilde_e *
log(mu/ mu_0);
890 double ps= B00S * alphatilde_s /(B00S * alphatilde_s + B00E * alphatilde_e);
892 double logve =
log(ve);
893 double logvs =
log(vs);
894 double logeos =
log(ve/vs);
895 double logsoe =
log(vs/ve);
896 double asovs = alphatilde_s/vs;
897 double aeove = alphatilde_e/ve;
901 result = asovs -
pow(asovs, 2) * (logvs * B10soB00s - logve * B01soB00e)
902 +
pow(asovs, 3) * ((1. - vs) * B20S / B00S + B10soB00s * B10soB00s * (logvs * logvs - logvs
903 + vs - 1.) + B01soB00e * B01soB00e * logve * logve + (-2. * logvs * logve
904 + ps * ve * logve) * B01S * B10S/(B00E * B00S))
905 +
pow(asovs, 4) * (0.5 * B30S *(1. - vs * vs)/ B00S + ((2. * vs - 3.) * logvs + vs * vs
906 - vs) * B20S * B10soB00s /(B00S) + B10soB00s * B10soB00s * B10soB00s * (-
pow(logvs,3)
907 + 5. *
pow(logvs,2) / 2. + 2. * (1. - vs) * logvs - (vs - 1.) * (vs - 1.)* 0.5))
908 +
pow(asovs, 2) * (aeove) * ((ve - 1.) * B02S / B00E
909 + ps * ve * logeos * B11S /B00S +(logve - ve + 1.) * B01soB00e * B10E/(B00E)
910 + logvs * ps * B01S * B10soB00s/(B00S) +(logsoe * ve * ps - logvs) * B01soB00e * B01E/( B00S));
934 throw std::runtime_error(
"Error in s02()");
936 return ( (1.0 -
sqrt(tmp)) / 2.0);
941 return ( 1.0 -
s02());
957 if (
FlagMw.compare(
"APPROXIMATEFORMULA") == 0)
991 return ( Mw_i * Mw_i /
Mz /
Mz);
1002 return ( 1.0 -
cW2(Mw_i));
1007 return ( 1.0 -
cW2());
1014 double sW2 = 1.0 - myMw * myMw /
Mz /
Mz;
1015 double tmp =
sqrt(2.0) *
GF *
sW2 * myMw * myMw / M_PI /
ale;
1016 if (
FlagMw.compare(
"NORESUM") == 0
1017 ||
FlagMw.compare(
"APPROXIMATEFORMULA") == 0) {
1020 return (1.0 - 1.0 / tmp);
1025 double DeltaRho[orders_EW_size])
const
1030 DeltaRho[
EW1] = 0.0;
1042 DeltaRho[
EW2] = 0.0;
1050 DeltaRho[
EW3] = 0.0;
1054 double DeltaR_rem[orders_EW_size])
const
1059 DeltaR_rem[
EW1] = 0.0;
1071 DeltaR_rem[
EW2] = 0.0;
1079 DeltaR_rem[
EW3] = 0.0;
1087 double G0 =
GF *
pow(
Mz, 3.0) / 24.0 /
sqrt(2.0) / M_PI;
1089 double Gz = 6.0 * G0;
1090 Gz += 3.0 * G0 * (
pow(1.0 - 4.0 * sW2tree, 2.0) + 1.0);
1091 Gz += 6.0 * G0 * (
pow(1.0 - 8.0 / 3.0 * sW2tree, 2.0) + 1.0)
1092 * (1.0 +
AlsMz / M_PI);
1093 Gz += 9.0 * G0 * (
pow(1.0 - 4.0 / 3.0 * sW2tree, 2.0) + 1.0)
1094 * (1.0 +
AlsMz / M_PI);
1099 return (
Mz - Gz * Gz / 2.0 /
Mz);
1105 double Gw_SM = 3.0 *
GF *
pow(
Mw, 3.0) / 2.0 /
sqrt(2.0) / M_PI
1106 * (1.0 + 2.0 * AlsMw / 3.0 / M_PI);
1108 return (
Mw - Gw_SM * Gw_SM / 2.0 /
Mw);
1114 double Gw_SM = 3.0 *
GF *
pow(Mwbar, 3.0) / 2.0 /
sqrt(2.0) / M_PI
1115 * (1.0 + 2.0 * AlsMw / 3.0 / M_PI);
1117 return (Mwbar + Gw_SM * Gw_SM / 2.0 / Mwbar);
1123 double sW2bar = 1.0 - Mwbar_SM * Mwbar_SM /
Mzbar() /
Mzbar();
1124 double tmp =
sqrt(2.0) *
GF * sW2bar * Mwbar_SM * Mwbar_SM / M_PI /
ale;
1143 throw std::runtime_error(
"Error in StandardModel::GammaW()");
1145 double G0 =
GF *
pow(
Mw(), 3.0) / 6.0 /
sqrt(2.0) / M_PI;
1156 if (fi.
is(
"LEPTON"))
1160 return ( 3.0 * V.
abs2() * G0 *
rho_GammaW(fi, fj)*(1.0 + AlsMw / M_PI));
1170 double GammaWtmp = 0.;
1172 for (
int i = 0; i < 6; i += 2)
1186 double Re_gV_over_gA = 1.0 - 4.0 * fabs(f.
getCharge()) * Re_kappa *
sW2();
1187 return ( 2.0 * Re_gV_over_gA / (1.0 +
pow(Re_gV_over_gA, 2.0)));
1198 return ( Re_kappa *
sW2());
1213 if (f.
is(
"NEUTRINO_1") || f.
is(
"NEUTRINO_2") || f.
is(
"NEUTRINO_3"))
1215 else if (f.
is(
"ELECTRON") || f.
is(
"MU"))
1217 else if (f.
is(
"TAU"))
1219 else if (f.
is(
"UP"))
1221 else if (f.
is(
"CHARM"))
1223 else if (f.
is(
"DOWN") || f.
is(
"STRANGE"))
1225 else if (f.
is(
"BOTTOM"))
1228 throw std::runtime_error(
"Error in StandardModel::GammaZ()");
1235 if (f.
is(
"NEUTRINO_1") || f.
is(
"NEUTRINO_2") || f.
is(
"NEUTRINO_3"))
1237 else if (f.
is(
"ELECTRON") || f.
is(
"MU"))
1239 else if (f.
is(
"TAU"))
1241 else if (f.
is(
"UP"))
1243 else if (f.
is(
"CHARM"))
1245 else if (f.
is(
"DOWN") || f.
is(
"STRANGE"))
1247 else if (f.
is(
"BOTTOM"))
1250 throw std::runtime_error(
"Error in StandardModel::GammaZ()");
1257 double G0 =
GF *
pow(
Mz, 3.0) / 24.0 /
sqrt(2.0) / M_PI;
1258 if (f.
is(
"LEPTON")) {
1262 Gamma = G0 * myrhoZ_f.
abs() *
sqrt(1.0 - 4.0 * xl)
1263 * ((1.0 + 2.0 * xl)*(gV_over_gA.
abs2() + 1.0) - 6.0 * xl)
1264 * (1.0 + 3.0 / 4.0 * myalphaMz / M_PI *
pow(Q, 2.0));
1265 }
else if (f.
is(
"QUARK")) {
1271 throw std::runtime_error(
"Error in StandardModel::GammaZ()");
1285 double Gamma_had_tmp = 0.0;
1311 double G0 =
GF *
pow(
Mz, 3.0) / 24.0 /
sqrt(2.0) / M_PI;
1312 Gamma_had_tmp += 4.0 * 3.0 * G0 *
RVh();
1314 return Gamma_had_tmp;
1376 if (f.
is(
"ELECTRON")) {
1382 }
else if (f.
is(
"MU")) {
1388 }
else if (f.
is(
"TAU")) {
1394 }
else if (f.
is(
"NEUTRINO_1")) {
1400 }
else if (f.
is(
"NEUTRINO_2")) {
1406 }
else if (f.
is(
"NEUTRINO_3")) {
1412 }
else if (f.
is(
"UP")) {
1419 }
else if (f.
is(
"STRANGE")) {
1426 }
else if (f.
is(
"CHARM")) {
1433 }
else if (f.
is(
"BOTTOM")) {
1440 }
else throw std::runtime_error(
"StandardModel::R0_f called with wrong argument");
1446 if (f.
is(
"ELECTRON")) {
1452 }
else if (f.
is(
"MU")) {
1458 }
else if (f.
is(
"TAU")) {
1464 }
else if (f.
is(
"NEUTRINO_1")) {
1470 }
else if (f.
is(
"NEUTRINO_2")) {
1476 }
else if (f.
is(
"NEUTRINO_3")) {
1482 }
else if (f.
is(
"UP")) {
1489 }
else if (f.
is(
"STRANGE")) {
1496 }
else if (f.
is(
"CHARM")) {
1503 }
else if (f.
is(
"BOTTOM")) {
1510 }
else throw std::runtime_error(
"StandardModel::R0_f called with wrong argument");
1556 if (
FlagRhoZ.compare(
"APPROXIMATEFORMULA") == 0)
1557 throw std::runtime_error(
"No approximate formula is available for rhoZ^f");
1581 #ifdef WITHIMTWOLOOPQCD
1597 double DeltaRbar_rem = 0.0;
1604 deltaRho_rem_f_real[j] = deltaRho_remf[j].real();
1605 double ReRhoZf =
resumRhoZ(DeltaRho, deltaRho_rem_f_real, DeltaRbar_rem, f.
is(
"BOTTOM"));
1608 double ImRhoZf = 0.0;
1610 ImRhoZf += deltaRho_remf[j].imag();
1628 double ReKappaZf = 0.0, ImKappaZf = 0.0;
1629 if (
FlagKappaZ.compare(
"APPROXIMATEFORMULA") == 0) {
1634 }
else if (
FlagSMAux && (f.
is(
"ELECTRON") || f.
is(
"MUON") || f.
is(
"TAU") ) ) {
1641 #ifdef WITHIMTWOLOOPQCD
1663 #ifdef WITHIMTWOLOOPQCD
1679 double DeltaRbar_rem = 0.0;
1686 deltaKappa_rem_f_real[j] = deltaKappa_remf[j].real();
1688 ReKappaZf =
resumKappaZ(DeltaRho, deltaKappa_rem_f_real, DeltaRbar_rem, f.
is(
"BOTTOM"));
1692 *(1.0 - 8.0 / 3.0 * ReKappaZf *
sW2());
1696 ImKappaZf += deltaKappa_remf[j].imag();
1725 dRho *=
ale / 4.0 / M_PI /
sW2;
1752 dKappa *=
ale / 4.0 / M_PI /
sW2;
1762 double DeltaRhoPrime = 2.0 * (
sqrt(rhoZe) - 1.0);
1764 return DeltaRhoPrime;
1771 double DeltaRhoPrime = 2.0 * (
sqrt(rhoZe) - 1.0);
1775 return (
c02() * DeltaRhoPrime +
s02() * DeltaRW / (
c02() -
s02())
1776 - 2.0 *
s02() * DeltaKappaPrime);
1783 double DeltaRhoPrime = 2.0 * (
sqrt(rhoZe) - 1.0);
1786 return (
c02() * DeltaRhoPrime + (
c02() -
s02()) * DeltaKappaPrime);
1804 return ( kappaZe.
real() / kappaZb.
real() - 1.0);
1807 / kappaZb.
real() - 1.0);
1836 const double DeltaR_rem[orders_EW_size])
const
1838 if ((
FlagMw.compare(
"APPROXIMATEFORMULA") == 0)
1839 || (DeltaR_rem[
EW2QCD1] != 0.0)
1840 || (DeltaR_rem[
EW3] != 0.0))
1841 throw std::runtime_error(
"Error in StandardModel::resumMw()");
1844 throw std::runtime_error(
"Error in StandardModel::resumMw()");
1846 double cW2_TMP = Mw_i * Mw_i /
Mz /
Mz;
1847 double sW2_TMP = 1.0 - cW2_TMP;
1849 double f_AlphaToGF, DeltaRho_sum = 0.0, DeltaRho_G = 0.0;
1850 if (
FlagMw.compare(
"NORESUM") == 0) {
1852 DeltaRho_sum += DeltaRho[(
orders_EW) j];
1856 f_AlphaToGF =
sqrt(2.0) *
GF *
pow(
Mz, 2.0) * sW2_TMP * cW2_TMP / M_PI /
ale;
1857 DeltaRho_sum = f_AlphaToGF * DeltaRho[
EW1]
1858 + f_AlphaToGF * DeltaRho[
EW1QCD1]
1859 + f_AlphaToGF * DeltaRho[
EW1QCD2]
1860 +
pow(f_AlphaToGF, 2.0) * DeltaRho[
EW2]
1862 +
pow(f_AlphaToGF, 3.0) * DeltaRho[
EW3];
1863 DeltaRho_G = f_AlphaToGF * DeltaRho[
EW1];
1867 double DeltaR_rem_sum = 0.0;
1868 double DeltaR_EW1 = 0.0, DeltaR_EW2_rem = 0.0;
1869 if (
FlagMw.compare(
"NORESUM") == 0) {
1871 DeltaR_rem_sum += DeltaR_rem[(
orders_EW) j];
1874 DeltaR_EW1 = -cW2_TMP / sW2_TMP * DeltaRho[
EW1] + DeltaR_rem[
EW1];
1880 DeltaRho_sum -= DeltaRho[
EW2];
1881 DeltaR_rem_sum -= DeltaR_rem[
EW2];
1884 R = 1.0 +
DeltaAlphaL5q() - cW2_TMP / sW2_TMP * DeltaRho_sum
1888 }
else if (
FlagMw.compare(
"OMSI") == 0) {
1890 R = 1.0 / (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum)
1893 }
else if (
FlagMw.compare(
"INTERMEDIATE") == 0) {
1895 R = 1.0 / ((1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum)
1898 }
else if (
FlagMw.compare(
"OMSII") == 0) {
1900 R = 1.0 / ((1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum)*(1.0 -
DeltaAlphaL5q())
1901 - (1.0 + cW2_TMP / sW2_TMP * DeltaRho_G) * DeltaR_rem[
EW1]
1904 throw std::runtime_error(
"Error in StandardModel::resumMw()");
1906 if (
FlagMw.compare(
"NORESUM") == 0) {
1910 if (tmp * R > 1.0)
throw std::runtime_error(
"StandardModel::resumMw(): Negative (1-tmp*R)");
1916 if (tmp * R > 1.0)
throw std::runtime_error(
"StandardModel::resumMw(): Negative (1-tmp*R)");
1923 const double deltaRho_rem[orders_EW_size],
1924 const double DeltaRbar_rem,
const bool bool_Zbb)
const
1926 if ((
FlagRhoZ.compare(
"APPROXIMATEFORMULA") == 0)
1927 || (deltaRho_rem[
EW1QCD2] != 0.0)
1928 || (deltaRho_rem[
EW2QCD1] != 0.0)
1929 || (deltaRho_rem[
EW3] != 0.0))
1930 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1933 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1935 double Mw_TMP =
Mw();
1936 double cW2_TMP =
cW2();
1937 double sW2_TMP =
sW2();
1939 double f_AlphaToGF, DeltaRho_sum = 0.0, DeltaRho_G;
1940 double DeltaRbar_rem_G, deltaRho_rem_G, deltaRho_rem_G2;
1943 * sW2_TMP * cW2_TMP / M_PI /
ale;
1944 DeltaRho_sum = f_AlphaToGF * DeltaRho[
EW1]
1945 + f_AlphaToGF * DeltaRho[
EW1QCD1]
1946 + f_AlphaToGF * DeltaRho[
EW1QCD2]
1947 +
pow(f_AlphaToGF, 2.0) * DeltaRho[
EW2]
1949 +
pow(f_AlphaToGF, 3.0) * DeltaRho[
EW3];
1950 DeltaRho_G = f_AlphaToGF * DeltaRho[
EW1];
1951 DeltaRbar_rem_G = f_AlphaToGF*DeltaRbar_rem;
1952 deltaRho_rem_G = f_AlphaToGF * (deltaRho_rem[
EW1]
1954 deltaRho_rem_G2 =
pow(f_AlphaToGF, 2.0) * deltaRho_rem[
EW2];
1959 if (
FlagRhoZ.compare(
"OMSI") == 0) {
1960 rhoZ = (1.0 + deltaRho_rem_G + deltaRho_rem_G2)
1961 / (1.0 - DeltaRho_sum * (1.0 - DeltaRbar_rem_G));
1962 }
else if (
FlagRhoZ.compare(
"INTERMEDIATE") == 0) {
1963 rhoZ = (1.0 + deltaRho_rem_G)
1964 / (1.0 - DeltaRho_sum * (1.0 - DeltaRbar_rem_G))
1966 }
else if (
FlagRhoZ.compare(
"NORESUM") == 0
1967 ||
FlagRhoZ.compare(
"OMSII") == 0) {
1968 rhoZ = 1.0 + DeltaRho_sum - DeltaRho_G * DeltaRbar_rem_G
1969 + DeltaRho_G * DeltaRho_G
1970 + deltaRho_rem_G * (1.0 + DeltaRho_G) + deltaRho_rem_G2;
1972 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1975 double OnePlusTaub = 1.0 +
taub();
1976 double OnePlusTaub2 = OnePlusTaub*OnePlusTaub;
1978 deltaRho_rem_G += f_AlphaToGF *
ale / 4.0 / M_PI / sW2_TMP
1980 if (
FlagRhoZ.compare(
"NORESUM") == 0) {
1981 rhoZ = (1.0 + DeltaRho_sum - DeltaRho_G * DeltaRbar_rem_G
1982 + DeltaRho_G * DeltaRho_G
1983 + deltaRho_rem_G * (1.0 + DeltaRho_G) + deltaRho_rem_G2)
1985 }
else if (
FlagRhoZ.compare(
"OMSI") == 0) {
1986 rhoZbL = OnePlusTaub2 / (1.0 - DeltaRho_sum);
1987 rhoZ = rhoZbL / (1.0 - rhoZbL * deltaRho_rem_G);
1988 }
else if (
FlagRhoZ.compare(
"INTERMEDIATE") == 0) {
1989 rhoZbL = OnePlusTaub2 / (1.0 - DeltaRho_sum);
1990 rhoZ = rhoZbL * (1.0 + rhoZbL * deltaRho_rem_G);
1991 }
else if (
FlagRhoZ.compare(
"OMSII") == 0) {
1992 rhoZbL = OnePlusTaub2 / (1.0 - DeltaRho_sum);
1993 rhoZ = rhoZbL * (1.0 + deltaRho_rem_G);
1995 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
2002 const double deltaKappa_rem[orders_EW_size],
2003 const double DeltaRbar_rem,
const bool bool_Zbb)
const
2005 if ((
FlagKappaZ.compare(
"APPROXIMATEFORMULA") == 0)
2006 || (deltaKappa_rem[
EW2QCD1] != 0.0)
2007 || (deltaKappa_rem[
EW3] != 0.0))
2008 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
2011 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
2013 double Mw_TMP =
Mw();
2014 double cW2_TMP =
cW2();
2015 double sW2_TMP =
sW2();
2017 double f_AlphaToGF, DeltaRho_sum = 0.0, DeltaRho_G;
2018 double DeltaRbar_rem_G, deltaKappa_rem_G, deltaKappa_rem_G2;
2021 * sW2_TMP * cW2_TMP / M_PI /
ale;
2022 DeltaRho_sum = f_AlphaToGF * DeltaRho[
EW1]
2023 + f_AlphaToGF * DeltaRho[
EW1QCD1]
2024 + f_AlphaToGF * DeltaRho[
EW1QCD2]
2025 +
pow(f_AlphaToGF, 2.0) * DeltaRho[
EW2]
2027 +
pow(f_AlphaToGF, 3.0) * DeltaRho[
EW3];
2028 DeltaRho_G = f_AlphaToGF * DeltaRho[
EW1];
2029 DeltaRbar_rem_G = f_AlphaToGF*DeltaRbar_rem;
2030 deltaKappa_rem_G = f_AlphaToGF * (deltaKappa_rem[
EW1]
2033 deltaKappa_rem_G2 =
pow(f_AlphaToGF, 2.0) * deltaKappa_rem[
EW2];
2039 kappaZ = (1.0 + deltaKappa_rem_G + deltaKappa_rem_G2)
2040 *(1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum * (1.0 - DeltaRbar_rem_G));
2041 }
else if (
FlagKappaZ.compare(
"INTERMEDIATE") == 0) {
2042 kappaZ = (1.0 + deltaKappa_rem_G)
2043 *(1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum * (1.0 - DeltaRbar_rem_G))
2044 + deltaKappa_rem_G2;
2045 }
else if (
FlagKappaZ.compare(
"NORESUM") == 0
2047 kappaZ = 1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum
2048 - cW2_TMP / sW2_TMP * DeltaRho_G * DeltaRbar_rem_G
2049 + deltaKappa_rem_G * (1.0 + cW2_TMP / sW2_TMP * DeltaRho_G)
2050 + deltaKappa_rem_G2;
2052 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
2055 double OnePlusTaub = 1.0 +
taub();
2057 deltaKappa_rem_G -= f_AlphaToGF *
ale / 8.0 / M_PI / sW2_TMP
2060 kappaZ = (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum
2061 - cW2_TMP / sW2_TMP * DeltaRho_G * DeltaRbar_rem_G
2062 + deltaKappa_rem_G * (1.0 + cW2_TMP / sW2_TMP * DeltaRho_G)
2063 + deltaKappa_rem_G2) / OnePlusTaub;
2064 }
else if (
FlagKappaZ.compare(
"OMSI") == 0) {
2065 kappaZbL = (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum) / OnePlusTaub;
2066 kappaZ = kappaZbL * (1.0 + deltaKappa_rem_G);
2067 }
else if (
FlagKappaZ.compare(
"INTERMEDIATE") == 0
2069 kappaZbL = (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum) / OnePlusTaub;
2070 kappaZ = kappaZbL + deltaKappa_rem_G;
2072 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
2080 double taub_tmp = 0.0;
2083 taub_tmp += -2.0 * Xt;
2103 return ( -0.000113);
2108 return ( -0.000160);
2110 return ( -0.000040);
2112 throw std::runtime_error(
"Error in StandardModel::Delta_EWQCD");
2129 double Qf2 =
pow(
quarks[q].getCharge(), 2.0);
2135 double mcMz2 = mcMz*mcMz;
2136 double mbMz2 = mbMz*mbMz;
2137 double mqMz2, mqdash4;
2141 mqdash4 = mbMz2*mbMz2;
2145 mqdash4 = mcMz2*mcMz2;
2155 double log_t =
log(MtPole * MtPole / s);
2156 double log_c =
log(mcMz2 / s);
2157 double log_b =
log(mbMz2 / s);
2162 log_q =
log(mqMz2 / s);
2179 double C02 = 365.0 / 24.0 - 11.0 *
zeta3 + (-11.0 / 12.0 + 2.0 / 3.0 *
zeta3) * nf;
2180 double C03 = 87029.0 / 288.0 - 121.0 / 8.0 *
zeta2 - 1103.0 / 4.0 *
zeta3
2181 + 275.0 / 6.0 * zeta5
2182 + (-7847.0 / 216.0 + 11.0 / 6.0 *
zeta2 + 262.0 / 9.0 *
zeta3
2183 - 25.0 / 9.0 * zeta5) * nf
2184 + (151.0 / 162.0 -
zeta2 / 18.0 - 19.0 / 27.0 *
zeta3) * nf*nf;
2185 double C04 = -156.61 + 18.77 * nf - 0.7974 * nf * nf + 0.0215 * nf * nf*nf;
2191 double C23 = -80.0 + 60.0 *
zeta3 + (32.0 / 9.0 - 8.0 / 3.0 *
zeta3) * nf;
2193 double C22V = 253.0 / 2.0 - 13.0 / 3.0 * nf;
2194 double C23V = 2522.0 - 855.0 / 2.0 *
zeta2 + 310.0 / 3.0 *
zeta3 - 5225.0 / 6.0 * zeta5
2195 + (-4942.0 / 27.0 + 34.0 *
zeta2 - 394.0 / 27.0 *
zeta3
2196 + 1045.0 / 27.0 * zeta5) * nf
2197 + (125.0 / 54.0 - 2.0 / 3.0 *
zeta2) * nf*nf;
2200 double C42 = 13.0 / 3.0 - 4.0 *
zeta3;
2202 double C41V = -22.0;
2203 double C42V = -3029.0 / 12.0 + 162.0 *
zeta2 + 112.0 *
zeta3
2204 + (143.0 / 18.0 - 4.0 *
zeta2 - 8.0 / 3.0 *
zeta3) * nf;
2205 double C42VL = -11.0 / 2.0 + nf / 3.0;
2209 double xt = s / MtPole / MtPole;
2210 double C2t = xt * (44.0 / 675.0 - 2.0 / 135.0 * (-log_t));
2213 double AlsMzPi =
AlsMz / M_PI;
2214 double AlsMzPi2 = AlsMzPi*AlsMzPi;
2215 double AlsMzPi3 = AlsMzPi2*AlsMzPi;
2216 double AlsMzPi4 = AlsMzPi3*AlsMzPi;
2223 RVf = 1.0 + 3.0 / 4.0 * Qf2 * alpMz / M_PI + AlsMzPi - Qf2 / 4.0 * alpMz / M_PI * AlsMzPi
2224 + (C02 + C2t) * AlsMzPi2 + C03 * AlsMzPi3 + C04 * AlsMzPi4
2225 + (mcMz2 + mbMz2) / s * C23 * AlsMzPi3
2226 + mqMz2 / s * (C21V * AlsMzPi + C22V * AlsMzPi2 + C23V * AlsMzPi3)
2227 + mcMz2 * mcMz2 / s / s * (C42 - log_c) * AlsMzPi2
2228 + mbMz2 * mbMz2 / s / s * (C42 - log_b) * AlsMzPi2
2229 + mqMz2 * mqMz2 / s / s * (C40V + C41V * AlsMzPi + (C42V + C42VL * log_q) * AlsMzPi2)
2230 + 12.0 * mqdash4 / s / s * AlsMzPi2
2231 - mqMz2 * mqMz2 * mqMz2 / s / s / s
2232 * (8.0 + 16.0 / 27.0 * (155.0 + 6.0 * log_q) * AlsMzPi);
2251 double Qf2 =
pow(
quarks[q].getCharge(), 2.0);
2257 double mcMz2 = mcMz*mcMz;
2258 double mbMz2 = mbMz*mbMz;
2259 double mqMz2, mqdash4;
2263 mqdash4 = mbMz2*mbMz2;
2267 mqdash4 = mcMz2*mcMz2;
2277 double log_t =
log(MtPole * MtPole / s);
2278 double log_c =
log(mcMz2 / s);
2279 double log_b =
log(mbMz2 / s);
2284 log_q =
log(mqMz2 / s);
2301 double C02 = 365.0 / 24.0 - 11.0 *
zeta3 + (-11.0 / 12.0 + 2.0 / 3.0 *
zeta3) * nf;
2302 double C03 = 87029.0 / 288.0 - 121.0 / 8.0 *
zeta2 - 1103.0 / 4.0 *
zeta3
2303 + 275.0 / 6.0 * zeta5
2304 + (-7847.0 / 216.0 + 11.0 / 6.0 *
zeta2 + 262.0 / 9.0 *
zeta3
2305 - 25.0 / 9.0 * zeta5) * nf
2306 + (151.0 / 162.0 -
zeta2 / 18.0 - 19.0 / 27.0 *
zeta3) * nf*nf;
2307 double C04 = -156.61 + 18.77 * nf - 0.7974 * nf * nf + 0.0215 * nf * nf*nf;
2313 double C23 = -80.0 + 60.0 *
zeta3 + (32.0 / 9.0 - 8.0 / 3.0 *
zeta3) * nf;
2315 double C21A = -22.0;
2316 double C22A = -8221.0 / 24.0 + 57.0 *
zeta2 + 117.0 *
zeta3
2317 + (151.0 / 12.0 - 2.0 *
zeta2 - 4.0 *
zeta3) * nf;
2318 double C23A = -4544045.0 / 864.0 + 1340.0 *
zeta2 + 118915.0 / 36.0 *
zeta3
2320 + (71621.0 / 162.0 - 209.0 / 2.0 *
zeta2 - 216.0 *
zeta3
2321 + 5.0 * zeta4 + 55.0 * zeta5) * nf
2322 + (-13171.0 / 1944.0 + 16.0 / 9.0 *
zeta2 + 26.0 / 9.0 *
zeta3) * nf*nf;
2325 double C42 = 13.0 / 3.0 - 4.0 *
zeta3;
2328 double C42A = 3389.0 / 12.0 - 162.0 *
zeta2 - 220.0 *
zeta3
2329 + (-41.0 / 6.0 + 4.0 *
zeta2 + 16.0 / 3.0 *
zeta3) * nf;
2330 double C42AL = 77.0 / 2.0 - 7.0 / 3.0 * nf;
2334 double xt = s / MtPole / MtPole;
2335 double C2t = xt * (44.0 / 675.0 - 2.0 / 135.0 * (-log_t));
2338 double I2 = -37.0 / 12.0 + (-log_t) + 7.0 / 81.0 * xt + 0.0132 * xt*xt;
2339 double I3 = -5075.0 / 216.0 + 23.0 / 6.0 *
zeta2 +
zeta3 + 67.0 / 18.0 * (-log_t)
2340 + 23.0 / 12.0 * log_t*log_t;
2341 double I4 = 49.0309 - 17.6637 * (-log_t) + 14.6597 * log_t * log_t
2342 + 3.6736 * (-log_t * log_t * log_t);
2345 double AlsMzPi =
AlsMz / M_PI;
2346 double AlsMzPi2 = AlsMzPi*AlsMzPi;
2347 double AlsMzPi3 = AlsMzPi2*AlsMzPi;
2348 double AlsMzPi4 = AlsMzPi3*AlsMzPi;
2355 RAf = 1.0 + 3.0 / 4.0 * Qf2 * alpMz / M_PI + AlsMzPi - Qf2 / 4.0 * alpMz / M_PI * AlsMzPi
2356 + (C02 + C2t - 2.0 * I3q * I2) * AlsMzPi2
2357 + (C03 - 2.0 * I3q * I3) * AlsMzPi3
2358 + (C04 - 2.0 * I3q * I4) * AlsMzPi4
2359 + (mcMz2 + mbMz2) / s * C23 * AlsMzPi3
2360 + mqMz2 / s * (C20A + C21A * AlsMzPi + C22A * AlsMzPi2
2361 + 6.0 * (3.0 + log_t) * AlsMzPi2 + C23A * AlsMzPi3)
2363 - 10.0 * mqMz2 / MtPole / MtPole
2364 * (8.0 / 81.0 + log_t / 54.0) * AlsMzPi2
2365 + mcMz2 * mcMz2 / s / s * (C42 - log_c) * AlsMzPi2
2366 + mbMz2 * mbMz2 / s / s * (C42 - log_b) * AlsMzPi2
2367 + mqMz2 * mqMz2 / s / s * (C40A + C41A * AlsMzPi
2368 + (C42A + C42AL * log_q) * AlsMzPi2)
2369 - 12.0 * mqdash4 / s / s*AlsMzPi2;
2376 double AlsMzPi =
AlsMz / M_PI;
2377 double AlsMzPi2 = AlsMzPi*AlsMzPi;
2378 double AlsMzPi3 = AlsMzPi2*AlsMzPi;
2379 double AlsMzPi4 = AlsMzPi3*AlsMzPi;
2383 for (
int q = 0; q < 6; q++) {
2391 return ( gV_sum.
abs2()*(-0.4132 * AlsMzPi3 - 4.9841 * AlsMzPi4));
double delR0c
The theoretical uncertainty in , denoted as .
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
double Mw_cache
A cache of the value of .
bool FlagWithoutNonUniversalVC
A boolean for the model flag WithoutNonUniversalVC.
virtual ~StandardModel()
The default destructor.
virtual double Gamma_inv() const
The invisible partial decay width of the boson, .
virtual gslpp::complex rhoZ_f(const Particle f) const
The effective leptonic neutral-current coupling in the SM.
double taub() const
Top-mass corrections to the vertex, denoted by .
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
virtual double v() const
The Higgs vacuum expectation value.
static const int NSMvars
The number of the model parameters in StandardModel.
double delSin2th_q
The theoretical uncertainty in , denoted as .
A class for two-loop corrections to the EW precision observables.
double A
The CKM parameter in the Wolfenstein parameterization.
virtual double DeltaRbar() const
The SM prediction for derived from that for the -boson mass.
double mub
The threshold between five- and four-flavour theory in GeV.
A class for parameters related to QCD, hadrons and quarks.
bool is(std::string name_i) const
double rhob
The CKM parameter in the Wolfenstein parameterization.
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double gamma
used as an input for FlagWolfenstein = FALSE
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
gslpp::matrix< gslpp::complex > Ye
The Yukawa matrix of the charged leptons.
void setFlagCacheInEWSMcache(bool FlagCacheInEWSMcache)
A set method to change the model flag CacheInEWSMcache in StandardModel.
double Beta1(const double nf) const
The coefficient for a certain number of flavours .
virtual double rho_GammaW(const Particle fi, const Particle fj) const
EW radiative corrections to the width of , denoted as .
double DeltaRho(const double Mw_i) const
Leading three-loop contribution of to , denoted as .
double DeltaRbar_rem(const double Mw_i) const
.
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double DeltaRho(const double Mw_i) const
Leading one-loop contribution of to , denoted as .
gslpp::matrix< gslpp::complex > Yu
The Yukawa matrix of the up-type quarks.
A class for three-loop corrections to the EW precision observables.
static const int NumSMParamsForEWPO
The number of the SM parameters that are relevant to the EW precision observables.
double ale_cache[10][CacheSize]
Cache for .
EWSMcache * getMyEWSMcache() const
A get method to retrieve the member pointer of type EWSMcache.
virtual bool CheckFlags() const
A method to check the sanity of the set of model flags.
void computePMNS(double s12_v, double s13_v, double s23_v, double delta_v, double alpha21_v, double alpha31_v)
A set method to calculate the PMNS matrix from PMNS parameters.
double MwbarFromMw(const double Mw) const
A method to convert the -boson mass in the experimental/running-width scheme to that in the complex-p...
double Nf(const double mu) const
The number of active flavour at scale .
double delR0l
The theoretical uncertainty in , denoted as .
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
A class for three-loop corrections to the EW precision observables.
double Delta_EWQCD(const QCD::quark q) const
The non-factorizable EW-QCD corrections to the partial widths for , denoted as .
void computeCKMwithWolfenstein(double Lambda_v, double A_v, double Rho_v, double Eta_v)
A set method to calculate the CKM matrix from Wolfenstein parameters.
bool FlagSMAux
A boolean for the model flag SMAux.
double getZeta3() const
A get method to access the value of the zeta function .
double GF
The Fermi constant in .
virtual double A_f(const Particle f) const
The left-right asymmetry in at the -pole, .
virtual double sigma0_had() const
The hadronic cross section for at the -pole, .
double delMw
The theoretical uncertainty in , denoted as , in GeV.
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
void addMissingModelParameter(const std::string &missingParameterName)
double SchemeToDouble(const std::string scheme) const
A method to convert a given scheme name in string form into a floating-point number with double preci...
double Beta_e(int nm, unsigned int nf) const
QED beta function coefficients - eq. (36) hep-ph/0512066.
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for StandardModel have been provided in model initi...
double alphaMz() const
The electromagnetic coupling at the -mass scale, .
double DeltaAlphaL5q() const
The sum of the leptonic and the five-flavour hadronic corrections to the electromagnetic coupling at...
A class for defining operations on and functions of complex numbers.
void ComputeDeltaR_rem(const double Mw_i, double DeltaR_rem[orders_EW_size]) const
A method to collect computed via subclasses.
double mHl
The Higgs mass in GeV.
virtual double epsilonb() const
The SM contribution to the epsilon parameter .
gslpp::complex getV_cb() const
A member for returning the value of the CKM element .
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of QCD.
double getZeta5() const
A get method to access the value of the zeta function .
complex log(const complex &z)
virtual double GammaW() const
The total width of the boson, .
A base class for defining operations on matrices, both real and complex.
bool flag_order[orders_EW_size]
An array of internal flags controlling the inclusions of higher-order corrections.
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
std::string orderToString(const orders order) const
Converts an object of the enum type "orders" to the corresponding string.
double getIsospin() const
A get method to access the particle isospin.
double GammaW_cache
A cache of the value of .
double getZeta4() const
A get method to access the value of the zeta function .
double DeltaAlphaLepton_cache
A cache of the value of .
A class for one-loop corrections to the EW precision observables.
double DeltaAlpha_cache
A cache of the value of .
bool UpdateError
A boolean set to false if update is successful.
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
std::string FlagRhoZ
A string for the model flag RhoZ.
double DeltaAlpha() const
The total corrections to the electromagnetic coupling at the -mass scale, denoted as .
Matching< StandardModelMatching, StandardModel > SMM
An object of type Matching.
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double DeltaRho(const double Mw_i) const
Leading three-loop contribution of to , denoted as .
virtual double DeltaR() const
The SM prediction for derived from that for the boson mass.
double MassOfNf(int nf) const
The Mbar mass of the heaviest quark in the theory with Nf active flavour.
virtual double cW2() const
EWSMThreeLoopQCD * myThreeLoopQCD
A pointer to an object of type EWSMThreeLoopQCD.
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double ale
The fine-structure constant .
double mtpole
The pole mass of the top quark.
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
double Alstilde5(const double mu) const
The value of at any scale with the number of flavours and full EW corrections.
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
std::map< std::string, std::reference_wrapper< const double > > ModelParamMap
EWSMTwoLoopEW * myTwoLoopEW
A pointer to an object of type EWSMTwoLoopEW.
double DeltaAlphaTop(const double s) const
Top-quark contribution to the electromagnetic coupling , denoted as .
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
double AlsByOrder(double mu, orders order=FULLNLO, bool qed_flag=false, bool Nf_thr=true) const
virtual bool CheckParameters(const std::map< std::string, double > &DPars)
A method to check if all the mandatory parameters for QCD have been provided in model initialization.
bool useDeltaAlphaLepton_cache
double Beta0(const double nf) const
The coefficient for a certain number of flavours .
double Beta2(const double nf) const
The coefficient for a certain number of flavours .
double DeltaAlphaLepton(const double s) const
Leptonic contribution to the electromagnetic coupling , denoted as .
bool IsFlagWithoutNonUniversalVC() const
A method to retrieve the model flag WithoutNonUniversalVC.
double getLambda() const
A member for returning the value of the Wolfenstein parameter .
double RVh() const
The singlet vector corrections to the hadronic -boson width, denoted as .
virtual double epsilon2() const
The SM contribution to the epsilon parameter .
The parent class in LeptonFlavour for calculating all the Wilson coefficients for various Lepton Flav...
StandardModel()
The default constructor.
virtual bool PostUpdate()
The post-update method for QCD.
virtual bool Init(const std::map< std::string, double > &DPars)
Initializes the QCD parameters found in the argument.
double muc
The threshold between four- and three-flavour theory in GeV.
double delGammaZ
The theoretical uncertainty in , denoted as , in GeV.
gslpp::complex rhoZ_f_cache[12]
A cache of the value of .
double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections.
void computeCKM(double Vus_v, double Vcb_v, double Vub_v, double gamma_v)
A set method to calculate the CKM matrix from CKM elements and .
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
const double & imag() const
double ale_OS(const double mu, orders order=FULLNLO) const
The running electromagnetic coupling in the on-shell scheme.
double dAle5Mz
The five-flavour hadronic contribution to the electromagnetic coupling, .
double Vub
used as an input for FlagWolfenstein = FALSE
const double & getMass() const
A get method to access the particle mass.
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
double AlsMz
The strong coupling constant at the Z-boson mass, .
double computeGamma() const
The CKM angle .
gslpp::matrix< gslpp::complex > getCKM() const
A member for returning the CKM matrix.
virtual bool PreUpdate()
The pre-update method for StandardModel.
virtual double Gamma_had() const
The hadronic decay width of the boson, .
double resumRhoZ(const double DeltaRho[orders_EW_size], const double deltaRho_rem[orders_EW_size], const double DeltaRbar_rem, const bool bool_Zbb) const
A method to compute the real part of the effective coupling from , and .
gslpp::complex FZ(const double s, const double Mw_i) const
The unified form factor .
double mf(const Particle f, const double mu=0.0, const orders order=FULLNNLO) const
The mass of an SM fermion.
double zeta3
computed with the GSL.
complex pow(const complex &z1, const complex &z2)
double RAq(const QCD::quark q) const
The radiator factor associated with the final-state QED and QCD corrections to the the axial-vector-c...
void raiseMissingModelParameterCount()
static std::string SMvars[NSMvars]
A string array containing the labels of the model parameters in StandardModel.
complex sqrt(const complex &z)
double DeltaRho(const double Mw_i) const
Leading three-loop QCD contribution of to , denoted as .
double rho_GammaW(const Particle fi, const Particle fj, const double Mw_i) const
EW radiative corrections to the width of , denoted as .
LeptonFlavour * myLeptonFlavour
A pointer to an object of the type LeptonFlavour.
An observable class for the leptonic effective weak mixing angle at the pole. To be used for the el...
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
double Beta3(const double nf) const
The coefficient for a certain number of flavours .
A class for cache variables used in computing radiative corrections to the EW precision observables.
std::string FlagMw
A string for the model flag Mw.
double lambda
The CKM parameter in the Wolfenstein parameterization.
double getCharge() const
A get method to access the particle charge.
double MwFromMwbar(const double Mwbar) const
A method to convert the -boson mass in the complex-pole/fixed-width scheme to that in the experimenta...
double zeta2
computed with the GSL.
A class for two-loop corrections to the EW precision observables.
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
virtual bool PostUpdate()
The post-update method for StandardModel.
bool IsFlagNoApproximateGammaZ() const
A method to retrieve the model flag NoApproximateGammaZ.
EWSMOneLoopEW * myOneLoopEW
A pointer to an object of type EWSMOneLoopEW.
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of StandardModel.
static const double Mw_error
The target accuracy of the iterative calculation of the -boson mass in units of GeV.
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
bool IsModelInitialized() const
A method to check if the model is initialized.
double Ale(double mu, orders order, bool Nf_thr=true) const
The running electromagnetic coupling in the scheme.
virtual double epsilon1() const
The SM contribution to the epsilon parameter .
double tau_2() const
The function .
double Als(double mu, orders order=FULLNLO, bool qed_flag=false, bool Nf_thr=true) const
The running QCD coupling in the scheme including QED corrections.
void CacheShift(double cache[][5], int n) const
A member used to manage the caching for this class.
bool checkEWPOscheme(const std::string scheme) const
A method to check if a given scheme name in string form is valid.
Particle getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
virtual gslpp::complex deltaKappaZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
std::string FlagKappaZ
A string for the model flag KappaZ.
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
quark
An enum type for quarks.
double getRhoBar() const
A member for returning the value of the Wolfenstein parameter .
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
static const int CacheSize
Defines the depth of the cache.
double BelowTh(const double mu) const
The active flavour threshold below the scale as defined in QCD::Thresholds().
double delta_f(const Particle f, const double Mw_i) const
.
bool requireYd
Switch for generating the Yukawa couplings to the down-type quarks.
gslpp::complex FW(const double s, const Particle f, const double Mw_i) const
The unified form factor for .
virtual double R0_f(const Particle f) const
The ratio .
double AleWithInit(double mu, double alsi, double mu_i, orders order) const
CKM myCKM
An object of type CKM.
double DeltaRho(const double Mw_i) const
Leading two-loop contribution of to , denoted as .
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
double resumKappaZ(const double DeltaRho[orders_EW_size], const double deltaKappa_rem[orders_EW_size], const double DeltaRbar_rem, const bool bool_Zbb) const
A method to compute the real part of the effetvive coupling from , and .
virtual double epsilon3() const
The SM contribution to the epsilon parameter .
gslpp::matrix< gslpp::complex > getPMNS() const
A member for returning the PMNS matrix.
double Beta_s(int nm, unsigned int nf) const
QCD beta function coefficients including QED corrections - eq. (36) hep-ph/0512066.
void setMass(double mass)
A set method to fix the particle mass.
void updateSMParameters()
Updates to new Standard Model parameter sets.
double getEtaBar() const
A member for returning the value of the Wolfenstein parameter .
EWSMThreeLoopEW * myThreeLoopEW
A pointer to an object of type EWSMThreeLoopEW.
virtual bool InitializeModel()
A method to initialize the model.
orders
An enum type for orders in QCD.
double getZeta2() const
A get method to access the value of the zeta function .
EWSMcache * myEWSMcache
A pointer to an object of type EWSMcache.
virtual bool PreUpdate()
The pre-update method for QCD.
double resumMw(const double Mw_i, const double DeltaRho[orders_EW_size], const double DeltaR_rem[orders_EW_size]) const
A method to compute the -boson mass from and .
virtual void computeYukawas()
The method to compute the Yukawa matrices.
double Xt_GF() const
The quantity with the coupling .
virtual double AFB(const Particle f) const
virtual void computeCKM()
The method to compute the CKM matrix.
void setSMupdated() const
a member used for the caching for .
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for StandardModel.
double RVq(const QCD::quark q) const
The radiator factor associated with the final-state QED and QCD corrections to the the vector-current...
A class for three-loop corrections to the EW precision observables.
virtual gslpp::complex gV_f(const Particle f) const
The effective leptonic neutral-current vector coupling in the SM.
virtual double Mw_tree() const
The tree-level mass of the boson, .
double s02() const
The square of the sine of the weak mixing angle defined without weak radiative corrections.
bool setFlag(const std::string name, const bool value)
gslpp::matrix< gslpp::complex > Yn
The Yukawa matrix of the neutrinos.
bool requireCKM
An internal flag to control whether the CKM matrix has to be recomputed.
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
bool useKappaZ_f_cache[12]
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
An observable class for the -boson mass.
virtual double R_inv() const
The ratio of the invisible and leptonic (electron) decay widths of the boson, .
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
Flavour SMFlavour
An object of type Flavour.
virtual double sin2thetaEff(const Particle f) const
The effective weak mixing angle for at the the -mass scale.
double AlsWithInit(double mu, double alsi, double mu_i, orders order, bool qed_flag) const
gslpp::complex getV_us() const
A member for returning the value of the CKM element .
bool requireYu
Switch for generating the Yukawa couplings to the up-type quarks.
const double & real() const
orders FullOrder(orders order) const
Return the FULLORDER enum corresponding to order.
double als_cache[11][CacheSize]
Cache for .
gslpp::complex getV_ub() const
A member for returning the value of the CKM element .
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
Particle leptons[6]
An array of Particle objects for the leptons.
virtual double GammaZ(const Particle f) const
The partial decay width, .
double etab
The CKM parameter in the Wolfenstein parameterization.
double getA() const
A member for returning the value of the Wolfenstein parameter .
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of QCD.
bool requireYe
An internal flag to control whether the charged-lepton Yukawa matrix has to be recomputed.
std::string name
The name of the model.
double Mz
The mass of the boson in GeV.
double AboveTh(const double mu) const
The active flavour threshold above the scale as defined in QCD::Thresholds().
gslpp::complex kappaZ_f_cache[12]
A cache of the value of .
double NfThresholdCorrections(double mu, double M, double als, int nf, orders order) const
Threshold corrections in matching with from eq. (34) of hep-ph/0512060.
double Nc
The number of colours.
virtual double N_nu() const
The number of neutrinos obtained indirectly from the measurements at the Z pole, .
bool FlagCacheInStandardModel
A flag for caching (true by default).
void ComputeDeltaRho(const double Mw_i, double DeltaRho[orders_EW_size]) const
A method to collect computed via subclasses.
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
EWSMApproximateFormulae * myApproximateFormulae
A pointer to an object of type EWSMApproximateFormulae.
double Mzbar() const
The -boson mass in the complex-pole/fixed-width scheme.
virtual gslpp::complex gA_f(const Particle f) const
The effective leptonic neutral-current axial-vector coupling in the SM.
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
bool requireYn
An internal flag to control whether the neutrino Yukawa matrix has to be recomputed.
double delR0b
The theoretical uncertainty in , denoted as .
double Vus
used as an input for FlagWolfenstein = FALSE
static const double GeVminus2_to_nb
EWSMThreeLoopEW2QCD * myThreeLoopEW2QCD
A pointer to an object of type EWSMThreeLoopEW2QCD.
double delSin2th_l
The theoretical uncertainty in , denoted as .
double AlsWithInit(const double mu, const double alsi, const double mu_i, const orders order) const
Computes the running strong coupling from in the scheme, where it is forbidden to across a flavour...
double SMparamsForEWPO_cache[NumSMParamsForEWPO]
double alsMt() const
The strong coupling at NNLO.
virtual double Gamma_Z() const
The total decay width of the boson, .
virtual gslpp::complex deltaRhoZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
double delsigma0H
The theoretical uncertainty in , denoted as in nb.
void setFlagCacheInStandardModel(bool FlagCacheInStandardModel)
A set method to change the model flag CacheInStandardModel of StandardModel.
virtual bool CheckFlags() const
A method to check the sanity of the set of model flags.
virtual gslpp::complex kappaZ_f(const Particle f) const
The effective leptonic neutral-current coupling in the SM.
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of QCD.
double muw
A matching scale around the weak scale in GeV.
gslpp::matrix< gslpp::complex > Yd
The Yukawa matrix of the down-type quarks.
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
bool FlagWolfenstein
A boolean for the model flag Wolfenstein.
bool checkSMparamsForEWPO()
A method to check whether the parameters relevant to the EWPO are updated.
Particle quarks[6]
The vector of all SM quarks.
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
EWSMTwoLoopQCD * myTwoLoopQCD
A pointer to an object of type EWSMTwoLoopQCD.
double Vcb
used as an input for FlagWolfenstein = FALSE
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
double delSin2th_b
The theoretical uncertainty in , denoted as .
double mut
The threshold between six- and five-flavour theory in GeV.
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
std::string getName() const
bool FlagNoApproximateGammaZ
A boolean for the model flag NoApproximateGammaZ.
orders_EW
An enumerated type representing perturbative orders of radiative corrections to EW precision observab...