Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
BScalarWilson.cpp
Go to the documentation of this file.
1#include "BScalarWilson.h"
2
3// ---------- CQ1 ----------
4
8 {
9 {"WPARAM_MATCH_SM", {2, 1}}, // x_t
10 {"WPARAM_MATCH_SM", {5, 1}}, // m_b(muW) ?! (voir ASK)
11 {"WPARAM_SI_SM", 1}, // xh
12 {"WPARAM_SI_SM", lepton_mass_slot}, // ml(e/mu/tau)
13 {"WPARAM_SI_SM", 4}, // sw2
14 {ParameterType::SM, "MASS", 24} // m_W
15 },
16 [lepton_mass_slot](const ParamSrc& src) { return compute_LO(src, lepton_mass_slot); },
18 };
19
21
23}
24
28
29double CQ1::compute_LO(const ParamSrc& src, int lepton_mass_slot) {
30 double xt = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {2, 1});;
31 double mb_muW = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});; // ASK : Why {5,2} and not {5,1} ?
32 double xh = src.get_val(ParameterType::WILSON, "WPARAM_SI_SM", 1);;
33 double ml = src.get_val(ParameterType::WILSON, "WPARAM_SI_SM", lepton_mass_slot);;
34 double sw2 = src.get_val(ParameterType::WILSON, "WPARAM_SI_SM", 4);;
35 double mW = src.get_val(ParameterType::SM, "MASS", 24);;
36
37 // printf("\n----- In CQ1 -----\n");
38 // printf("xt = %.4e\n", xt);
39 // printf("mb_muW = %.4e\n", mb_muW);
40 // printf("xh = %.4e\n", xh);
41 // printf("ml = %.4e\n", ml);
42 // printf("sw2 = %.4e\n", sw2);
43 // printf("mW = %.4e\n", mW);
44
45 double CSc_SM = -xt * (xt - 2.) / 12. / pow(xt - 1., 2)
46 + (xt - 2.) * (3. * xt - 1.) / 24. / pow(xt - 1., 3.) * log(xt);
47
48 double CSn_SMonly = -3. * xt / 8. / xh + xt * F0SP(xt);
49
50 double coeff_temp = (CSc_SM + CSn_SMonly) * (ml * mb_muW / (mW * mW)) / sw2;
51
52 // printf("CSc = %.4e\n", CSc_SM);
53 // printf("CSn = %.4e\n", CSn_SMonly);
54 // printf("CQ1 = %.4e\n", coeff_temp);
55
56 return coeff_temp;
57}
58
59// ---------- CQ2 ----------
60
64 {
65 {"WPARAM_MATCH_SM", {2, 1}}, // xt
66 {"WPARAM_MATCH_SM", {2, 2}}, // xt^2
67 {"WPARAM_MATCH_SM", {2, 3}}, // xt^3
68 {"WPARAM_MATCH_SM", {2, 4}}, // xt^4
69 {"WPARAM_MATCH_SM", {5, 1}}, // m_b(muW)
70 {"WPARAM_SI_SM", lepton_mass_slot}, // ml(e/mu/tau)
71 {"WPARAM_SI_SM", 4}, // sw2
72 {ParameterType::SM, "MASS", 24} // m_W
73 },
74 [lepton_mass_slot](const ParamSrc& src) { return compute_LO(src, lepton_mass_slot); },
76 };
77
79
81}
82
86
87double CQ2::compute_LO(const ParamSrc& src, int lepton_mass_slot) {
88 double xt = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {2, 1});
89 double xt2 = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {2, 2});
90 double xt3 = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {2, 3});
91 double xt4 = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {2, 4});
92 double mb = src.get_val(ParameterType::WILSON, "WPARAM_MATCH_SM", {5, 1});
93 double ml = src.get_val(ParameterType::WILSON, "WPARAM_SI_SM", lepton_mass_slot);
94 double sw2 = src.get_val(ParameterType::WILSON, "WPARAM_SI_SM", 4);
95 double mW = src.get_val(ParameterType::SM, "MASS", 24);
96
97 // printf("\n----- In CQ2 -----\n");
98 // printf("xt = %.4e\n", xt);
99 // printf("mb = %.4e\n", mb);
100 // printf("ml = %.4e\n", ml);
101 // printf("sw2 = %.4e\n", sw2);
102 // printf("mW = %.4e\n", mW);
103
104 double CPc_SM =
105 1. / 24. * (
106 xt * (36. * xt3 - 203. * xt2 + 352. * xt - 209.) / 6. / pow(xt - 1., 3.)
107 + (17. * xt4 - 34. * xt3 + 4. * xt2 + 23. * xt - 6.) / pow(xt - 1., 4.) * log(xt)
108 )
109 - sw2 / 36. * (
110 xt * (18. * xt3 - 139. * xt2 + 274. * xt - 129.) / 2. / pow(xt - 1., 3.)
111 + (24. * xt4 - 33. * xt3 - 45. * xt2 + 50. * xt - 8.) / pow(xt - 1., 4.) * log(xt)
112 );
113
114 double CPn_SMonly = 0.;
115
116 // printf("CPc = %.4e\n", CPc_SM);
117 // printf("CPn = %.4e\n", CPn_SMonly);
118 // printf("CQ2 = %.4e\n", (CPc_SM + CPn_SMonly) * (ml * mb / (mW * mW)) / sw2);
119
120 return (CPc_SM + CPn_SMonly) * (ml * mb / (mW * mW)) / sw2;
121}
ScaleType
WCoef
WGroup
CQ1(WCoef coef=WCoef::CQ1_MU)
static double compute_LO(const ParamSrc &src)
CQ2(WCoef coef=WCoef::CQ2_MU)
static double compute_LO(const ParamSrc &src)
Mapper for WGroup <-> WGroupId <-> optional external string.
Lightweight view over a set of source parameters keyed by ParamId.
scalar_t get_val(const ParamId &id) const
Retrieves the current value of a parameter.
High-level mapper for WCoef <-> text <-> FLHA base indices.
Definition wcoef_ids.hpp:57
static constexpr int lepton_mass_slot_from_index(int lepton_index)
static int lepton_index_from_cq1(WCoef coef)
static int lepton_index_from_cq2(WCoef coef)
Abstract base class representing a Wilson coefficient and its matching information.
Definition Wilson.h:153
LhaID get_lhaid_from_name(QCDOrder order)
Computes the LhaID directly from the coefficient base name and mapping conventions.
Definition Wilson.cpp:61
std::map< QCDOrder, MatchingInfo > matching_info
Matching metadata indexed by QCD order.
Definition Wilson.h:330
scalar_t pow(const scalar_t &base, const scalar_t &exp)
Definition scalar.cpp:75
double F0SP(double xt)
Wilson coefficient F0SP depending on xt.
Matching metadata for a Wilson coefficient at a specific QCD order.
Definition Wilson.h:62