Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
BaseQCDfCalculator.h
Go to the documentation of this file.
1#ifndef BASEQCDFCALCULATOR_H
2#define BASEQCDFCALCULATOR_H
3
4#include "Include.h"
5#include "IObsQCDProxy.h"
7
8enum class B_FF_Type {FULL, SOFT};
9
11protected:
12 double mu_b, L_b;
14 double m_Bd, m_B, m_X;
15 double f_B, f_X_par, f_X_perp {0}, f_X_perp_b {0};
16 double z_c, z_c_IA;
17 double Delta_M;
18 double e_q;
19 double Lambda_h;
23 double zeta_3_A {0}, zeta_3_V {0}, omega_10_A {0}, delta_t_p {0}, delta_t_m {0};
24 double lambda_B_p;
25 double pref_perp {0}, pref_par;
28 std::map<WCoef, complex_t> C;
29 std::map<WCoef, complex_t> C_bar;
30
31 double delta_qu;
33 std::string src_block;
34
35 std::shared_ptr<IObsQCDProxy> iobs_qcdp;
36
37 static inline constexpr double e_u = 2. / 3;
38 static inline constexpr double e_d = -1. / 3;
39 static inline constexpr std::array<std::array<double, 6>, 6> P_bar {{
40 { 0.5000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000},
41 {-0.1667, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000},
42 { 0.0000, 0.0000, 1.0000, -0.1667, 16.000, -2.6667},
43 { 0.0000, 0.0000, 0.0000, 0.5000, 0.0000, 8.0000},
44 { 0.0000, 0.0000, 1.0000, -0.1667, 4.0000, -0.6667},
45 { 0.0000, 0.0000, 0.0000, 0.5000, 0.0000, 2.0000}
46 }};
47
48 static inline const std::map<LhaID, std::string> allowed_decays {
49 {{511, 311}, "B_K"},
50 {{521, 321}, "B_K"},
51 {{511, 313}, "B_Ks"},
52 {{521, 323}, "B_Ks"},
53 {{531, 333}, "B_phi"}
54 };
55
56public:
57 BaseQCDfCalculator() = default;
58 BaseQCDfCalculator(int B_id, int V_id, double mu_b, const std::map<WCoef, complex_t>& C, B_FF_Type ff_tp,
60 std::shared_ptr<IObsQCDProxy> iobs_qcdp);
61
63
64 complex_t Y(double q2);
65
66protected:
67 double gamma_perp(int n) { return 4. * iobs_qcdp->get_constants()->C_F * (psi(n + 1) + GAMMA - 1. + 1. / (n + 1)); };
68 double gamma_par(int n) { return 4. * iobs_qcdp->get_constants()->C_F * (psi(n + 2) + GAMMA - .75 - 1. /(2. * (n + 1) * (n + 2))); };
69
70 double E(double q2);
71 double phi_X(double u, double a1, double a2);
72 double gv_dga_4(double u);
73 complex_t F_V(double v, bool bar);
74 complex_t Y_u(double q2);
75 double L(double q2);
76 complex_t inv_lambda_B_m(double q2);
77
78 complex_t C_perp_0(double q2, double sign, bool bar);
79 complex_t C_par_0(double q2, double sign, bool bar);
80 complex_t C_perp_f(double q2, double sign, bool bar);
81 complex_t C_par_f(double q2, double sign, bool bar);
82 complex_t C_perp_nf(double q2, bool bar);
83 complex_t C_par_nf(double q2, bool bar);
84
85 complex_t t_perp(double u, double m_q, double q2, double E_Kstar);
86 complex_t t_par(double u, double m_q, double q2, double E_Kstar);
87 complex_t T_par_m_0(bool bar);
88 complex_t T_par_p_p_f(double u, double q2, bool bar);
89 complex_t T_par_p_m_f(double u, double q2, bool bar);
90 complex_t T_perp_p_p_f(double u, double q2, bool bar);
91 complex_t T_perp_p_m_f(double u, double q2, bool bar);
92 complex_t T_perp_p_nf(double u, double q2, bool bar);
93 complex_t T_par_p_nf(double u, double q2, bool bar);
94 complex_t T_par_m_nf(double u, double q2, bool bar);
95
96 complex_t I_perp_p(double q2, bool bar);
97 complex_t I_perp_m(double q2, bool bar);
98 complex_t I_par_p(double q2, bool bar);
99 complex_t I_par_m(double q2, bool bar);
100};
101
102#endif // BASEQCDFCALCULATOR_H
Interface for read-only access to parameters used by observable computations.
Interface for accessing QCD-derived quantities from the observable layer.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
complex_t t_perp(double u, double m_q, double q2, double E_Kstar)
complex_t inv_lambda_B_m(double q2)
complex_t I_perp_m(double q2, bool bar)
BaseQCDfCalculator()=default
complex_t C_par_0(double q2, double sign, bool bar)
double phi_X(double u, double a1, double a2)
complex_t C_par_nf(double q2, bool bar)
complex_t T_par_m_nf(double u, double q2, bool bar)
static constexpr double e_u
complex_t T_par_p_p_f(double u, double q2, bool bar)
std::shared_ptr< IObsQCDProxy > iobs_qcdp
static constexpr double e_d
complex_t T_perp_p_p_f(double u, double q2, bool bar)
complex_t Y(double q2)
std::map< WCoef, complex_t > C_bar
double gv_dga_4(double u)
static constexpr std::array< std::array< double, 6 >, 6 > P_bar
complex_t C_perp_0(double q2, double sign, bool bar)
complex_t T_par_m_0(bool bar)
complex_t I_par_p(double q2, bool bar)
complex_t F_V(double v, bool bar)
complex_t C_perp_nf(double q2, bool bar)
complex_t T_perp_p_nf(double u, double q2, bool bar)
complex_t t_par(double u, double m_q, double q2, double E_Kstar)
complex_t T_par_p_nf(double u, double q2, bool bar)
complex_t C_par_f(double q2, double sign, bool bar)
complex_t T_perp_p_m_f(double u, double q2, bool bar)
complex_t I_par_m(double q2, bool bar)
std::map< WCoef, complex_t > C
complex_t Y_u(double q2)
complex_t I_perp_p(double q2, bool bar)
complex_t T_par_p_m_f(double u, double q2, bool bar)
complex_t C_perp_f(double q2, double sign, bool bar)
static const std::map< LhaID, std::string > allowed_decays
constexpr double GAMMA
Definition constants.h:17
constexpr double E
Definition constants.h:13
double psi(int n)