13 #include <Math/WrappedTF1.h>
14 #include <Math/BrentRootFinder.h>
15 #include <gsl/gsl_sf_zeta.h>
28 #include "EWSMTwoFermionsLEP2.h"
33 "Mz",
"AlsMz",
"GF",
"ale",
"dAle5Mz",
"mHl",
"delMw",
"delSin2th_l",
"delGammaZ",
34 "mneutrino_1",
"mneutrino_2",
"mneutrino_3",
"melectron",
"mmu",
"mtau",
35 "lambda",
"A",
"rhob",
"etab",
"muw",
36 "EpsK",
"phiEpsK",
"DeltaMK",
"KbarEpsK",
"Dmk",
"SM_M12D"
43 :
QCD(),
VCKM(3, 3, 0.), UPMNS(3, 3, 0.), Yu(3, 3, 0.), Yd(3, 3, 0.), Yn(3, 3, 0.),
48 FlagMw =
"APPROXIMATEFORMULA";
70 for (
int i = 0; i < 12; ++i) {
98 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"Mz", boost::cref(
Mz)));
99 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"AlsMz", boost::cref(
AlsMz)));
100 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"GF", boost::cref(
GF)));
101 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"ale", boost::cref(
ale)));
102 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"dAle5Mz", boost::cref(
dAle5Mz)));
103 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"mHl", boost::cref(
mHl)));
104 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"delMw", boost::cref(
delMw)));
105 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"delSin2th_l", boost::cref(
delSin2th_l)));
106 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"delGammaZ", boost::cref(
delGammaZ)));
110 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"melectron", boost::cref(
leptons[
ELECTRON].getMass())));
111 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"mmu", boost::cref(
leptons[
MU].getMass())));
112 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"mtau", boost::cref(
leptons[
TAU].getMass())));
113 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"lambda", boost::cref(
lambda)));
114 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"A", boost::cref(
A)));
115 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"rhob", boost::cref(
rhob)));
116 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"etab", boost::cref(
etab)));
117 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"muw", boost::cref(
muw)));
118 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"EpsK", boost::cref(
EpsK)));
119 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"phiEpsK", boost::cref(
phiEpsK)));
120 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"DeltaMK", boost::cref(
DeltaMK)));
121 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"KbarEpsK", boost::cref(
KbarEpsK)));
122 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"Dmk", boost::cref(
Dmk)));
123 ModelParamMap.insert(std::pair<std::string, boost::reference_wrapper<const double> >(
"SM_M12D", boost::cref(
SM_M12D)));
177 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
178 if (it->first.compare(
"AlsM") == 0 || it->first.compare(
"MAls") == 0)
179 throw std::runtime_error(
"ERROR: inappropriate parameter " + it->first
180 +
" in model initialization");
182 std::map<std::string, double> myDPars(DPars);
183 myDPars[
"AlsM"] = myDPars.at(
"AlsMz");
184 myDPars[
"MAls"] = myDPars.at(
"Mz");
205 for (std::map<std::string, double>::const_iterator it = DPars.begin(); it != DPars.end(); it++)
233 for (
int i = 0; i < 12; ++i) {
252 if (name.compare(
"Mz") == 0) {
255 }
else if (name.compare(
"AlsMz") == 0) {
258 }
else if (name.compare(
"GF") == 0)
260 else if (name.compare(
"ale") == 0)
262 else if (name.compare(
"dAle5Mz") == 0)
264 else if (name.compare(
"mHl") == 0)
266 else if (name.compare(
"delMw") == 0)
268 else if (name.compare(
"delSin2th_l") == 0)
270 else if (name.compare(
"delGammaZ") == 0)
272 else if (name.compare(
"mneutrino_1") == 0) {
275 }
else if (name.compare(
"mneutrino_2") == 0) {
278 }
else if (name.compare(
"mneutrino_3") == 0) {
281 }
else if (name.compare(
"melectron") == 0) {
284 }
else if (name.compare(
"mmu") == 0) {
287 }
else if (name.compare(
"mtau") == 0) {
290 }
else if (name.compare(
"lambda") == 0) {
293 }
else if (name.compare(
"A") == 0) {
296 }
else if (name.compare(
"rhob") == 0) {
299 }
else if (name.compare(
"etab") == 0) {
302 }
else if (name.compare(
"muw") == 0)
304 else if (name.compare(
"EpsK") == 0)
306 else if (name.compare(
"phiEpsK") == 0)
308 else if (name.compare(
"DeltaMK") == 0)
310 else if (name.compare(
"KbarEpsK") == 0)
312 else if (name.compare(
"Dmk") == 0)
314 else if (name.compare(
"SM_M12D") == 0)
322 for (
int i = 0; i <
NSMvars; i++) {
323 if (DPars.find(
SMvars[i]) == DPars.end()) {
324 std::cout <<
"missing mandatory SM parameter " <<
SMvars[i] << std::endl;
347 for (
int i = 0; i < 3; i++)
348 Yu.assign(i, i, this->quarks[
UP + 2 * i].getMass() /
v() *
sqrt(2.));
353 for (
int i = 0; i < 3; i++)
354 Yd.assign(i, i, this->quarks[
DOWN + 2 * i].getMass() /
v() *
sqrt(2.));
358 for (
int i = 0; i < 3; i++)
359 Ye.assign(i, i, this->leptons[
ELECTRON + 2 * i].getMass() /
v() *
sqrt(2.));
363 for (
int i = 0; i < 3; i++)
376 if (name.compare(
"CacheInStandardModel") == 0) {
379 }
else if (name.compare(
"CacheInEWSMcache") == 0) {
382 }
else if (name.compare(
"WithoutNonUniversalVC") == 0) {
385 }
else if (name.compare(
"NoApproximateGammaZ") == 0) {
397 if (name.compare(
"Mw") == 0) {
402 throw std::runtime_error(
"StandardModel::setFlagStr(): Invalid flag "
403 + name +
"=" + value);
405 }
else if (name.compare(
"RhoZ") == 0) {
410 throw std::runtime_error(
"StandardModel::setFlagStr(): Invalid flag "
411 + name +
"=" + value);
412 }
else if (name.compare(
"KappaZ") == 0) {
417 throw std::runtime_error(
"StandardModel::setFlagStr(): Invalid flag "
418 + name +
"=" + value);
457 quarks[
UP].getMass(),
458 quarks[
DOWN].getMass(),
459 quarks[
CHARM].getMass(),
470 bool bNotUpdated =
true;
474 bNotUpdated &=
false;
489 return (-
VCKM(1, 0) *
VCKM(1, 2).conjugate() / (
VCKM(2, 0) *
VCKM(2, 2).conjugate())).arg();
494 return (-
VCKM(0, 0) *
VCKM(0, 2).conjugate() / (
VCKM(1, 0) *
VCKM(1, 2).conjugate())).arg();
499 return (-
VCKM(2, 0) *
VCKM(2, 2).conjugate() / (
VCKM(0, 0) *
VCKM(0, 2).conjugate())).arg();
504 return (-
VCKM(2, 1) *
VCKM(2, 2).conjugate() / (
VCKM(1, 1) *
VCKM(1, 2).conjugate())).arg();
511 return VCKM(2, 0) *
VCKM(2, 1).conjugate();
516 return VCKM(1, 0) *
VCKM(1, 1).conjugate();
521 return VCKM(0, 0) *
VCKM(0, 1).conjugate();
526 return VCKM(2, 0) *
VCKM(2, 2).conjugate();
531 return VCKM(1, 0) *
VCKM(1, 2).conjugate();
536 return VCKM(0, 0) *
VCKM(0, 2).conjugate();
541 return VCKM(2, 1) *
VCKM(2, 2).conjugate();
546 return VCKM(1, 1) *
VCKM(1, 2).conjugate();
551 return VCKM(0, 1) *
VCKM(0, 2).conjugate();
556 return (
VCKM(2, 0) *
VCKM(2, 2).conjugate()
557 / (
VCKM(1, 0) *
VCKM(1, 2).conjugate())).abs();
562 return (
VCKM(2, 1) *
VCKM(2, 2).conjugate()
563 / (
VCKM(1, 1) *
VCKM(1, 2).conjugate())).abs();
568 return (
VCKM(0, 0) *
VCKM(0, 2).conjugate()
569 / (
VCKM(1, 0) *
VCKM(1, 2).conjugate())).abs();
578 throw std::runtime_error(
"out of range in StandardModel::ale_OS()");
580 double N = 20.0 / 3.0;
581 double beta1 = N / 3.0;
582 double beta2 = N / 4.0;
584 double v = 1.0 + 2.0 * beta1 * alpha_ini / M_PI *
log(
Mz / mu);
588 return ( alpha_ini / v);
590 return ( alpha_ini / v * (1.0 - beta2 / beta1 * alpha_ini / M_PI *
log(v) / v));
592 throw std::runtime_error(
"Error in StandardModel::ale_OS()");
603 double DeltaAlphaL = 0.0;
686 throw std::runtime_error(
"Error in s02()");
688 return ( (1.0 -
sqrt(tmp)) / 2.0);
693 return ( 1.0 -
s02());
709 if (
FlagMw.compare(
"APPROXIMATEFORMULA") == 0)
722 while (fabs(Mw - Mw_org) >
Mw_error) {
726 Mw =
resumMw(Mw, DeltaRho, DeltaR_rem);
742 return ( Mw_i * Mw_i /
Mz /
Mz);
752 return ( 1.0 -
cW2(Mw_i));
757 return ( 1.0 -
cW2());
764 double sW2 = 1.0 - myMw * myMw /
Mz /
Mz;
765 double tmp =
sqrt(2.0) *
GF * sW2 * myMw * myMw / M_PI /
ale;
766 if (
FlagMw.compare(
"NORESUM") == 0
767 ||
FlagMw.compare(
"APPROXIMATEFORMULA") == 0) {
770 return (1.0 - 1.0 / tmp);
775 double DeltaRho[orders_EW_size])
const
804 double DeltaR_rem[orders_EW_size])
const
809 DeltaR_rem[
EW1] = 0.0;
821 DeltaR_rem[
EW2] = 0.0;
829 DeltaR_rem[
EW3] = 0.0;
837 double G0 =
GF *
pow(
Mz, 3.0) / 24.0 /
sqrt(2.0) / M_PI;
839 double Gz = 6.0 * G0;
840 Gz += 3.0 * G0 * (
pow(1.0 - 4.0 * sW2tree, 2.0) + 1.0);
841 Gz += 6.0 * G0 * (
pow(1.0 - 8.0 / 3.0 * sW2tree, 2.0) + 1.0)
842 * (1.0 +
AlsMz / M_PI);
843 Gz += 9.0 * G0 * (
pow(1.0 - 4.0 / 3.0 * sW2tree, 2.0) + 1.0)
844 * (1.0 +
AlsMz / M_PI);
849 return (
Mz - Gz * Gz / 2.0 /
Mz);
855 double Gw_SM = 3.0 *
GF *
pow(Mw, 3.0) / 2.0 /
sqrt(2.0) / M_PI
856 * (1.0 + 2.0 * AlsMw / 3.0 / M_PI);
858 return ( Mw - Gw_SM * Gw_SM / 2.0 / Mw);
864 double Gw_SM = 3.0 *
GF *
pow(Mwbar, 3.0) / 2.0 /
sqrt(2.0) / M_PI
865 * (1.0 + 2.0 * AlsMw / 3.0 / M_PI);
867 return (Mwbar + Gw_SM * Gw_SM / 2.0 / Mwbar);
873 double sW2bar = 1.0 - Mwbar_SM * Mwbar_SM /
Mzbar() /
Mzbar();
874 double tmp =
sqrt(2.0) *
GF * sW2bar * Mwbar_SM * Mwbar_SM / M_PI /
ale;
893 throw std::runtime_error(
"Error in StandardModel::GammaW()");
895 double G0 =
GF *
pow(
Mw(), 3.0) / 6.0 /
sqrt(2.0) / M_PI;
910 return ( 3.0 * V.
abs2() * G0 *
rho_GammaW(fi, fj)*(1.0 + AlsMw / M_PI));
920 double GammaWtmp = 0.;
922 for (
int i = 0; i < 6; i += 2)
936 double Re_gV_over_gA = 1.0 - 4.0 * fabs(f.
getCharge()) * Re_kappa *
sW2();
937 return ( 2.0 * Re_gV_over_gA / (1.0 +
pow(Re_gV_over_gA, 2.0)));
948 return ( Re_kappa *
sW2());
958 if (f.
is(
"NEUTRINO_1") || f.
is(
"NEUTRINO_2") || f.
is(
"NEUTRINO_3"))
960 else if (f.
is(
"ELECTRON") || f.
is(
"MU"))
962 else if (f.
is(
"TAU"))
966 else if (f.
is(
"CHARM"))
968 else if (f.
is(
"DOWN") || f.
is(
"STRANGE"))
970 else if (f.
is(
"BOTTOM"))
973 throw std::runtime_error(
"Error in StandardModel::GammaZ()");
977 double G0 =
GF *
pow(
Mz, 3.0) / 24.0 /
sqrt(2.0) / M_PI;
978 if (f.
is(
"LEPTON")) {
982 Gamma = G0 * myrhoZ_f.
abs() *
sqrt(1.0 - 4.0 * xl)
983 * ((1.0 + 2.0 * xl)*(gV_over_gA.
abs2() + 1.0) - 6.0 * xl)
984 * (1.0 + 3.0 / 4.0 * myalphaMz / M_PI *
pow(Q, 2.0));
985 }
else if (f.
is(
"QUARK")) {
991 throw std::runtime_error(
"Error in StandardModel::GammaZ()");
1009 double G0 =
GF *
pow(
Mz, 3.0) / 24.0 /
sqrt(2.0) / M_PI;
1010 Gamma_had_tmp += 4.0 * 3.0 * G0 *
RVh();
1012 return Gamma_had_tmp;
1038 if (f.
is(
"LEPTON")) {
1044 }
else if (f.
is(
"CHARM")) {
1051 }
else if (f.
is(
"BOTTOM")) {
1058 }
else throw std::runtime_error(
"StandardModel::R0_f called with wrong argument");
1078 if (
FlagRhoZ.compare(
"APPROXIMATEFORMULA") == 0)
1079 throw std::runtime_error(
"No approximate formula is available for rhoZ^f");
1103 #ifdef WITHIMTWOLOOPQCD
1119 double DeltaRbar_rem = 0.0;
1126 deltaRho_rem_f_real[j] = deltaRho_remf[j].real();
1127 double ReRhoZf =
resumRhoZ(DeltaRho, deltaRho_rem_f_real, DeltaRbar_rem, f.
is(
"BOTTOM"));
1130 double ImRhoZf = 0.0;
1132 ImRhoZf += deltaRho_remf[j].imag();
1150 double ReKappaZf = 0.0, ImKappaZf = 0.0;
1151 if (
FlagKappaZ.compare(
"APPROXIMATEFORMULA") == 0) {
1154 #ifdef WITHIMTWOLOOPQCD
1176 #ifdef WITHIMTWOLOOPQCD
1192 double DeltaRbar_rem = 0.0;
1199 deltaKappa_rem_f_real[j] = deltaKappa_remf[j].real();
1201 ReKappaZf =
resumKappaZ(DeltaRho, deltaKappa_rem_f_real, DeltaRbar_rem, f.
is(
"BOTTOM"));
1205 *(1.0 - 8.0 / 3.0 * ReKappaZf *
sW2());
1209 ImKappaZf += deltaKappa_remf[j].imag();
1225 if (f.
is(
"BOTTOM")) p1 = quarks[
DOWN];
1238 dRho *=
ale / 4.0 / M_PI /
sW2;
1250 if (f.
is(
"BOTTOM")) p1 = quarks[
DOWN];
1265 dKappa *=
ale / 4.0 / M_PI /
sW2;
1275 double DeltaRhoPrime = 2.0 * (
sqrt(rhoZe) - 1.0);
1277 return DeltaRhoPrime;
1284 double DeltaRhoPrime = 2.0 * (
sqrt(rhoZe) - 1.0);
1285 double DeltaKappaPrime = sin2thetaEff /
s02() - 1.0;
1288 return (
c02() * DeltaRhoPrime +
s02() * DeltaRW / (
c02() -
s02())
1289 - 2.0 *
s02() * DeltaKappaPrime);
1296 double DeltaRhoPrime = 2.0 * (
sqrt(rhoZe) - 1.0);
1297 double DeltaKappaPrime = sin2thetaEff /
s02() - 1.0;
1299 return (
c02() * DeltaRhoPrime + (
c02() -
s02()) * DeltaKappaPrime);
1317 return ( kappaZe.
real() / kappaZb.
real() - 1.0);
1320 / kappaZb.
real() - 1.0);
1349 const double DeltaR_rem[orders_EW_size])
const
1351 if ((
FlagMw.compare(
"APPROXIMATEFORMULA") == 0)
1352 || (DeltaR_rem[
EW2QCD1] != 0.0)
1353 || (DeltaR_rem[
EW3] != 0.0))
1354 throw std::runtime_error(
"Error in StandardModel::resumMw()");
1357 throw std::runtime_error(
"Error in StandardModel::resumMw()");
1359 double cW2_TMP = Mw_i * Mw_i /
Mz /
Mz;
1360 double sW2_TMP = 1.0 - cW2_TMP;
1362 double f_AlphaToGF, DeltaRho_sum = 0.0, DeltaRho_G = 0.0;
1363 if (
FlagMw.compare(
"NORESUM") == 0) {
1365 DeltaRho_sum += DeltaRho[(
orders_EW) j];
1369 f_AlphaToGF =
sqrt(2.0) *
GF *
pow(
Mz, 2.0) * sW2_TMP * cW2_TMP / M_PI /
ale;
1370 DeltaRho_sum = f_AlphaToGF * DeltaRho[
EW1]
1371 + f_AlphaToGF * DeltaRho[
EW1QCD1]
1372 + f_AlphaToGF * DeltaRho[
EW1QCD2]
1373 +
pow(f_AlphaToGF, 2.0) * DeltaRho[
EW2]
1375 +
pow(f_AlphaToGF, 3.0) * DeltaRho[
EW3];
1376 DeltaRho_G = f_AlphaToGF * DeltaRho[
EW1];
1380 double DeltaR_rem_sum = 0.0;
1381 double DeltaR_EW1 = 0.0, DeltaR_EW2_rem = 0.0;
1382 if (
FlagMw.compare(
"NORESUM") == 0) {
1384 DeltaR_rem_sum += DeltaR_rem[(
orders_EW) j];
1387 DeltaR_EW1 = -cW2_TMP / sW2_TMP * DeltaRho[
EW1] + DeltaR_rem[
EW1];
1393 DeltaRho_sum -= DeltaRho[
EW2];
1394 DeltaR_rem_sum -= DeltaR_rem[
EW2];
1397 R = 1.0 +
DeltaAlphaL5q() - cW2_TMP / sW2_TMP * DeltaRho_sum
1401 }
else if (
FlagMw.compare(
"OMSI") == 0) {
1403 R = 1.0 / (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum)
1406 }
else if (
FlagMw.compare(
"INTERMEDIATE") == 0) {
1408 R = 1.0 / ((1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum)
1411 }
else if (
FlagMw.compare(
"OMSII") == 0) {
1413 R = 1.0 / ((1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum)*(1.0 -
DeltaAlphaL5q())
1414 - (1.0 + cW2_TMP / sW2_TMP * DeltaRho_G) * DeltaR_rem[
EW1]
1417 throw std::runtime_error(
"Error in StandardModel::resumMw()");
1419 if (
FlagMw.compare(
"NORESUM") == 0) {
1423 if (tmp * R > 1.0)
throw std::runtime_error(
"StandardModel::resumMw(): Negative (1-tmp*R)");
1429 if (tmp * R > 1.0)
throw std::runtime_error(
"StandardModel::resumMw(): Negative (1-tmp*R)");
1436 const double deltaRho_rem[orders_EW_size],
1437 const double DeltaRbar_rem,
const bool bool_Zbb)
const
1439 if ((
FlagRhoZ.compare(
"APPROXIMATEFORMULA") == 0)
1440 || (deltaRho_rem[
EW1QCD2] != 0.0)
1441 || (deltaRho_rem[
EW2QCD1] != 0.0)
1442 || (deltaRho_rem[
EW3] != 0.0))
1443 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1446 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1448 double Mw_TMP =
Mw();
1449 double cW2_TMP =
cW2();
1450 double sW2_TMP =
sW2();
1452 double f_AlphaToGF, DeltaRho_sum = 0.0, DeltaRho_G;
1453 double DeltaRbar_rem_G, deltaRho_rem_G, deltaRho_rem_G2;
1456 * sW2_TMP * cW2_TMP / M_PI /
ale;
1457 DeltaRho_sum = f_AlphaToGF * DeltaRho[
EW1]
1458 + f_AlphaToGF * DeltaRho[
EW1QCD1]
1459 + f_AlphaToGF * DeltaRho[
EW1QCD2]
1460 +
pow(f_AlphaToGF, 2.0) * DeltaRho[
EW2]
1462 +
pow(f_AlphaToGF, 3.0) * DeltaRho[
EW3];
1463 DeltaRho_G = f_AlphaToGF * DeltaRho[
EW1];
1464 DeltaRbar_rem_G = f_AlphaToGF*DeltaRbar_rem;
1465 deltaRho_rem_G = f_AlphaToGF * (deltaRho_rem[
EW1]
1467 deltaRho_rem_G2 =
pow(f_AlphaToGF, 2.0) * deltaRho_rem[
EW2];
1472 if (
FlagRhoZ.compare(
"OMSI") == 0) {
1473 rhoZ = (1.0 + deltaRho_rem_G + deltaRho_rem_G2)
1474 / (1.0 - DeltaRho_sum * (1.0 - DeltaRbar_rem_G));
1475 }
else if (
FlagRhoZ.compare(
"INTERMEDIATE") == 0) {
1476 rhoZ = (1.0 + deltaRho_rem_G)
1477 / (1.0 - DeltaRho_sum * (1.0 - DeltaRbar_rem_G))
1479 }
else if (
FlagRhoZ.compare(
"NORESUM") == 0
1480 ||
FlagRhoZ.compare(
"OMSII") == 0) {
1481 rhoZ = 1.0 + DeltaRho_sum - DeltaRho_G * DeltaRbar_rem_G
1482 + DeltaRho_G * DeltaRho_G
1483 + deltaRho_rem_G * (1.0 + DeltaRho_G) + deltaRho_rem_G2;
1485 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1488 double OnePlusTaub = 1.0 +
taub();
1489 double OnePlusTaub2 = OnePlusTaub*OnePlusTaub;
1491 deltaRho_rem_G += f_AlphaToGF *
ale / 4.0 / M_PI / sW2_TMP
1492 *
pow(mtpole / Mw_TMP, 2.0);
1493 if (
FlagRhoZ.compare(
"NORESUM") == 0) {
1494 rhoZ = (1.0 + DeltaRho_sum - DeltaRho_G * DeltaRbar_rem_G
1495 + DeltaRho_G * DeltaRho_G
1496 + deltaRho_rem_G * (1.0 + DeltaRho_G) + deltaRho_rem_G2)
1498 }
else if (
FlagRhoZ.compare(
"OMSI") == 0) {
1499 rhoZbL = OnePlusTaub2 / (1.0 - DeltaRho_sum);
1500 rhoZ = rhoZbL / (1.0 - rhoZbL * deltaRho_rem_G);
1501 }
else if (
FlagRhoZ.compare(
"INTERMEDIATE") == 0) {
1502 rhoZbL = OnePlusTaub2 / (1.0 - DeltaRho_sum);
1503 rhoZ = rhoZbL * (1.0 + rhoZbL * deltaRho_rem_G);
1504 }
else if (
FlagRhoZ.compare(
"OMSII") == 0) {
1505 rhoZbL = OnePlusTaub2 / (1.0 - DeltaRho_sum);
1506 rhoZ = rhoZbL * (1.0 + deltaRho_rem_G);
1508 throw std::runtime_error(
"Error in StandardModel::resumRhoZ()");
1515 const double deltaKappa_rem[orders_EW_size],
1516 const double DeltaRbar_rem,
const bool bool_Zbb)
const
1518 if ((
FlagKappaZ.compare(
"APPROXIMATEFORMULA") == 0)
1519 || (deltaKappa_rem[
EW2QCD1] != 0.0)
1520 || (deltaKappa_rem[
EW3] != 0.0))
1521 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
1524 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
1526 double Mw_TMP =
Mw();
1527 double cW2_TMP =
cW2();
1528 double sW2_TMP =
sW2();
1530 double f_AlphaToGF, DeltaRho_sum = 0.0, DeltaRho_G;
1531 double DeltaRbar_rem_G, deltaKappa_rem_G, deltaKappa_rem_G2;
1534 * sW2_TMP * cW2_TMP / M_PI /
ale;
1535 DeltaRho_sum = f_AlphaToGF * DeltaRho[
EW1]
1536 + f_AlphaToGF * DeltaRho[
EW1QCD1]
1537 + f_AlphaToGF * DeltaRho[
EW1QCD2]
1538 +
pow(f_AlphaToGF, 2.0) * DeltaRho[
EW2]
1540 +
pow(f_AlphaToGF, 3.0) * DeltaRho[
EW3];
1541 DeltaRho_G = f_AlphaToGF * DeltaRho[
EW1];
1542 DeltaRbar_rem_G = f_AlphaToGF*DeltaRbar_rem;
1543 deltaKappa_rem_G = f_AlphaToGF * (deltaKappa_rem[
EW1]
1546 deltaKappa_rem_G2 =
pow(f_AlphaToGF, 2.0) * deltaKappa_rem[
EW2];
1552 kappaZ = (1.0 + deltaKappa_rem_G + deltaKappa_rem_G2)
1553 *(1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum * (1.0 - DeltaRbar_rem_G));
1554 }
else if (
FlagKappaZ.compare(
"INTERMEDIATE") == 0) {
1555 kappaZ = (1.0 + deltaKappa_rem_G)
1556 *(1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum * (1.0 - DeltaRbar_rem_G))
1557 + deltaKappa_rem_G2;
1558 }
else if (
FlagKappaZ.compare(
"NORESUM") == 0
1560 kappaZ = 1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum
1561 - cW2_TMP / sW2_TMP * DeltaRho_G * DeltaRbar_rem_G
1562 + deltaKappa_rem_G * (1.0 + cW2_TMP / sW2_TMP * DeltaRho_G)
1563 + deltaKappa_rem_G2;
1565 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
1568 double OnePlusTaub = 1.0 +
taub();
1570 deltaKappa_rem_G -= f_AlphaToGF *
ale / 8.0 / M_PI / sW2_TMP
1571 *
pow(mtpole / Mw_TMP, 2.0);
1573 kappaZ = (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum
1574 - cW2_TMP / sW2_TMP * DeltaRho_G * DeltaRbar_rem_G
1575 + deltaKappa_rem_G * (1.0 + cW2_TMP / sW2_TMP * DeltaRho_G)
1576 + deltaKappa_rem_G2) / OnePlusTaub;
1577 }
else if (
FlagKappaZ.compare(
"OMSI") == 0) {
1578 kappaZbL = (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum) / OnePlusTaub;
1579 kappaZ = kappaZbL * (1.0 + deltaKappa_rem_G);
1580 }
else if (
FlagKappaZ.compare(
"INTERMEDIATE") == 0
1582 kappaZbL = (1.0 + cW2_TMP / sW2_TMP * DeltaRho_sum) / OnePlusTaub;
1583 kappaZ = kappaZbL + deltaKappa_rem_G;
1585 throw std::runtime_error(
"Error in StandardModel::resumKappaZ()");
1593 double taub_tmp = 0.0;
1596 taub_tmp += -2.0 * Xt;
1616 return ( -0.000113);
1621 return ( -0.000160);
1623 return ( -0.000040);
1625 throw std::runtime_error(
"Error in StandardModel::Delta_EWQCD");
1639 double MtPole = mtpole;
1642 double Qf2 =
pow(quarks[q].getCharge(), 2.0);
1648 double mcMz2 = mcMz*mcMz;
1649 double mbMz2 = mbMz*mbMz;
1650 double mqMz2, mqdash4;
1654 mqdash4 = mbMz2*mbMz2;
1658 mqdash4 = mcMz2*mcMz2;
1668 double log_t =
log(MtPole * MtPole / s);
1669 double log_c =
log(mcMz2 / s);
1670 double log_b =
log(mbMz2 / s);
1675 log_q =
log(mqMz2 / s);
1692 double C02 = 365.0 / 24.0 - 11.0 * zeta3 + (-11.0 / 12.0 + 2.0 / 3.0 * zeta3) * nf;
1693 double C03 = 87029.0 / 288.0 - 121.0 / 8.0 * zeta2 - 1103.0 / 4.0 * zeta3
1694 + 275.0 / 6.0 * zeta5
1695 + (-7847.0 / 216.0 + 11.0 / 6.0 * zeta2 + 262.0 / 9.0 * zeta3
1696 - 25.0 / 9.0 * zeta5) * nf
1697 + (151.0 / 162.0 - zeta2 / 18.0 - 19.0 / 27.0 * zeta3) * nf*nf;
1698 double C04 = -156.61 + 18.77 * nf - 0.7974 * nf * nf + 0.0215 * nf * nf*nf;
1704 double C23 = -80.0 + 60.0 * zeta3 + (32.0 / 9.0 - 8.0 / 3.0 * zeta3) * nf;
1706 double C22V = 253.0 / 2.0 - 13.0 / 3.0 * nf;
1707 double C23V = 2522.0 - 855.0 / 2.0 * zeta2 + 310.0 / 3.0 * zeta3 - 5225.0 / 6.0 * zeta5
1708 + (-4942.0 / 27.0 + 34.0 * zeta2 - 394.0 / 27.0 * zeta3
1709 + 1045.0 / 27.0 * zeta5) * nf
1710 + (125.0 / 54.0 - 2.0 / 3.0 * zeta2) * nf*nf;
1713 double C42 = 13.0 / 3.0 - 4.0 * zeta3;
1715 double C41V = -22.0;
1716 double C42V = -3029.0 / 12.0 + 162.0 * zeta2 + 112.0 * zeta3
1717 + (143.0 / 18.0 - 4.0 * zeta2 - 8.0 / 3.0 * zeta3) * nf;
1718 double C42VL = -11.0 / 2.0 + nf / 3.0;
1722 double xt = s / MtPole / MtPole;
1723 double C2t = xt * (44.0 / 675.0 - 2.0 / 135.0 * (-log_t));
1726 double AlsMzPi =
AlsMz / M_PI;
1727 double AlsMzPi2 = AlsMzPi*AlsMzPi;
1728 double AlsMzPi3 = AlsMzPi2*AlsMzPi;
1729 double AlsMzPi4 = AlsMzPi3*AlsMzPi;
1736 RVf = 1.0 + 3.0 / 4.0 * Qf2 * alpMz / M_PI + AlsMzPi - Qf2 / 4.0 * alpMz / M_PI * AlsMzPi
1737 + (C02 + C2t) * AlsMzPi2 + C03 * AlsMzPi3 + C04 * AlsMzPi4
1738 + (mcMz2 + mbMz2) / s * C23 * AlsMzPi3
1739 + mqMz2 / s * (C21V * AlsMzPi + C22V * AlsMzPi2 + C23V * AlsMzPi3)
1740 + mcMz2 * mcMz2 / s / s * (C42 - log_c) * AlsMzPi2
1741 + mbMz2 * mbMz2 / s / s * (C42 - log_b) * AlsMzPi2
1742 + mqMz2 * mqMz2 / s / s * (C40V + C41V * AlsMzPi + (C42V + C42VL * log_q) * AlsMzPi2)
1743 + 12.0 * mqdash4 / s / s * AlsMzPi2
1744 - mqMz2 * mqMz2 * mqMz2 / s / s / s
1745 * (8.0 + 16.0 / 27.0 * (155.0 + 6.0 * log_q) * AlsMzPi);
1759 double MtPole = mtpole;
1762 double I3q = quarks[q].getIsospin();
1764 double Qf2 =
pow(quarks[q].getCharge(), 2.0);
1770 double mcMz2 = mcMz*mcMz;
1771 double mbMz2 = mbMz*mbMz;
1772 double mqMz2, mqdash4;
1776 mqdash4 = mbMz2*mbMz2;
1780 mqdash4 = mcMz2*mcMz2;
1790 double log_t =
log(MtPole * MtPole / s);
1791 double log_c =
log(mcMz2 / s);
1792 double log_b =
log(mbMz2 / s);
1797 log_q =
log(mqMz2 / s);
1814 double C02 = 365.0 / 24.0 - 11.0 * zeta3 + (-11.0 / 12.0 + 2.0 / 3.0 * zeta3) * nf;
1815 double C03 = 87029.0 / 288.0 - 121.0 / 8.0 * zeta2 - 1103.0 / 4.0 * zeta3
1816 + 275.0 / 6.0 * zeta5
1817 + (-7847.0 / 216.0 + 11.0 / 6.0 * zeta2 + 262.0 / 9.0 * zeta3
1818 - 25.0 / 9.0 * zeta5) * nf
1819 + (151.0 / 162.0 - zeta2 / 18.0 - 19.0 / 27.0 * zeta3) * nf*nf;
1820 double C04 = -156.61 + 18.77 * nf - 0.7974 * nf * nf + 0.0215 * nf * nf*nf;
1826 double C23 = -80.0 + 60.0 * zeta3 + (32.0 / 9.0 - 8.0 / 3.0 * zeta3) * nf;
1828 double C21A = -22.0;
1829 double C22A = -8221.0 / 24.0 + 57.0 * zeta2 + 117.0 * zeta3
1830 + (151.0 / 12.0 - 2.0 * zeta2 - 4.0 * zeta3) * nf;
1831 double C23A = -4544045.0 / 864.0 + 1340.0 * zeta2 + 118915.0 / 36.0 * zeta3
1833 + (71621.0 / 162.0 - 209.0 / 2.0 * zeta2 - 216.0 * zeta3
1834 + 5.0 * zeta4 + 55.0 * zeta5) * nf
1835 + (-13171.0 / 1944.0 + 16.0 / 9.0 * zeta2 + 26.0 / 9.0 * zeta3) * nf*nf;
1838 double C42 = 13.0 / 3.0 - 4.0 * zeta3;
1841 double C42A = 3389.0 / 12.0 - 162.0 * zeta2 - 220.0 * zeta3
1842 + (-41.0 / 6.0 + 4.0 * zeta2 + 16.0 / 3.0 * zeta3) * nf;
1843 double C42AL = 77.0 / 2.0 - 7.0 / 3.0 * nf;
1847 double xt = s / MtPole / MtPole;
1848 double C2t = xt * (44.0 / 675.0 - 2.0 / 135.0 * (-log_t));
1851 double I2 = -37.0 / 12.0 + (-log_t) + 7.0 / 81.0 * xt + 0.0132 * xt*xt;
1852 double I3 = -5075.0 / 216.0 + 23.0 / 6.0 * zeta2 + zeta3 + 67.0 / 18.0 * (-log_t)
1853 + 23.0 / 12.0 * log_t*log_t;
1854 double I4 = 49.0309 - 17.6637 * (-log_t) + 14.6597 * log_t * log_t
1855 + 3.6736 * (-log_t * log_t * log_t);
1858 double AlsMzPi =
AlsMz / M_PI;
1859 double AlsMzPi2 = AlsMzPi*AlsMzPi;
1860 double AlsMzPi3 = AlsMzPi2*AlsMzPi;
1861 double AlsMzPi4 = AlsMzPi3*AlsMzPi;
1868 RAf = 1.0 + 3.0 / 4.0 * Qf2 * alpMz / M_PI + AlsMzPi - Qf2 / 4.0 * alpMz / M_PI * AlsMzPi
1869 + (C02 + C2t - 2.0 * I3q * I2) * AlsMzPi2
1870 + (C03 - 2.0 * I3q * I3) * AlsMzPi3
1871 + (C04 - 2.0 * I3q * I4) * AlsMzPi4
1872 + (mcMz2 + mbMz2) / s * C23 * AlsMzPi3
1873 + mqMz2 / s * (C20A + C21A * AlsMzPi + C22A * AlsMzPi2
1874 + 6.0 * (3.0 + log_t) * AlsMzPi2 + C23A * AlsMzPi3)
1876 - 10.0 * mqMz2 / MtPole / MtPole
1877 * (8.0 / 81.0 + log_t / 54.0) * AlsMzPi2
1878 + mcMz2 * mcMz2 / s / s * (C42 - log_c) * AlsMzPi2
1879 + mbMz2 * mbMz2 / s / s * (C42 - log_b) * AlsMzPi2
1880 + mqMz2 * mqMz2 / s / s * (C40A + C41A * AlsMzPi
1881 + (C42A + C42AL * log_q) * AlsMzPi2)
1882 - 12.0 * mqdash4 / s / s*AlsMzPi2;
1889 double AlsMzPi =
AlsMz / M_PI;
1890 double AlsMzPi2 = AlsMzPi*AlsMzPi;
1891 double AlsMzPi3 = AlsMzPi2*AlsMzPi;
1892 double AlsMzPi4 = AlsMzPi3*AlsMzPi;
1896 for (
int q = 0; q < 6; q++) {
1904 return ( gV_sum.
abs2()*(-0.4132 * AlsMzPi3 - 4.9841 * AlsMzPi4));
virtual double Gamma_had() const
The hadronic decay width of the boson, .
double computeAlpha() const
The CKM angle .
EWSMThreeLoopEW2QCD * myThreeLoopEW2QCD
A pointer to an object of type EWSMThreeLoopEW2QCD.
double DeltaRho(const double Mw_i) const
Leading three-loop contribution of to , denoted as .
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
double SMparamsForEWPO_cache[NumSMParamsForEWPO]
virtual double epsilon2() const
The SM contribution to the epsilon parameter .
double computeRt() const
.
double computeBeta() const
The CKM angle .
virtual double epsilon1() const
The SM contribution to the epsilon parameter .
gslpp::matrix< gslpp::complex > Ye
The Yukawa matrix of the charged leptons.
void ComputeDeltaR_rem(const double Mw_i, double DeltaR_rem[orders_EW_size]) const
A method to collect computed via subclasses.
double tau_2() const
The function .
double DeltaRho(const double Mw_i) const
Leading one-loop contribution of to , denoted as .
virtual bool PostUpdate()
The post-update method for StandardModel.
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of StandardModel.
gslpp::matrix< gslpp::complex > UPMNS
The PMNS matrix.
gslpp::matrix< gslpp::complex > VCKM
The CKM matrix.
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
static const int NumSMParamsForEWPO
The number of the SM parameters that are relevant to the EW precision observables.
virtual bool Update(const std::map< std::string, double > &DPars)
The update method for StandardModel.
virtual gslpp::complex deltaRhoZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
virtual gslpp::complex gA_f(const Particle f) const
The effective leptonic neutral-current axial-vector coupling in the SM.
gslpp::complex computelamc_d() const
The product of the CKM elements .
quark
An enum type for quarks.
virtual double Mw_tree() const
The tree-level mass of the boson, .
A base class for defining operations on matrices, both real and complex.
double getZeta3() const
A get method to access the value of the zeta function .
A class for one-loop corrections to the EW precision observables.
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
A class for three-loop corrections to the EW precision observables.
EWSMThreeLoopEW * myThreeLoopEW
A pointer to an object of type EWSMThreeLoopEW.
double DeltaAlphaLepton_cache
A cache of the value of .
double DeltaAlpha() const
The total corrections to the electromagnetic coupling at the -mass scale, denoted as ...
double AlsMz
The strong coupling constant at the Z-boson mass, .
std::string FlagRhoZ
A string for the model flag RhoZ.
orders
An enum type for orders in QCD.
virtual double epsilonb() const
The SM contribution to the epsilon parameter .
double computeBetas() const
The CKM angle .
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 .
gslpp::complex computelamc_s() const
The product of the CKM elements .
static const std::string SMvars[NSMvars]
A string array containing the labels of the model parameters in StandardModel.
complex pow(const complex &z1, const complex &z2)
void setMass(double mass)
A set method to fix the particle mass.
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double DeltaAlphaLepton(const double s) const
Leptonic contribution to the electromagnetic coupling , denoted as .
virtual bool CheckFlags() const
A method to check the sanity of the set of model flags.
virtual bool PostUpdate()
The post-update method for QCD.
bool requireCKM
An internal flag to control whether the CKM matrix has to be recomputed.
gslpp::matrix< gslpp::complex > Yn
The Yukawa matrix of the neutrinos.
virtual bool setFlagStr(const std::string name, const std::string value)
A method to set a flag of QCD.
bool IsFlagWithoutNonUniversalVC() const
A method to retrieve the model flag WithoutNonUniversalVC.
void setFlagCacheInEWSMcache(bool FlagCacheInEWSMcache)
A set method to change the model flag CacheInEWSMcache in StandardModel.
const double & real() const
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
gslpp::complex computelamc() const
The product of the CKM elements .
double Als(const double mu, const orders order=FULLNLO) const
Computes the running strong coupling in the scheme. In the cases of LO, NLO and FULLNNLO...
The parent class in Flavour for calculating all the Wilson coefficients for various Flavor Violating ...
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
double ale
The fine-structure constant .
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
void setWolfenstein(double, double, double, double)
void setSMupdated()
a member used for the caching for .
double mf(const Particle f, const double mu=0.0, const orders order=FULLNNLO) const
The mass of an SM fermion.
std::string FlagKappaZ
A string for the model flag KappaZ.
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
virtual double Gamma_inv() const
The invisible partial decay width of the boson, .
virtual double GammaZ(const Particle f) const
The partial decay width, .
bool UpdateError
A boolean set to false if update is successful.
EWSMOneLoopEW * myOneLoopEW
A pointer to an object of type EWSMOneLoopEW.
double Delta_EWQCD(const QCD::quark q) const
The non-factorizable EW-QCD corrections to the partial widths for , denoted as .
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
double RVh() const
The singlet vector corrections to the hadronic -boson width, denoted as .
bool requireYe
An internal flag to control whether the charged-lepton Yukawa matrix has to be recomputed.
virtual bool InitializeModel()
A method to initialize the model.
double computeRts() const
.
void ComputeDeltaRho(const double Mw_i, double DeltaRho[orders_EW_size]) const
A method to collect computed via subclasses.
double GF
The Fermi constant in .
gslpp::complex rhoZ_f_cache[12]
A cache of the value of .
double DeltaAlphaTop(const double s) const
Top-quark contribution to the electromagnetic coupling , denoted as .
double RVq(const QCD::quark q) const
The radiator factor associated with the final-state QED and QCD corrections to the the vector-current...
virtual double sin2thetaEff(const Particle f) const
The effective weak mixing angle for at the the -mass scale.
virtual void computeYukawas()
The method to compute the Yukawa matrices.
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of QCD.
double a_f(const Particle f) const
The tree-level axial-vector coupling for , denoted as .
virtual double sigma0_had() const
The hadronic cross section for at the -pole, .
double Xt_GF() const
The quantity with the coupling .
StandardModelMatching * myStandardModelMatching
A pointer to an object of type StandardModelMatching.
virtual bool CheckFlags() const
A method to check the sanity of the set of model flags.
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
static const double GeVminus2_to_nb
double DeltaAlpha_cache
A cache of the value of .
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 mHl
The Higgs mass in GeV.
double delSin2th_l
The theoretical uncertainty in , denoted as .
gslpp::matrix< gslpp::complex > Yu
The Yukawa matrix of the up-type quarks.
gslpp::complex computelamu() const
The product of the CKM elements .
double alsMt() const
The strong coupling at NNLO.
A class for the matching in the Standard Model.
EWSMcache * getMyEWSMcache() const
A get method to retrieve the member pointer of type EWSMcache.
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
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...
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
void setModelInitialized(bool ModelInitialized)
A set method to fix the failure or success of the initialization of the model.
virtual double Mw() const
The SM prediction for the -boson mass in the on-shell scheme, .
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
double rhob
The CKM parameter in the Wolfenstein parameterization.
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
A class for cache variables used in computing radiative corrections to the EW precision observables...
static const double Mw_error
The target accuracy of the iterative calculation of the -boson mass in units of GeV.
double getZeta5() const
A get method to access the value of the zeta function .
An observable class for the leptonic effective weak mixing angle at the pole.
bool is(std::string name_i) const
double Mw_cache
A cache of the value of .
double Mz
The mass of the boson in GeV.
virtual ~StandardModel()
The default destructor.
bool IsModelInitialized() const
A method to check if the model is initialized.
gslpp::complex kappaZ_f_cache[12]
A cache of the value of .
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
bool IsFlagNoApproximateGammaZ() const
A method to retrieve the model flag NoApproximateGammaZ.
virtual gslpp::complex rhoZ_f(const Particle f) const
The effective leptonic neutral-current 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 .
virtual double epsilon3() const
The SM contribution to the epsilon parameter .
virtual bool PreUpdate()
The pre-update method for QCD.
double dAle5Mz
The five-flavour hadronic contribution to the electromagnetic coupling, .
virtual double v() const
The Higgs vacuum expectation value. where is the Fermi constant, measured through muon decays...
gslpp::complex computelamt_d() const
The product of the CKM elements .
bool requireYn
An internal flag to control whether the neutrino Yukawa matrix has to be recomputed.
double getZeta2() const
A get method to access the value of the zeta function .
void updateSMParameters()
Updates to new Standard Model parameter sets.
double delta_f(const Particle f, const double Mw_i) const
.
double DeltaAlphaL5q() const
The sum of the leptonic and the five-flavour hadronic corrections to the electromagnetic coupling at...
virtual bool Init(const std::map< std::string, double > &DPars)
A method to initialize the model parameters.
virtual void setParameter(const std::string name, const double &value)
A method to set the value of a parameter of StandardModel.
double getCharge() const
A get method to access the particle charge.
virtual bool PreUpdate()
The pre-update method for StandardModel.
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
The parent class in LeptonFlavour for calculating all the Wilson coefficients for various Lepton Flav...
double muw
A matching scale around the weak scale in GeV.
Flavour * myFlavour
A pointer to an object of the type Flavour.
EWSMcache * myEWSMcache
A pointer to an object of type EWSMcache.
CKM myCKM
An object of type CKM.
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...
gslpp::complex computelamu_d() const
The product of the CKM elements .
double DeltaRbar_rem(const double Mw_i) const
.
virtual void computeCKM()
The method to compute the CKM matrix.
double lambda
The CKM parameter in the Wolfenstein parameterization.
double rho_GammaW(const Particle fi, const Particle fj, const double Mw_i) const
EW radiative corrections to the width of , denoted as .
virtual gslpp::complex kappaZ_f(const Particle f) const
The effective leptonic neutral-current coupling in the SM.
bool useDeltaAlphaLepton_cache
Particle getQuarks(const quark q) const
A get method to access a quark as an object of the type Particle.
double getZeta4() const
A get method to access the value of the zeta function .
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...
gslpp::complex deltaKappa_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
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 computelamt_s() const
The product of the CKM elements .
void setFlagCacheInStandardModel(bool FlagCacheInStandardModel)
A set method to change the model flag CacheInStandardModel of StandardModel.
double delGammaZ
The theoretical uncertainty in , denoted as , in GeV.
virtual double cW2() const
gslpp::matrix< gslpp::complex > Yd
The Yukawa matrix of the down-type quarks.
double taub() const
Top-mass corrections to the vertex, denoted by .
virtual double DeltaRbar() const
The SM prediction for derived from that for the -boson mass.
std::string getName() const
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 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...
Particle leptons[6]
An array of Particle objects for the leptons.
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
bool checkSMparamsForEWPO()
A method to check whether the parameters relevant to the EWPO are updated.
A class for two-loop corrections to the EW precision observables.
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
const double & getMass() const
A get method to access the particle mass.
double computeRb() const
.
virtual gslpp::complex deltaKappaZ_f(const Particle f) const
Flavour non-universal vertex corrections to , denoted by .
virtual double AFB(const Particle f) const
An observable class for the -boson mass.
bool FlagCacheInStandardModel
A flag for caching (true by default).
virtual double Gamma_Z() const
The total decay width of the boson, .
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...
double Mzbar() const
The -boson mass in the complex-pole/fixed-width scheme.
double c02() const
The square of the cosine of the weak mixing angle defined without weak radiative corrections...
virtual gslpp::complex gV_f(const Particle f) const
The effective leptonic neutral-current vector coupling in the SM.
double etab
The CKM parameter in the Wolfenstein parameterization.
double DeltaAlpha_l(const double s) const
Leptonic contribution of to the electromagnetic coupling , denoted as .
virtual double GammaW() const
The total width of the boson, .
const double & imag() const
virtual double DeltaR() const
The SM prediction for derived from that for the boson mass.
bool FlagWithoutNonUniversalVC
A boolean for the model flag WithoutNonUniversalVC.
virtual double rho_GammaW(const Particle fi, const Particle fj) const
EW radiative corrections to the width of , denoted as .
EWSMTwoFermionsLEP2 * myTwoFermionsLEP2
A pointer to an object of type EWSMTwoFermionsLEP2.
double DeltaRho(const double Mw_i) const
Leading three-loop QCD contribution of to , denoted as .
EWSMApproximateFormulae * myApproximateFormulae
A pointer to an object of type EWSMApproximateFormulae.
EWSMThreeLoopQCD * myThreeLoopQCD
A pointer to an object of type EWSMThreeLoopQCD.
gslpp::complex FZ(const double s, const double Mw_i) const
The unified form factor .
A class for two-loop corrections to the EW precision observables.
A class for three-loop corrections to the EW precision observables.
complex log(const complex &z)
double ale_OS(const double mu, orders order=FULLNLO) const
The running electromagnetic coupling in the on-shell schem.
double DeltaRho(const double Mw_i) const
Leading three-loop contribution of to , denoted as .
EWSMTwoLoopEW * myTwoLoopEW
A pointer to an object of type EWSMTwoLoopEW.
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
virtual bool Init(const std::map< std::string, double > &DPars)
Initializes the QCD parameters found in the argument.
bool useKappaZ_f_cache[12]
A class for three-loop corrections to the EW precision observables.
LeptonFlavour * myLeptonFlavour
A pointer to an object of the type LeptonFlavour.
virtual double A_f(const Particle f) const
The left-right asymmetry in at the -pole, .
double s02() const
The square of the sine of the weak mixing angle defined without weak radiative corrections.
StandardModel()
The default constructor.
EWSMTwoLoopQCD * myTwoLoopQCD
A pointer to an object of type EWSMTwoLoopQCD.
double GammaW_cache
A cache of the value of .
double DeltaR_rem(const double Mw_i) const
Remainder contribution of to , denoted as .
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
double v_f(const Particle f, const double Mw_i) const
The tree-level vector coupling for , denoted as .
double delMw
The theoretical uncertainty in , denoted as , in GeV.
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 .
bool FlagNoApproximateGammaZ
A boolean for the model flag NoApproximateGammaZ.
gslpp::complex computelamu_s() const
The product of the CKM elements .
A class for defining operations on and functions of complex numbers.
virtual double R0_f(const Particle f) const
The ratio .
double alphaMz() const
The electromagnetic coupling at the -mass scale, .
std::string ModelName() const
A method to fetch the name of the model.
double DeltaRho(const double Mw_i) const
Leading two-loop contribution of to , denoted as .
bool checkEWPOscheme(const std::string scheme) const
A method to check if a given scheme name in string form is valid.
virtual bool setFlag(const std::string name, const bool value)
A method to set a flag of StandardModel.
A class for parameters related to QCD, hadrons and quarks.
static const int NSMvars
The number of the model parameters in StandardModel.
orders_EW
An enumerated type representing perturbative orders of radiative corrections to EW precision observab...
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
gslpp::complex computelamt() const
The product of the CKM elements .
double A
The CKM parameter in the Wolfenstein parameterization.
std::map< std::string, boost::reference_wrapper< const double > > ModelParamMap
double getIsospin() const
A get method to access the particle isospin.
gslpp::complex deltaRho_rem_f(const Particle f, const double Mw_i) const
Remainder contribution of to the effective couplings , denoted as .
gslpp::complex FW(const double s, const Particle f, const double Mw_i) const
The unified form factor for .
void getCKM(gslpp::matrix< gslpp::complex > &) const
double DeltaAlpha_t(const double s) const
Top-quark contribution of to the electromagnetic coupling , denoted as .
double computeGamma() const
The CKM angle .
virtual void setParameter(const std::string name, const double &value)=0
A method to set the value of a parameter of the model.
double DeltaRho(const double Mw_i) const
Leading two-loop QCD contribution of to , denoted as .
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 .
std::string FlagMw
A string for the model flag Mw.
complex sqrt(const complex &z)