Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
WilsonParametersHelper.cpp
Go to the documentation of this file.
2#include "wcoef_ids.hpp"
3
5 if (!initialized) {
6 LOG_DEBUG("Initializing WilsonParameterHelper core blocks");
7 init_scale_independent_block(gen);
8 init_matching_block();
9 initialized = true;
10 }
11
12 if (initialized_running_groups.find(grp) != initialized_running_groups.end()) {
13 LOG_TRACE("WilsonParameterHelper already initialized for requested group");
14 return;
15 }
16
17 init_running_block(grp);
18 initialized_running_groups.emplace(grp);
19}
20
21void WilsonParameterHelper::init_scale_independent_block(int gen) {
22 LOG_DEBUG("Init scale-independent wparam block");
23 std::unordered_map<ParameterType, std::vector<std::string>> src = {{ParameterType::SM, {"SMINPUTS", "MASS"}}};
24
25 auto func = [gen] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
26 double xh = pow(src.get_val("MASS", 25) / src.get_val("MASS", 24), 2);
27 // MAJ : Valid only down to m_c
28 int nf = 5;
29 dep_block->store_or_assign(1, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_SI_SM", 1}, xh, 0., 0.));
30 dep_block->store_or_assign(2, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_SI_SM", 2}, gen, 0., 0.));
31 dep_block->store_or_assign(3, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_SI_SM", 3}, src.get_val("MASS", 9 + 2 * gen), 0., 0.));
32
33 // Store all charged-lepton masses independently so CQ/CPQ coefficients
34 // can be evaluated for e, mu and tau without mutating the global gen.
35 const int lepton_pdgs[3] = {11, 13, 15};
36 for (int i = 0; i < 3; ++i) {
38 dep_block->store_or_assign(slot, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_SI_SM", slot}, src.get_val("MASS", lepton_pdgs[i]), 0., 0.));
39 }
40
41 dep_block->store_or_assign(4, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_SI_SM", 4}, src.get_val("SMINPUTS", {7, 1}), 0., 0.));
42 dep_block->store_or_assign(5, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_SI_SM", 5}, 11.-2./3.*nf, 0., 0.));
43 };
44 iblock_c->compose_block("WPARAM_SI_SM", src, func);
45}
46
47void WilsonParameterHelper::init_matching_block() {
48 LOG_DEBUG("Init matching scale dependent wparam block");
49 std::unordered_map<ParameterType, std::vector<std::string>> src = {{ParameterType::SM, {"MASS", "QCD"}}, {ParameterType::WILSON, {"EW_SCALE"}}};
50
51 auto func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
52 LOG_DEBUG("Update wilson matching block");
53 double mu_W = src.get_val("EW_SCALE", 1);
54 double alphas_muW = QCDHelper::alpha_s(mu_W);
55
56 // printf("mu_W = %.5f\n", mu_W);
57 // printf("alpha_s(mu_W) = %.5f\n", alphas_muW);
58
59 double mass_top_muW = QCDHelper::msbar_mass(6, mu_W, MassType::MSBAR);
60 double mass_b_muW_mbrun = QCDHelper::msbar_mass(5, mu_W, MassType::MSBAR);
61 double mass_b_muW_mbpole = QCDHelper::msbar_mass(5, mu_W, MassType::POLE);
62 double mass_c_muW = QCDHelper::msbar_mass(4, mu_W, MassType::POLE);
63
64 double m_W = src.get_val("MASS", 24);
65 double xt = pow(mass_top_muW / m_W, 2);
66 double L = log(std::pow(mu_W / m_W, 2));
67 double xtW = pow(QCDHelper::msbar_mass(6, m_W) / m_W, 2); // mass top at pole for mtot param
68 double xtt = pow(src.get_val("QCD", 6) / m_W, 2.); // 24 -> W
69
70 dep_block->store_or_assign(1, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", 1}, alphas_muW, 0., 0.));
71 dep_block->store_or_assign(LhaID(2, 1), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(2, 1)}, xt, 0., 0.));
72 dep_block->store_or_assign(LhaID(2, 2), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(2, 2)}, std::pow(xt, 2), 0., 0.));
73 dep_block->store_or_assign(LhaID(2, 3), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(2, 3)}, std::pow(xt, 3), 0., 0.));
74 dep_block->store_or_assign(LhaID(2, 4), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(2, 4)}, std::pow(xt, 4), 0., 0.));
75 dep_block->store_or_assign(3, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", 3}, L, 0., 0.));
76 dep_block->store_or_assign(4, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", 4}, mass_c_muW, 0., 0.));
77 dep_block->store_or_assign(LhaID(5, 1), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 1)}, mass_b_muW_mbrun, 0., 0.));
78 dep_block->store_or_assign(LhaID(5, 2), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", LhaID(5, 2)}, mass_b_muW_mbpole, 0., 0.));
79 dep_block->store_or_assign(6, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", 6}, mass_top_muW, 0., 0.));
80 dep_block->store_or_assign(7, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", 7}, xtW, 0., 0.));
81 dep_block->store_or_assign(8, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_MATCH_SM", 8}, xtt, 0., 0.));
82
83 LOG_DEBUG("Update matching block");
84 };
85
86
87
88 iblock_c->compose_block("WPARAM_MATCH_SM", src, func);
89
90
91}
92
93void WilsonParameterHelper::init_running_parameter_blocks_B() {
94
95 LOG_DEBUG("Init running matrices blocks of B Coefficient group");
96 std::unordered_map<ParameterType, std::vector<std::string>> eta_powers_src = {{ParameterType::WILSON, {"WPARAM_RUN_SM"}}};
97
98 auto eta_powers_func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
99 double eta = src.get_val("WPARAM_RUN_SM", 2);
100 for (int i = 0; i < BRP::array_size; ++i) {
101 dep_block->store_or_assign(LhaID(1, i), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "ETA_POWS", LhaID(1, i)}, std::pow(eta, (BRP::ai)[i]), 0., 0.));
102 dep_block->store_or_assign(LhaID(2, i), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "ETA_POWS", LhaID(2, i)}, std::pow(eta, (BRP::ai2)[i]), 0., 0.));
103 }
104 };
105
106 std::unordered_map<ParameterType, std::vector<std::string>> mtx_src = {{ParameterType::WILSON, {"WPARAM_RUN_SM", "ETA_POWS"}}};
107
108 auto U_func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
109 double eta = src.get_val("WPARAM_RUN_SM", 2);
110 auto pid = [] (int n, int k, int l) {
111 return ParamId{ParameterType::WILSON, "U_MATRIX", LhaID(n, k, l)};
112 };
113
114 double U0, U1, U2;
115 double eta_ai;
116 using BRP = BRP;
117
118 for (int ke = 0; ke < BRP::array_size; ++ke) {
119 for (int le = 0; le < BRP::array_size; ++le) {
120 U0 = U1 = U2 = 0;
121 for (int ie = 0; ie < BRP::array_size; ++ie) {
122 eta_ai = src.get_val("ETA_POWS", LhaID(1, ie));
123 U0 += BRP::m00[ke][le][ie] * eta_ai;
124 U1 += (BRP::m10[ke][le][ie] + BRP::m11[ke][le][ie] / eta) * eta_ai;
125 U2 += (BRP::m20[ke][le][ie] + BRP::m21[ke][le][ie] / eta + BRP::m22[ke][le][ie] / (eta * eta)) * eta_ai;
126 }
127 dep_block->store_or_assign(LhaID(0, ke, le), std::make_shared<Parameter>(pid(0, ke, le), U0, 0., 0.));
128 dep_block->store_or_assign(LhaID(1, ke, le), std::make_shared<Parameter>(pid(1, ke, le), U1, 0., 0.));
129 dep_block->store_or_assign(LhaID(2, ke, le), std::make_shared<Parameter>(pid(2, ke, le), U2, 0., 0.));
130 }
131 }
132 };
133
134 auto V_func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
135 double eta = src.get_val("WPARAM_RUN_SM", 2);
136 auto pid = [] (int n, int k, int l) {
137 return ParamId{ParameterType::WILSON, "V_MATRIX", LhaID(n, k, l)};
138 };
139
140 double V0, V1;
141 double eta_ai;
142 using BRP = BRP;
143 for (int ke = 0; ke < BRP::array_size; ++ke) {
144 for (int le = 0; le < BRP::array_size; ++le) {
145 V0 = V1 = 0;
146 for (int ie = 0; ie < BRP::array_size; ++ie) {
147 eta_ai = src.get_val("ETA_POWS", LhaID(1, ie));
148 V0 += BRP::l00[ke][le][ie] * eta_ai;
149 V1 += (BRP::l10[ke][le][ie] + BRP::l11[ke][le][ie] / eta) * eta_ai;
150 }
151 dep_block->store_or_assign(LhaID(0, ke, le), std::make_shared<Parameter>(pid(0, ke, le), V0, 0., 0.));
152 dep_block->store_or_assign(LhaID(1, ke, le), std::make_shared<Parameter>(pid(1, ke, le), V1, 0., 0.));
153 }
154 }
155 };
156
157 iblock_c->compose_block("ETA_POWS", eta_powers_src, eta_powers_func);
158 iblock_c->compose_block("U_MATRIX", mtx_src, U_func);
159 iblock_c->compose_block("V_MATRIX", mtx_src, V_func);
160
161 LOG_VERBOSE("Running matrices updated");
162}
163
164void WilsonParameterHelper::init_running_parameter_blocks_MM() {
166}
167
168void WilsonParameterHelper::compose_meson_mixing_running_blocks(const std::shared_ptr<IBlockComposer>& iblock_c) {
169
170 LOG_DEBUG("Init running matrices blocks of Meson Mixing Coefficient group");
171 if (iblock_c->has_composed_block("ETA_POWS_MIXING")
172 && iblock_c->has_composed_block("UM_MATRIX_5")
173 && iblock_c->has_composed_block("UM_MATRIX_4")) {
174 LOG_TRACE("Meson-mixing running matrices already composed");
175 return;
176 }
177
178 std::unordered_map<ParameterType, std::vector<std::string>> eta_powers_src = {{ParameterType::WILSON, {"WPARAM_RUN_SM"}}};
179
180 auto eta_powers_func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
181 double eta5 = src.get_val("WPARAM_RUN_SM", 2);
182 double eta4 = src.get_val("WPARAM_RUN_SM", 3);
183
184 for (int i = 0; i < MMRP::n_pows; ++i) {
185 dep_block->store_or_assign(LhaID(1, i), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "ETA_POWS_MIXING", LhaID(1, i)}, std::pow(eta5, (MMRP::ai)[i]), 0., 0.));
186 dep_block->store_or_assign(LhaID(2, i), std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "ETA_POWS_MIXING", LhaID(2, i)}, std::pow(eta4, (MMRP::bi)[i]), 0., 0.));
187 }
188 };
189
190 std::unordered_map<ParameterType, std::vector<std::string>> mtx_src = {{ParameterType::WILSON, {"WPARAM_RUN_SM", "ETA_POWS_MIXING"}}};
191
192 auto U_5_func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
193 double eta_5 = src.get_val("WPARAM_RUN_SM", 2);
194 auto pid = [] (int n, int k, int l) {
195 return ParamId{ParameterType::WILSON, "UM_MATRIX_5", LhaID(n, k, l)};
196 };
197
199
200 double U0, U1;
201
202 double eta_V = src.get_val("ETA_POWS_MIXING", LhaID(1, 0));
203 U0 = MMRP::a0_V_5 * eta_V;
204 U1 = (MMRP::a1_V_5 + MMRP::b_V_5 * eta_5) * eta_V;
205 dep_block->store_or_assign(LhaID(0, 0, 0), std::make_shared<Parameter>(pid(0, 0, 0), U0, 0., 0.));
206 dep_block->store_or_assign(LhaID(0, 5, 5), std::make_shared<Parameter>(pid(0, 5, 5), U0, 0., 0.));
207 dep_block->store_or_assign(LhaID(1, 0, 0), std::make_shared<Parameter>(pid(1, 0, 0), U1, 0., 0.));
208 dep_block->store_or_assign(LhaID(1, 5, 5), std::make_shared<Parameter>(pid(1, 5, 5), U1, 0., 0.));
209
210 std::array<double, 2> eta_LR {
211 src.get_val("ETA_POWS_MIXING", LhaID(1, 1)),
212 src.get_val("ETA_POWS_MIXING", LhaID(1, 2)),
213 };
214
215 for (int i = 0; i < 2; ++i) {
216 for (int j = 0; j < 2; ++j) {
217 U0 = U1 = 0;
218 for (int k = 0; k < 2; ++k) {
219 U0 += MMRP::a0_LR_5[i][j][k] * eta_LR[k];
220 U1 += (MMRP::a1_LR_5[i][j][k] + MMRP::b_LR_5[i][j][k] * eta_5) * eta_LR[k];
221 }
222 dep_block->store_or_assign(LhaID(0, 1+i, 1+j), std::make_shared<Parameter>(pid(0, 1+i, 1+j), U0, 0., 0.));
223 dep_block->store_or_assign(LhaID(1, 1+i, 1+j), std::make_shared<Parameter>(pid(1, 1+i, 1+j), U1, 0., 0.));
224 }
225 }
226
227 std::array<double, 2> eta_S {
228 src.get_val("ETA_POWS_MIXING", LhaID(1, 3)),
229 src.get_val("ETA_POWS_MIXING", LhaID(1, 4)),
230 };
231
232 for (int i = 0; i < 2; ++i) {
233 for (int j = 0; j < 2; ++j) {
234 U0 = U1 = 0;
235 for (int k = 0; k < 2; ++k) {
236 U0 += MMRP::a0_S_5[i][j][k] * eta_S[k];
237 U1 += (MMRP::a1_S_5[i][j][k] + MMRP::b_S_5[i][j][k] * eta_5) * eta_S[k];
238 }
239 dep_block->store_or_assign(LhaID(0, 3+i, 3+j), std::make_shared<Parameter>(pid(0, 3+i, 3+j), U0, 0., 0.));
240 dep_block->store_or_assign(LhaID(1, 3+i, 3+j), std::make_shared<Parameter>(pid(1, 3+i, 3+j), U1, 0., 0.));
241 dep_block->store_or_assign(LhaID(0, 6+i, 6+j), std::make_shared<Parameter>(pid(0, 6+i, 6+j), U0, 0., 0.));
242 dep_block->store_or_assign(LhaID(1, 6+i, 6+j), std::make_shared<Parameter>(pid(1, 6+i, 6+j), U1, 0., 0.));
243 }
244 }
245 };
246
247 auto U_4_func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
248 double eta_5 = src.get_val("WPARAM_RUN_SM", 2);
249 double eta_4 = src.get_val("WPARAM_RUN_SM", 3);
250 auto pid = [] (int n, int k, int l) {
251 return ParamId{ParameterType::WILSON, "UM_MATRIX_4", LhaID(n, k, l)};
252 };
253
255
256 double U0, U1;
257
258 double eta_5_V = src.get_val("ETA_POWS_MIXING", LhaID(1, 0));
259 double eta_4_V = src.get_val("ETA_POWS_MIXING", LhaID(2, 0));
260 U0 = MMRP::a0_V_4 * eta_4_V * eta_5_V;
261 U1 = (MMRP::a1_V_4 + MMRP::b_V_4 * eta_4 + MMRP::c_V_4 * eta_4 * eta_5) * eta_4_V * eta_5_V;
262 dep_block->store_or_assign(LhaID(0, 0, 0), std::make_shared<Parameter>(pid(0, 0, 0), U0, 0., 0.));
263 dep_block->store_or_assign(LhaID(0, 5, 5), std::make_shared<Parameter>(pid(0, 5, 5), U0, 0., 0.));
264 dep_block->store_or_assign(LhaID(1, 0, 0), std::make_shared<Parameter>(pid(1, 0, 0), U1, 0., 0.));
265 dep_block->store_or_assign(LhaID(1, 5, 5), std::make_shared<Parameter>(pid(1, 5, 5), U1, 0., 0.));
266
267 std::array<double, 2> eta_5_LR {
268 src.get_val("ETA_POWS_MIXING", LhaID(1, 1)),
269 src.get_val("ETA_POWS_MIXING", LhaID(1, 2)),
270 };
271
272 std::array<double, 2> eta_4_LR {
273 src.get_val("ETA_POWS_MIXING", LhaID(2, 1)),
274 src.get_val("ETA_POWS_MIXING", LhaID(2, 2)),
275 };
276
277 for (int i = 0; i < 2; ++i) {
278 for (int j = 0; j < 2; ++j) {
279 U0 = U1 = 0;
280 for (int k = 0; k < 2; ++k) for (int l = 0; l < 2; ++l) {
281 U0 += MMRP::a0_LR_4[i][j][k][l] * eta_4_LR[k] * eta_5_LR[l];
282 U1 += (MMRP::a1_LR_4[i][j][k][l] + MMRP::b_LR_4[i][j][k][l] * eta_4 + MMRP::c_LR_4[i][j][k][l] * eta_4 * eta_5) * eta_4_LR[k] * eta_5_LR[l];
283 }
284 dep_block->store_or_assign(LhaID(0, 1+i, 1+j), std::make_shared<Parameter>(pid(0, 1+i, 1+j), U0, 0., 0.));
285 dep_block->store_or_assign(LhaID(1, 1+i, 1+j), std::make_shared<Parameter>(pid(1, 1+i, 1+j), U1, 0., 0.));
286 }
287 }
288
289 std::array<double, 2> eta_5_S {
290 src.get_val("ETA_POWS_MIXING", LhaID(1, 3)),
291 src.get_val("ETA_POWS_MIXING", LhaID(1, 4)),
292 };
293
294 std::array<double, 2> eta_4_S {
295 src.get_val("ETA_POWS_MIXING", LhaID(2, 3)),
296 src.get_val("ETA_POWS_MIXING", LhaID(2, 4)),
297 };
298
299 for (int i = 0; i < 2; ++i) {
300 for (int j = 0; j < 2; ++j) {
301 U0 = U1 = 0;
302 for (int k = 0; k < 2; ++k) for (int l = 0; l < 2; ++l) {
303 U0 += MMRP::a0_S_4[i][j][k][l] * eta_4_S[k] * eta_5_S[l];
304 U1 += (MMRP::a1_S_4[i][j][k][l] + MMRP::b_S_4[i][j][k][l] * eta_4 + MMRP::c_S_4[i][j][k][l] * eta_4 * eta_5) * eta_4_S[k] * eta_5_S[l];
305 }
306 dep_block->store_or_assign(LhaID(0, 3+i, 3+j), std::make_shared<Parameter>(pid(0, 3+i, 3+j), U0, 0., 0.));
307 dep_block->store_or_assign(LhaID(1, 3+i, 3+j), std::make_shared<Parameter>(pid(1, 3+i, 3+j), U1, 0., 0.));
308 dep_block->store_or_assign(LhaID(0, 6+i, 6+j), std::make_shared<Parameter>(pid(0, 6+i, 6+j), U0, 0., 0.));
309 dep_block->store_or_assign(LhaID(1, 6+i, 6+j), std::make_shared<Parameter>(pid(1, 6+i, 6+j), U1, 0., 0.));
310 }
311 }
312 };
313
314 iblock_c->compose_block("ETA_POWS_MIXING", eta_powers_src, eta_powers_func);
315 iblock_c->compose_block("UM_MATRIX_5", mtx_src, U_5_func);
316 iblock_c->compose_block("UM_MATRIX_4", mtx_src, U_4_func);
317}
318
319void WilsonParameterHelper::init_running_block(WGroupId grp) {
320 if (!running_block_initialized) {
321 LOG_DEBUG("Init running scale dependent wparam block");
322 std::unordered_map<ParameterType, std::vector<std::string>> src = {
323 {ParameterType::WILSON, {"EW_SCALE", "B_SCALE", "D_SCALE", "K_SCALE"}},
324 {ParameterType::SM, {"QCD", "MASS"}}
325 };
326
327 auto func = [] (const BlockSrc& src, std::shared_ptr<DependentBlock> dep_block) {
328 double alphas_mu_W = QCDHelper::alpha_s(src.get_val("EW_SCALE", 1));
329 double alphas_mu_b = QCDHelper::alpha_s(src.get_val("B_SCALE", 1));
330 double alphas_mu_c = QCDHelper::alpha_s(src.get_val("D_SCALE", 1));
331 double alphas_mu_s = QCDHelper::alpha_s(src.get_val("K_SCALE", 1));
332
333 double eta_5 = alphas_mu_W / alphas_mu_b;
334 double eta_4 = alphas_mu_b / alphas_mu_c;
335 double eta_3 = alphas_mu_c / alphas_mu_s;
336
337 dep_block->store_or_assign(1, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_RUN_SM", 1}, alphas_mu_b, 0., 0.));
338 dep_block->store_or_assign(2, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_RUN_SM", 2}, eta_5, 0., 0.));
339 dep_block->store_or_assign(3, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_RUN_SM", 3}, eta_4, 0., 0.));
340 dep_block->store_or_assign(4, std::make_shared<Parameter>(ParamId{ParameterType::WILSON, "WPARAM_RUN_SM", 4}, eta_3, 0., 0.));
341 };
342
343 iblock_c->compose_block("WPARAM_RUN_SM", src, func);
344 running_block_initialized = true;
345 }
346
347 if (grp == GroupMapper::to_id(WGroup::B)
350 if (!b_running_matrices_initialized) {
351 init_running_parameter_blocks_B();
352 b_running_matrices_initialized = true;
353 }
354 } else if (grp == GroupMapper::to_id(WGroup::MESON_MIXING)) {
355 // Meson-mixing matrices are composed by GroupDef_MesonMixing::Setup_Mixing_RunningMatrices.
356 } else {
357 LOG_TRACE("No additional Wilson running-matrix blocks needed for requested group");
358 }
359}
360
362 initialized = false;
363 running_block_initialized = false;
364 b_running_matrices_initialized = false;
365 initialized_running_groups.clear();
366}
@ MESON_MIXING
#define LOG_TRACE(...)
Macro for logging trace messages.
Definition Logger.h:46
#define LOG_DEBUG(...)
Macro for logging debug messages.
Definition Logger.h:45
#define LOG_VERBOSE(...)
Macro for logging verbose messages.
Definition Logger.h:47
BWilsonRunningParameters BRP
Lightweight view over a set of source blocks.
Definition SourcesView.h:71
scalar_t get_val(std::string_view blk, std::initializer_list< long > code) const
Retrieves the value of a parameter given as an initializer_list.
bool initialized
Tracks whether the helper has already been initialized.
std::shared_ptr< IBlockComposer > iblock_c
Block composer (dependency engine) used to register dependent blocks.
static double alpha_s(double mu, MassType mass_b_type=MassType::POLE, MassType mass_t_type=MassType::POLE)
Computes the strong coupling constant α_s at scale μ.
Definition QCDHelper.cpp:52
static double msbar_mass(int pdg_code, double mu, MassType mass_b_type=MassType::POLE, MassType mass_t_type=MassType::POLE)
Computes the MS-bar running mass of a quark at scale μ.
Definition QCDHelper.cpp:64
Returns an uppercase copy of the input string.
static constexpr int lepton_mass_slot_from_index(int lepton_index)
void cleanup() override
Resets the helper internal state.
void init(int gen, WGroupId grp) override
Initializes all required SM Wilson helper blocks.
static void compose_meson_mixing_running_blocks(const std::shared_ptr< IBlockComposer > &iblock_c)
Composes the meson-mixing evolution matrices.
scalar_t pow(const scalar_t &base, const scalar_t &exp)
Definition scalar.cpp:75
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > m21
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > l11
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > l10
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > m22
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > m10
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > m20
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > m11
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > m00
static constexpr std::array< double, array_size > ai
static constexpr std::array< double, array_size > ai2
static const std::array< std::array< std::array< double, array_size >, array_size >, array_size > l00
Represents an identifier of a LHA element, possibly containing several sub-ids.
Definition LhaID.h:56
static constexpr std::array< double, n_pows > bi
Exponents for nf=4 evolution (eta_4^bi).
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > c_S_4
static const std::array< std::array< std::array< double, 2 >, 2 >, 2 > a1_LR_5
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > a1_LR_4
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > a0_S_4
static const std::array< std::array< std::array< double, 2 >, 2 >, 2 > a0_S_5
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > a0_LR_4
static const std::array< std::array< std::array< double, 2 >, 2 >, 2 > a1_S_5
static constexpr std::array< double, n_pows > ai
Exponents for nf=5 evolution (eta_5^ai).
static const std::array< std::array< std::array< double, 2 >, 2 >, 2 > a0_LR_5
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > a1_S_4
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > b_LR_4
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > c_LR_4
static const std::array< std::array< std::array< double, 2 >, 2 >, 2 > b_LR_5
static const std::array< std::array< std::array< double, 2 >, 2 >, 2 > b_S_5
static const std::array< std::array< std::array< std::array< double, 2 >, 2 >, 2 >, 2 > b_S_4
static constexpr int n_pows
Number of exponent entries stored in ai / bi (for eta power vectors).
Composite identifier for a single parameter.
Definition ParamID.h:57