41bool is_zero(
double x)
noexcept
43 return std::abs(x) <= std::numeric_limits<double>::epsilon();
46constexpr double sqr(
double a)
noexcept {
return a*a; }
50double getAsmt(
double mtop,
double alphasMz,
double mz) {
69 "alpha_em_MSbar_at_MZ",
70 "alpha_s_MSbar_at_MZ",
73 "Mv1_pole",
"Mv2_pole",
"Mv3_pole",
74 "Me_pole",
"Mm_pole",
"Mtau_pole",
75 "mu_2GeV",
"ms_2GeV",
"Mt_pole",
76 "md_2GeV",
"mc_mc",
"mb_mb",
77 "CKM_theta_12",
"CKM_theta_13",
"CKM_theta_23",
"CKM_delta",
78 "PMNS_theta_12",
"PMNS_theta_13",
"PMNS_theta_23",
"PMNS_delta",
"PMNS_alpha_1",
"PMNS_alpha_2"
85 mf(0) = flexiblesusy::Electroweak_constants::MUP;
86 mf(1) = flexiblesusy::Electroweak_constants::MCHARM;
87 mf(2) = getRunMtFromMz(flexiblesusy::Electroweak_constants::PMTOP,
88 flexiblesusy::Electroweak_constants::alpha3,
89 flexiblesusy::Electroweak_constants::MZ);
90 mf(3) = flexiblesusy::Electroweak_constants::MDOWN;
91 mf(4) = flexiblesusy::Electroweak_constants::MSTRANGE;
92 mf(5) = flexiblesusy::Electroweak_constants::MBOTTOM;
93 mf(6) = flexiblesusy::Electroweak_constants::MELECTRON;
94 mf(7) = flexiblesusy::Electroweak_constants::MMUON;
95 mf(8) = flexiblesusy::Electroweak_constants::MTAU;
96 a(0) = flexiblesusy::Electroweak_constants::aem;
97 a(1) = flexiblesusy::Electroweak_constants::alpha3;
100 input(
Mt_pole) = flexiblesusy::Electroweak_constants::PMTOP;
101 input(
mb_mb) = flexiblesusy::Electroweak_constants::MBOTTOM;
103 input(
Mm_pole) = flexiblesusy::Electroweak_constants::MMUON;
104 input(
Me_pole) = flexiblesusy::Electroweak_constants::MELECTRON;
105 input(
MW_pole) = flexiblesusy::Electroweak_constants::MW;
106 input(
MZ_pole) = flexiblesusy::Electroweak_constants::MZ;
107 input(
GFermi) = flexiblesusy::Electroweak_constants::gfermi;
108 input(
mc_mc) = flexiblesusy::Electroweak_constants::MCHARM;
109 input(
mu_2GeV) = flexiblesusy::Electroweak_constants::MUP;
110 input(
md_2GeV) = flexiblesusy::Electroweak_constants::MDOWN;
111 input(
ms_2GeV) = flexiblesusy::Electroweak_constants::MSTRANGE;
112 set_scale(flexiblesusy::Electroweak_constants::MZ);
119 Eigen::ArrayXd y(
a.size() +
mf.size());
122 for (
int i = 0; i <
mf.size(); i++) {
132 for (
int i = 0; i <
mf.size(); i++) {
139 Eigen::ArrayXd dydx(
a.size() +
mf.size());
143 for (
int i = 0; i < y.size(); i++) {
155 "Non-perturbative running to Q = "
157 +
" during determination of the SM(5) parameters.");
166 if (mu >
mf(
mUp - 1)) { k++; }
167 if (mu >
mf(
mDown - 1)) { k++; }
282 double x = 24.0 / 9.0;
299 const double qb0 = (11.0e0 - (2.0e0 / 3.0e0 * quarkFlavours)) / 4.0;
300 const double qb1 = (102.0e0 - (38.0e0 * quarkFlavours) / 3.0e0) / 16.0;
301 const double qb2 = (2.857e3 * 0.5 - (5.033e3 * quarkFlavours) / 18.0 +
302 (3.25e2 * sqr(quarkFlavours) ) / 5.4e1) / 64;
304 double qa0 = 0., qa1 = 0., qa2 = 0.;
310 qa1 = qb1 * sqr(INVPI);
313 qa2 = qb2 * sqr(INVPI) * INVPI;
330 double qg1 = 0., qg2 = 0., qg3 = 0.;
337 qg2 = (202.0 / 3.0 - (20.0e0 * quarkFlavours) / 9.0) * sqr(INVPI) / 16.0;
340 qg3 = (1.249e3 - ((2.216e3 * quarkFlavours) / 27.0e0 +
342 140.0e0 * quarkFlavours * quarkFlavours / 81.0e0) * sqr(INVPI) *
346 const double qcd = -2.0 *
a(
ALPHAS - 1) * (
348 const double qed = -
a(
ALPHA - 1) * INVPI / 2;
350 Eigen::Array<double,9,1> x(Eigen::Array<double,9,1>::Zero());
352 for (
int i = 0; i < 3; i++) {
353 x(i) = (qcd + 4.0 * qed / 3.0) *
mf(i);
355 for (
int i = 3; i < 6; i++) {
356 x(i) = (qcd + qed / 3.0) *
mf(i);
358 for (
int i = 6; i < 9; i++) {
359 x(i) = 3.0 * qed *
mf(i);
364 for(
int i = 0; i < x.size(); i++) {
383 "QedQcd::extractPoleMb called at scale "
422void QedQcd::to(
double scale,
double precision_goal,
int max_iterations) {
424 bool converged =
false;
425 auto qedqcd_old(
get()), qedqcd_new(
get());
426 const double running_precision = 0.1 * precision_goal;
428 while (!converged && it < max_iterations) {
463 qedqcd_old = qedqcd_new;
475 if (!converged && max_iterations > 0) {
477 "Iteration to determine SM(5) parameters did not"
478 " converge after " + std::to_string(max_iterations) +
479 " iterations (precision goal: " + std::to_string(precision_goal)
498 oneset.runto_safe(
scale);
500 const double aem = oneset.displayAlpha(
ALPHA);
501 const double MW = oneset.displayPoleMW();
502 const double MZ = oneset.displayPoleMZ();
503 const double sin2th = 1. - sqr(MW / MZ);
505 Eigen::Array<double,3,1> alpha(Eigen::Array<double,3,1>::Zero());
507 alpha(0) = 5.0 * aem / (3.0 * (1.0 - sin2th));
508 alpha(1) = aem / sin2th;
509 alpha(2) = oneset.displayAlpha(
ALPHAS);
521 const double eps = 1e-10;
int get_thresholds() const
virtual void run_to(double, double eps=-1.0)
void set_thresholds(int t)
double scale
current renormalization scale
void set_number_of_parameters(int pars)
No convergence while solving the RGEs.
Spectrum generator was not setup correctly.
Quark and lepton masses and gauge couplings in QEDxQCD effective theory.
static std::array< std::string, NUMBER_OF_LOW_ENERGY_INPUT_PARAMETERS > display_input_parameter_names()
returns vector of all parameter names
void setPMNS(const flexiblesusy::PMNS_parameters &)
sets PMNS parameters (in the MS-bar scheme at MZ)
double displayAlpha(EGauge ai) const
Returns a single gauge structure constant.
void runto_safe(double, double eps=-1.0)
throws if non-perturbative error occurs
double displayAlphaSInput() const
Returns input value alpha_s(MZ)
virtual Eigen::ArrayXd beta() const override
virtual Eigen::ArrayXd get() const override
flexiblesusy::CKM_parameters displayCKM() const
returns CKM parameters
double displayPoleMt() const
Display pole top mass.
double displayFermiConstant() const
Returns Fermi constant.
double qedBeta() const
QED beta function.
flexiblesusy::PMNS_parameters displayPMNS() const
returns PMNS parameters
void toMz()
Evolves object to MZ.
double mbPole
pole masses of third family quarks
Input_t input
SLHA input parmeters.
auto displayMass() const -> decltype(mf)
Returns a vector of running fermion masses.
double displayLeptonRunningMass(int) const
Returns a single charged lepton running mass, given a zero-based generation index i.
double displayMu2GeV() const
Returns mu(2 GeV)
double displayMbMb() const
Returns mb(mb) MSbar.
Eigen::Array< double, 9, 1 > mf
fermion running masses
double displayMs2GeV() const
Returns ms(2 GeV)
Eigen::Array< double, 9, 1 > massBeta() const
beta functions of masses
void setCKM(const flexiblesusy::CKM_parameters &)
sets CKM parameters (in the MS-bar scheme at MZ)
void setPoleMb(double mb)
set pole bottom mass
double displayNeutrinoPoleMass(int i) const
Returns a single neutrino pole mass.
double qcdBeta() const
QCD beta function.
void setMass(EMass mno, double m)
sets a running quark mass
Eigen::Array< double, 2, 1 > a
gauge couplings
double displayPoleMel() const
Display pole electron mass.
double displayPoleMmuon() const
Display pole muon mass.
int flavours(double) const
double displayPoleMb() const
Returns bottom "pole" mass.
double displayDownQuarkRunningMass(int) const
Returns a single down-quark running MS-bar mass, given a zero-based generation index i.
double displayPoleMtau() const
Display pole tau mass.
void to(double scale, double precision_goal=1e-5, int max_iterations=20)
Evolves object to given scale.
double extractPoleMb(double asMb)
returns number of active flavours
Eigen::Array< double, 3, 1 > guess_alpha_SM5(double scale) const
guess coupling constants {alpha_1, alpha_2, alpha_3} in SM(5)
virtual void set(const Eigen::ArrayXd &) override
double displayMcMc() const
Returns mc(mc) MSbar.
double displayLeptonPoleMass(int) const
Returns a single charged lepton pole mass, given a zero-based generation index i.
double displayPoleMZ() const
Returns Z boson pole mass.
double displayUpQuarkRunningMass(int) const
Returns a single up-quark running MS-bar mass, given a zero-based generation index i.
double displayPoleMW() const
Returns W boson pole mass.
double displayMd2GeV() const
Returns md(2 GeV)
double displayAlphaEmInput() const
Returns input value alpha_em(MZ)
void setAlpha(EGauge ai, double ap)
sets QED or QCD structure constant
QedQcd object contains Standard Model quark and lepton masses. It integrates them using 3 loop qcd x ...
std::string to_string(char a)
static constexpr double Pi
bool is_equal_rel(const Eigen::PlainObjectBase< Derived > &a, const Eigen::PlainObjectBase< Derived > &b, double eps)
static constexpr double zeta3
double getRunMt(double poleMt, double asmt)
double getAsmt(double mtop, double alphasMz, double mz)
double getRunMtFromMz(double poleMt, double asMZ, double mz)
Comment if you want default softsusy behaviour.
bool operator==(const QedQcd &a, const QedQcd &b)
std::ostream & operator<<(std::ostream &left, const QedQcd &m)
Formatted output from QedQcd object.
const std::array< std::string, NUMBER_OF_LOW_ENERGY_INPUT_PARAMETERS > QedQcd_input_parmeter_names