12#include <gsl/gsl_sf.h>
25 zeta2 = gsl_sf_zeta_int(2);
26 zeta3 = gsl_sf_zeta_int(3);
27 zeta4 = gsl_sf_zeta_int(4);
28 zeta5 = gsl_sf_zeta_int(5);
32 S2 = 4.0 / 9.0 / sqrt(3.0) * Cl2_Pi_3;
33 D3 = 6.0 *
zeta3 - 15.0 / 4.0 *
zeta4 - 6.0 * Cl2_Pi_3*Cl2_Pi_3;
34 B4 = -1.76280008707377;
39 for (
int i = 0; i < 12; ++i) {
151 double params[] = {
SM.
getMz(), Mw_i};
156 double newResult = log(
SM.
cW2(Mw_i));
199 double newResult =
PolyLog.
Li3(-tmp / (1.0 - tmp));
208 double params[] = {
SM.
getMz(), Mw_i};
236 double params[] = {Mw_i,
SM.
getMz()};
250 double params[] = {Mw_i,
SM.
getMHl()};
264 double params[] = {
SM.
getMz()};
278 double params[] = {Mw_i};
283 double newResult =
PV.
A0(Mw_i*Mw_i, Mw_i * Mw_i);
337 double params[] = {
SM.
getMz(), Mw_i};
367 double params[] = {
SM.
getMz(), Mw_i};
382 double params[] = {
SM.
getMz(), Mw_i};
388 gslpp::complex newResult =
PV.
B0(
SM.
getMz() *
SM.
getMz(), Mw_i*Mw_i, 0.0, Mw_i * Mw_i);
397 double params[] = {
SM.
getMz(), Mw_i};
412 double params[] = {
SM.
getMz(), Mw_i};
427 double params[] = {Mw_i,
SM.
getMz()};
433 gslpp::complex newResult =
PV.
B0(Mw_i*Mw_i,
SM.
getMz() *
SM.
getMz(), Mw_i*Mw_i, Mw_i * Mw_i);
442 double params[] = {Mw_i,
SM.
getMz()};
448 gslpp::complex newResult =
PV.
B0(Mw_i*Mw_i, Mw_i*Mw_i,
SM.
getMz() *
SM.
getMz(), Mw_i * Mw_i);
457 double params[] = {Mw_i,
SM.
getMHl()};
472 double params[] = {Mw_i};
478 gslpp::complex newResult =
PV.
B0(Mw_i*Mw_i, Mw_i*Mw_i, 0.0, Mw_i * Mw_i);
532 double params[] = {
SM.
getMz(), Mw_i};
547 double params[] = {
SM.
getMz(), Mw_i};
562 double params[] = {Mw_i,
SM.
getMz()};
568 gslpp::complex newResult =
PV.
B0p(Mw_i*Mw_i, Mw_i*Mw_i,
SM.
getMz() *
SM.
getMz(), Mw_i * Mw_i);
577 double params[] = {Mw_i,
SM.
getMHl()};
592 double params[] = {Mw_i};
598 gslpp::complex newResult =
PV.
B0p(Mw_i*Mw_i, Mw_i*Mw_i, 0.0, Mw_i * Mw_i);
622 double mymf, mymfprime;
632 double params[] = {Mz, mymf, mymfprime};
638 double mf2 = mymf*mymf;
639 double mfprime2 = mymfprime*mymfprime;
640 gslpp::complex newResult =
PV.
B1(Mz * Mz, 0.0,
mf2, mfprime2);
649 double mymf, mymfprime;
659 double params[] = {Mz, mymf, mymfprime};
665 double mf2 = mymf*mymf;
666 double mfprime2 = mymfprime*mymfprime;
667 gslpp::complex newResult =
PV.
B1(Mz * Mz, 0.0, mfprime2,
mf2);
676 double mymf, mymfprime;
686 double params[] = {Mz, Mw_i, mymf, mymfprime};
692 double mf2 = mymf*mymf;
693 double mfprime2 = mymfprime*mymfprime;
694 gslpp::complex newResult =
PV.
B1(Mz * Mz, Mw_i*Mw_i,
mf2, mfprime2);
703 double mymf, mymfprime;
713 double params[] = {Mz, Mw_i, mymf, mymfprime};
719 double mf2 = mymf*mymf;
720 double mfprime2 = mymfprime*mymfprime;
721 gslpp::complex newResult =
PV.
B1(Mz * Mz, Mw_i*Mw_i, mfprime2,
mf2);
730 double mymf, mymfprime;
740 double params[] = {Mw_i, mymf, mymfprime};
746 double mf2 = mymf*mymf;
747 double mfprime2 = mymfprime*mymfprime;
748 gslpp::complex newResult =
PV.
B1p(Mw_i*Mw_i, Mw_i*Mw_i,
mf2, mfprime2);
757 double mymf, mymfprime;
767 double params[] = {Mw_i, mymf, mymfprime};
773 double mf2 = mymf*mymf;
774 double mfprime2 = mymfprime*mymfprime;
775 gslpp::complex newResult =
PV.
B1p(Mw_i*Mw_i, Mw_i*Mw_i, mfprime2,
mf2);
800 if (params[1] == 0.0)
801 throw std::runtime_error(
"Error in EWSMcache::Bf_Mz_0_mf_mf()");
816 double mymf, mymfprime;
826 double params[] = {Mz, Mw_i, mymf, mymfprime};
831 double mf2 = mymf*mymf;
832 double mfprime2 = mymfprime*mymfprime;
833 gslpp::complex newResult =
PV.
Bf(Mz * Mz, Mw_i*Mw_i, mfprime2,
mf2);
842 double mymf, mymfprime;
852 double params[] = {Mz, mymf, mymfprime};
858 double mf2 = mymf*mymf;
859 double mfprime2 = mymfprime*mymfprime;
860 gslpp::complex newResult =
PV.
Bf(Mz * Mz, 0.0, mfprime2,
mf2);
869 double mymf, mymfprime;
879 double params[] = {Mw_i, mymf, mymfprime};
885 double mf2 = mymf*mymf;
886 double mfprime2 = mymfprime*mymfprime;
887 gslpp::complex newResult =
PV.
Bf(Mw_i*Mw_i, Mw_i*Mw_i, mfprime2,
mf2);
911 double mymf, mymfprime;
921 double params[] = {Mw_i, mymf, mymfprime};
927 double mf2 = mymf*mymf;
928 double mfprime2 = mymfprime*mymfprime;
929 gslpp::complex newResult =
PV.
Bfp(Mw_i*Mw_i, Mw_i*Mw_i, mfprime2,
mf2);
968 double params[] = {
SM.
getMz(), Mw_i};
983 double params[] = {
SM.
getMz(), Mw_i};
989 gslpp::complex newResult =
PV.
C0(
SM.
getMz() *
SM.
getMz(), Mw_i*Mw_i, 0.0, Mw_i * Mw_i);
998 double params[] = {Mw_i,
SM.
getMz()};
1004 gslpp::complex newResult =
PV.
C0(Mw_i*Mw_i, Mw_i*Mw_i, 0.0,
SM.
getMz() *
SM.
getMz());
1013 double params[] = {Mw_i,
SM.
getMz()};
1028 double params[] = {
SM.
getMz()};
double Cl2(const double phi) const
The Clausen function of index 2, .
double Li2_MW2toMTOP2_cache[3]
A cache of .
gslpp::complex B1_Mz2_Mw2_mf2_mfprime2(const int gen, const double Mw_i) const
A cache method.
double B0p_Mz2_Mz2_Mw2_Mw2_cache[4]
A cache of a PV function.
double B1_Mz2_0_mf2_mfprime2_cache[6][5]
A cache of a PV function.
double B1p_Mw2_Mw2_mfprime2_mf2_cache[6][5]
A cache of a PV function.
double logMZtoMTAU_cache[3]
A cache of .
double B0p_Mw2_Mw2_0_Mw2_cache[3]
A cache of a PV function.
double A0_Mz2_Mw2_cache[3]
A cache of a PV function.
gslpp::complex C0_Mw2_0_Mz2_0(const double Mw_i) const
A cache method.
double B1p_Mw2_Mw2_mf2_mfprime2_cache[6][5]
A cache of a PV function.
double A0_Mw2_Mz2_cache[3]
A cache of a PV function.
double logMTOPtoMH() const
A cache method.
double zeta2
The constant .
double A0_Mz2_Mz2_cache[2]
A cache of a PV function.
double log_cW2_cache[3]
A cache of .
gslpp::complex B0_Mw2_Mw2_Mz2_Mw2(const double Mw_i) const
A cache method.
gslpp::complex B1p_Mw2_Mw2_mf2_mfprime2(const int gen, const double Mw_i) const
A cache method.
EWSMcache(const StandardModel &SM_i)
Constructor.
double B0p_Mw2_Mw2_mh2_Mw2_cache[4]
A cache of a PV function.
gslpp::complex B0p_Mz2_Mz2_Mw2_Mw2(const double Mw_i) const
A cache method.
double B0_Mz2_0_0_Mw2_cache[4]
A cache of a PV function.
double B0_Mw2_Mz2_Mt2_Mt2_cache[5]
A cache of a PV function.
const ClausenFunctions Clausen
An object of type ClausenFunctions.
bool FlagDebug
A flag for debugging (false by default).
double Bfp_Mz2_Mz2_mf2_mf2_cache[12][4]
A cache of a PV function.
gslpp::complex Bf_Mz2_0_mf2_mf2(const Particle f) const
A cache method.
double Li3_for_F1_cache[3]
A cache of .
double B0_Mz2_Mw2_0_Mw2_cache[4]
A cache of a PV function.
double A0_Mz2_mh2() const
A cache method.
gslpp::complex Bf_Mw2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
gslpp::complex B1_Mz2_0_mf2_mfprime2(const int gen) const
A cache method.
gslpp::complex B0p_Mz2_0_mh2_Mw2(const double Mw_i) const
A cache method.
double Bf_Mz2_0_mf2_mf2_cache[12][4]
A cache of a PV function.
double zeta3
The constant .
double A0_Mw2_mh2_cache[3]
A cache of a PV function.
double B0p_Mw2_Mw2_Mz2_Mw2_cache[4]
A cache of a PV function.
double Li2_MW2toMTOP2(const double Mw_i) const
A cache method.
double logMZtoMTOP_cache[3]
A cache of .
double log_cW2(const double Mw_i) const
A cache method.
double logMTOPtoMH_cache[3]
A cache of .
double logMZtoMTAU() const
A cache method.
gslpp::complex B0_Mw2_Mz2_Mt2_Mt2(const double Mw_i) const
A cache method.
double C0_Mz2_Mw2_Mt2_Mw2_cache[5]
A cache of a PV function.
double B0_Mz2_Mw2_Mz2_Mw2_cache[4]
A cache of a PV function.
double B0p_Mz2_Mz2_mf2_mf2_cache[12][4]
A cache of a PV function.
double Bf_Mz2_Mz2_mf2_mf2_cache[12][4]
A cache of a PV function.
double B0p_Mz2_0_Mz2_Mw2_cache[4]
A cache of a PV function.
gslpp::complex B0_Mz2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
gslpp::complex B0_Mz2_0_0_Mw2(const double Mw_i) const
A cache method.
gslpp::complex B1p_Mw2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
double C0_Mz2_0_Mw2_0_cache[4]
A cache of a PV function.
double logMZtoME() const
A cache method.
double zeta4
The constant .
gslpp::complex B0_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
double B0_Mw2_Mz2_Mw2_Mw2_cache[4]
A cache of a PV function.
double logMZtoMMU() const
A cache method.
double zeta5
The constant .
gslpp::complex C0_Mz2_0_Mz2_0() const
A cache method.
const Polylogarithms PolyLog
An object of type Polylogarithms.
gslpp::complex B0_Mw2_Mw2_mh2_Mw2(const double Mw_i) const
A cache method.
bool CacheCheck(const double cache[], const int NumPar, const double params[]) const
A check method for caching.
double B0_Mz2_Mz2_mh2_Mz2_cache[4]
A cache of a PV function.
gslpp::complex Bfp_Mw2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
double A0_Mz2_Mw2(const double Mw_i) const
A cache method.
double B0_Mz2_0_mh2_Mw2_cache[5]
A cache of a PV function.
gslpp::complex B0p_Mz2_0_Mz2_Mw2(const double Mw_i) const
A cache method.
gslpp::complex B0p_Mz2_Mz2_mh2_Mz2() const
A cache method.
double A0_Mz2_Mz2() const
A cache method.
gslpp::complex B0_Mz2_Mw2_Mz2_Mw2(const double Mw_i) const
A cache method.
gslpp::complex C0_Mz2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
const PVfunctions PV
An object of type PVfunctions.
double C0_Mw2_Mw2_0_Mz2_cache[4]
A cache of a PV function.
gslpp::complex B1_Mz2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
double B0_Mw2_Mw2_0_Mw2_cache[3]
A cache of a PV function.
gslpp::complex C0_Mz2_0_Mw2_0(const double Mw_i) const
A cache method.
double C0_Mz2_0_Mz2_0_cache[3]
A cache of a PV function.
gslpp::complex B0p_Mw2_Mw2_Mz2_Mw2(const double Mw_i) const
A cache method.
gslpp::complex Bfp_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
gslpp::complex B0p_Mw2_Mw2_mh2_Mw2(const double Mw_i) const
A cache method.
void newCacheForDouble(double cache[], const int NumPar, const double params[], const double newResult) const
A method to update a cache of the parameters and the quantity under consideration.
double Bf_Mz2_0_mfprime2_mf2_cache[6][5]
A cache of a PV function.
gslpp::complex B0p_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
double mf_atMz_params_cache[12][StandardModel::NumSMParamsForEWPO]
A cache array of a set of SM parameters, used together with mf_atMz_cache.
double Li3_MW2toMTOP2_cache[3]
A cache of .
double C0_Mz2_Mt2_Mw2_Mt2_cache[5]
A cache of a PV function.
double logMZtoMMU_cache[3]
A cache of .
double B1_Mz2_0_mfprime2_mf2_cache[6][5]
A cache of a PV function.
double B0_Mz2_Mz2_Mw2_Mw2_cache[4]
A cache of a PV function.
double A0_Mz2_mh2_cache[3]
A cache of a PV function.
double B0_Mw2_Mw2_mh2_Mw2_cache[4]
A cache of a PV function.
double logMZtoMTOP() const
A cache method.
gslpp::complex C0_Mz2_Mt2_Mw2_Mt2(const double Mw_i) const
A cache method.
gslpp::complex Bf_Mz2_Mw2_mfprime2_mf2(const int gen, const double Mw_i) const
A cache method.
gslpp::complex B0_Mz2_0_mh2_Mw2(const double Mw_i) const
A cache method.
double B0_Mz2_Mz2_mf2_mf2_cache[12][4]
A cache of a PV function.
double B1_Mz2_Mw2_mf2_mfprime2_cache[6][6]
A cache of a PV function.
double B0_Mz2_Mw2_mh2_Mw2_cache[5]
A cache of a PV function.
double log2
The constant .
double A0_Mw2_Mw2(const double Mw_i) const
A cache method.
gslpp::complex B0_Mz2_Mw2_mh2_Mw2(const double Mw_i) const
A cache method.
gslpp::complex C0_Mz2_Mw2_Mt2_Mw2(const double Mw_i) const
A cache method.
double B0p_Mz2_0_mh2_Mw2_cache[5]
A cache of a PV function.
double logMZtoME_cache[3]
A cache of .
double C0_Mw2_0_Mz2_0_cache[4]
A cache of a PV function.
double mf2(const Particle f, const double mu=0.0, const orders order=FULLNNLO) const
The mass squared of an SM fermion.
gslpp::complex B0_Mz2_Mz2_Mw2_Mw2(const double Mw_i) const
A cache method.
double B0_Mz2_0_Mz2_Mw2_cache[4]
A cache of a PV function.
void newCacheForComplex(double cache[], const int NumPar, const double params[], const gslpp::complex newResult) const
A method to update a cache of the parameters and the quantity under consideration.
gslpp::complex B0_Mw2_Mz2_Mw2_Mw2(const double Mw_i) const
A cache method.
double Li3_for_F1(const double Mw_i) const
A cache method.
double C0_Mz2_Mw2_0_Mw2_cache[4]
A cache of a PV function.
double mf(const Particle f, const double mu=0.0, const orders order=FULLNNLO) const
The mass of an SM fermion.
gslpp::complex B0_Mz2_Mz2_mh2_Mz2() const
A cache method.
gslpp::complex C0_Mw2_Mw2_0_Mz2(const double Mw_i) const
A cache method.
double B1_Mz2_Mw2_mfprime2_mf2_cache[6][6]
A cache of a PV function.
double Li3_MW2toMTOP2(const double Mw_i) const
A cache method.
double B0p_Mz2_Mz2_mh2_Mz2_cache[4]
A cache of a PV function.
double Bfp_Mw2_Mw2_mfprime2_mf2_cache[6][5]
A cache of a PV function.
double Bf_Mw2_Mw2_mfprime2_mf2_cache[6][5]
A cache of a PV function.
double A0_Mw2_mh2(const double Mw_i) const
A cache method.
bool FlagCacheInEWSMcache
A flag for caching (true by default).
gslpp::complex Bf_Mz2_Mz2_mf2_mf2(const Particle f) const
A cache method.
double A0_Mw2_Mw2_cache[2]
A cache of a PV function.
gslpp::complex Bf_Mz2_0_mfprime2_mf2(const int gen) const
A cache method.
gslpp::complex B1_Mz2_0_mfprime2_mf2(const int gen) const
A cache method.
gslpp::complex B0_Mw2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
double Bf_Mz2_Mw2_mfprime2_mf2_cache[6][6]
A cache of a PV function.
double B0_Mw2_Mw2_Mz2_Mw2_cache[4]
A cache of a PV function.
const StandardModel & SM
A reference to an object of type StandardModel.
gslpp::complex B0_Mz2_0_Mz2_Mw2(const double Mw_i) const
A cache method.
double mf_atMz_cache[12]
A cache of the fermion masses at .
gslpp::complex B0p_Mw2_Mw2_0_Mw2(const double Mw_i) const
A cache method.
double A0_Mw2_Mz2(const double Mw_i) const
A cache method.
gslpp::complex B1(const double mu2, const double p2, const double m02, const double m12) const
.
gslpp::complex B0(const double mu2, const double p2, const double m02, const double m12) const
.
gslpp::complex B0p(const double muIR2, const double p2, const double m02, const double m12) const
.
gslpp::complex Bfp(const double mu2, const double p2, const double m02, const double m12) const
.
gslpp::complex Bf(const double mu2, const double p2, const double m02, const double m12) const
.
double A0(const double mu2, const double m2) const
.
gslpp::complex C0(const double p2, const double m02, const double m12, const double m22) const
.
gslpp::complex B1p(const double mu2, const double p2, const double m02, const double m12) const
.
bool is(std::string name_i) const
double getMass_scale() const
A get method to access the scale at which the particle mass is defined.
const double & getMass() const
A get method to access the particle mass.
double Li3(const double x) const
The trilogarithm .
gslpp::complex Li2(const double x) const
The dilogarithm with a real argument, .
const double Mrun(const double mu, const double m, const quark q, const orders order=FULLNNLO) const
Computes a running quark mass from .
quark
An enum type for quarks.
const double getMtpole() const
A get method to access the pole mass of the top quark.
lepton
An enum type for leptons.
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
A model class for the Standard Model.
const Particle & getLeptons(const QCD::lepton p) const
A get method to retrieve the member object of a lepton.
const double getMz() const
A get method to access the mass of the boson .
virtual const double getMHl() const
A get method to retrieve the Higgs mass .
virtual const double cW2(const double Mw_i) const
The square of the cosine of the weak mixing angle in the on-shell scheme, denoted as .
static const int NumSMParamsForEWPO
The number of the SM parameters that are relevant to the EW precision observables.
orders
An enum type for orders in QCD.