5 std::unordered_map<ParameterType, std::vector<std::string>> src = {{
ParameterType::SM, {
"SMINPUTS",
"MASS"}}};
7 auto func = [] (
const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
8 double m_Z = src.get_val(
"SMINPUTS" , 4);
9 double alpha_s_mZ = src.get_val(
"SMINPUTS" , 3);
10 double m_b_mb = src.get_val(
"SMINPUTS" , 5);
11 double m_t_pole = src.get_val(
"SMINPUTS" , 6);
12 double m_c = src.get_val(
"MASS" , 4);
17 double lambda_5 = match_lambda(alpha_s_mZ, m_Z, 5);
18 double lambda_6_mt_pole = match_lambda(alpha_s_explicit(m_t_pole, lambda_5, 5), m_t_pole, 6);
19 double lambda_4_mb_mb = match_lambda(alpha_s_explicit(m_b_mb, lambda_5, 5), m_b_mb, 4);
20 double lambda_3_mb_mb = match_lambda(alpha_s_explicit(m_c, lambda_4_mb_mb, 4), m_c, 3);
21 double m_t_mt = calc_mt_mt(lambda_6_mt_pole, lambda_5);
22 double lambda_6_mt_mt = match_lambda(alpha_s_explicit(m_t_mt, lambda_5, 5), m_t_mt, 6);
23 double m_b_pole = calc_mb_pole(lambda_5);
24 double m_b_pole_one_loop = calc_mb_pole_one_loop(lambda_5);
25 double lambda_4_mb_pole = match_lambda(alpha_s_explicit(m_b_pole, lambda_5, 5), m_b_pole, 4);
26 double lambda_3_mb_pole = match_lambda(alpha_s_explicit(m_c, lambda_4_mb_pole, 4), m_c, 3);
27 double m_b_1S = calc_mb_1S(lambda_4_mb_pole, m_b_pole);
28 double m_c_pole = calc_mc_pole(lambda_4_mb_mb);
29 double m_c_pole_one_loop = calc_mc_pole_one_loop(lambda_4_mb_mb);
30 double m_b_kin = calc_mb_kinematic(m_b_mb, lambda_3_mb_mb);
32 dep_block->store_or_assign(
LhaID(1, 3, 1), std::make_shared<Parameter>(
ParamId{
ParameterType::SM,
"QCD",
LhaID(1, 3, 1)}, lambda_3_mb_mb, 0., 0.));
33 dep_block->store_or_assign(
LhaID(1, 3, 2), std::make_shared<Parameter>(
ParamId{
ParameterType::SM,
"QCD",
LhaID(1, 3, 2)}, lambda_3_mb_pole, 0., 0.));
34 dep_block->store_or_assign(
LhaID(1, 4, 1), std::make_shared<Parameter>(
ParamId{
ParameterType::SM,
"QCD",
LhaID(1, 4, 1)}, lambda_4_mb_mb, 0., 0.));
35 dep_block->store_or_assign(
LhaID(1, 4, 2), std::make_shared<Parameter>(
ParamId{
ParameterType::SM,
"QCD",
LhaID(1, 4, 2)}, lambda_4_mb_pole, 0., 0.));
37 dep_block->store_or_assign(
LhaID(1, 6, 1), std::make_shared<Parameter>(
ParamId{
ParameterType::SM,
"QCD",
LhaID(1, 6, 1)}, lambda_6_mt_mt, 0., 0.));
38 dep_block->store_or_assign(
LhaID(1, 6, 2), std::make_shared<Parameter>(
ParamId{
ParameterType::SM,
"QCD",
LhaID(1, 6, 2)}, lambda_6_mt_pole, 0., 0.));
65 if (pdg_code > 6 || pdg_code < 1) {
66 LOG_ERROR(
"ValueError",
"PDG code", pdg_code,
"is not a quark");
70 double quark_mass = pdg_code < 5 ? (*p)(
"MASS", pdg_code) : pdg_code == 5 ? (*p)(
"QCD",
LhaID(5, 1)) : (*p)(
"QCD", 6);
71 double Qinit = pdg_code < 4 ? 1 : quark_mass;
73 int n_i =
get_nf(Qinit, mass_b_type, mass_t_type);
74 int n_f =
get_nf(mu, mass_b_type, mass_t_type);
75 auto Q_bounds = getOrderedMasses(mass_b_type, mass_t_type);
81 quark_mass = runMass(quark_mass, Qinit, Q_bounds.at(n_i - 1), n_i, mass_b_type, mass_t_type);
82 Qinit = Q_bounds.at(n_i - 1);
87 quark_mass = runMass(quark_mass, Qinit, Q_bounds.at(n_i), n_i, mass_b_type, mass_t_type);
88 Qinit = Q_bounds.at(n_i);
92 return runMass(quark_mass, Qinit, mu, n_f, mass_b_type, mass_t_type);