Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
BXsllDecay.h
Go to the documentation of this file.
1#ifndef __BXSLLDECAY_H__
2#define __BXSLLDECAY_H__
3
4#include "DecayParent.h"
5#include "ObsQCDProxy.h"
6#include "Include.h"
7#include "Math.h"
8#include "DefaultConfig.h"
9
10struct BXsllConfig : public DecayConfig {
11 enum class Lepton {E, MU, TAU};
13};
14
16 double alpha_em;
17 double m_b_1S;
19 double z;
20 double L_b, L_b_5GeV, L_l;
25
26 std::array<double, 3> rand_err;
27
28 std::map<WCoef, complex_t> C;
29 std::map<WCoef, complex_t> C_LO;
30
31 std::array<complex_t, 100> F_17_lookup;
32 std::array<complex_t, 100> F_27_lookup;
33 std::array<complex_t, 100> F_19_lookup;
34 std::array<complex_t, 100> F_29_lookup;
35 std::array<double, 100> delta_brems_lookup;
36
37 std::array<double, 6> cc_res_mass;
38 std::array<double, 6> cc_res_br;
39 std::array<double, 6> cc_res_width_tot;
40 std::array<double, 6> cc_res_width_had;
41};
42
46class BXsllDecay : public DecayParentConfigurable<BXsllConfig> {
47
48private:
49 BXsllDecayCache cache;
50 BXsllConfig cfg;
51
52protected:
53 // utility
55 void fill_wilson_cache();
57
58 double f(double z);
59 double h(double z);
60 double g_rho(double z);
61 double g_lambda(double z);
62 double kappa(double z);
63
64 double f_7(double s);
65 double f_9(double s);
66
67 complex_t Gm1(double t);
68 complex_t G0(double t);
69 complex_t Delta_i_23(double s, double z, double w);
70 complex_t Delta_i_27(double s, double z, double w);
71 double tau_22(double s, double w, complex_t Delta_23, complex_t Delta_27);
72 complex_t tau_27(double s, double w, complex_t Delta_23, complex_t Delta_27);
73 complex_t tau_28(double s, double w, complex_t Delta_23, complex_t Delta_27);
74 complex_t tau_29(double s, double w, complex_t Delta_23, complex_t Delta_27);
75 double tau_77(double s);
76 double tau_78(double s);
77 double tau_88(double s);
78 double tau_89(double s);
79 double tau_99(double s);
80 double tau_79(double s);
81 complex_t tau_210(double s, double z);
82 double tau_710(double s);
83 double tau_810(double s);
84 double tau_910(double s);
85 double sigma(double s);
86 double sigma_9(double s);
87 double sigma_7(double s, double L_mu);
88 complex_t F(double r);
89
90 complex_t Sigma_1(double s);
91 double Sigma_2(double s);
92 complex_t Sigma_3(double s);
93 complex_t Sigma_7(double s, double z);
94 double omega_22(double s, double L_l);
95 complex_t omega_27(double s, double L_l);
96 complex_t omega_29(double s, double L_l);
97 complex_t omega_210(double s, double L_l, double z);
98 double omega_77(double s, double L_l);
99 double omega_79(double s, double L_l);
100 double omega_710(double s, double L_l);
101 double omega_99(double s, double L_l);
102 double omega_910(double s, double L_l);
103 double omega_1010(double s, double L_l);
104
105 complex_t g(double z, double s);
106 double breit_wigner(double s, double m_V, double br, double gamma_tot, double gamma_had);
107 double PV_breit_wigner(double s, double m_V, double br, double gamma_tot, double gamma_had);
108 double PV_R_cc_cont(double s);
109 double R_cc(double s);
110 double R_cc_cont(double s);
111 double PV_R_cc(double s);
112 complex_t g_ld(double z, double s);
113 complex_t C9_eff(double s, QCDOrder order, bool prime);
114
115 complex_t F_17(double s);
116 complex_t F_27(double s);
117 complex_t F_19(double s);
118 complex_t F_29(double s);
119
120 complex_t C7_new(double s, bool prime);
121 complex_t C9_new(double s, bool prime);
122 complex_t C10_new(double s, bool prime);
123
124 double W_7(double s);
125 double W_9(double s);
126 double W_10(double s);
127 complex_t W_27(double s);
128 complex_t W_29(double s);
129 complex_t W_210(double s);
130 double W_79(double s);
131 double W_710(double s);
132 double W_910(double s);
133
134 double dB0_ds(double s, double ml_hat);
135 double delta_mb2(double s);
136 double delta_mb3(double s);
137 double delta_mc2(double s);
138 double delta_bremA(double s);
139 double delta_bremB_base(double s);
140 double delta_bremB(double s);
141 double delta_em(double s, double L_l);
142 double dB_ds(double s, double ml_hat, double L_l);
143
144 double A_FB_0(double s, double ml_hat);
145 double delta_A_mb2(double s);
146 double delta_A_mc2(double s);
147 double delta_A_brem(double s);
148 double delta_A_em(double s, double L_l);
149 double A_FB(double s, double ml_hat, double L_l);
150
151 std::vector<ObservableValue> BR_B_Xsll(Observables oid);
152 std::vector<ObservableValue> A_FB_B_Xsll(Observables oid);
153
154public:
155 BXsllDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig& ports) : DecayParentConfigurable(DecayMapper::to_id(Decays::B__Xs_l_l), matching_scale, hadronic_scale, order, ports) {
158 this->binned = true;
159 this->cache = BXsllDecayCache {};
160 }
161
162 void load_params() override;
163 std::vector<ObservableValue> compute_observable(Observables obs) override;
164 std::vector<ObservableValue> compute_observable(ObservableId obs) override;
165 void set_config_spe(BXsllConfig config) override {this->cfg = config;}
166};
167
168#endif // __BXSLLDECAY_H__
Base class for observable/decay computation modules.
Observables
Definition GeneralEnum.h:4
QCDOrder
Decays
Default observable-layer implementation of IObsQCDProxy.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
Decay parent for the inclusive B > X_s l+ l- decays. Implements the integrated branching ratio in bot...
Definition BXsllDecay.h:46
complex_t omega_27(double s, double L_l)
complex_t F_19(double s)
double omega_79(double s, double L_l)
double g_lambda(double z)
complex_t W_29(double s)
complex_t G0(double t)
double W_7(double s)
complex_t F_29(double s)
complex_t C7_new(double s, bool prime)
double W_79(double s)
complex_t g_ld(double z, double s)
double delta_bremB(double s)
double delta_mc2(double s)
double omega_910(double s, double L_l)
double f(double z)
double delta_em(double s, double L_l)
double f_9(double s)
void load_cfg_dep_params()
complex_t omega_29(double s, double L_l)
double delta_bremA(double s)
double f_7(double s)
double tau_810(double s)
double dB0_ds(double s, double ml_hat)
double tau_77(double s)
double breit_wigner(double s, double m_V, double br, double gamma_tot, double gamma_had)
double delta_mb2(double s)
double delta_A_em(double s, double L_l)
complex_t omega_210(double s, double L_l, double z)
double kappa(double z)
double W_9(double s)
complex_t C9_eff(double s, QCDOrder order, bool prime)
double sigma_7(double s, double L_mu)
double sigma(double s)
complex_t tau_29(double s, double w, complex_t Delta_23, complex_t Delta_27)
complex_t Sigma_3(double s)
double tau_710(double s)
complex_t F_17(double s)
double PV_R_cc_cont(double s)
complex_t Delta_i_27(double s, double z, double w)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
void fill_wilson_cache()
complex_t W_27(double s)
complex_t W_210(double s)
double W_710(double s)
double A_FB_0(double s, double ml_hat)
double h(double z)
complex_t F(double r)
void set_cfg_flags(BXsllConfig::Lepton gen)
double delta_A_mb2(double s)
BXsllDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
Definition BXsllDecay.h:155
double R_cc_cont(double s)
complex_t tau_210(double s, double z)
double PV_R_cc(double s)
double dB_ds(double s, double ml_hat, double L_l)
double tau_78(double s)
complex_t Sigma_7(double s, double z)
void load_params() override
Load and cache parameters needed by this decay.
Definition BXsllDecay.cpp:4
double tau_910(double s)
double W_10(double s)
double omega_1010(double s, double L_l)
complex_t Gm1(double t)
double tau_22(double s, double w, complex_t Delta_23, complex_t Delta_27)
complex_t C10_new(double s, bool prime)
double tau_99(double s)
double W_910(double s)
std::vector< ObservableValue > BR_B_Xsll(Observables oid)
double tau_89(double s)
double R_cc(double s)
void set_config_spe(BXsllConfig config) override
Strongly-typed configuration setter to implement in derived classes.
Definition BXsllDecay.h:165
double omega_99(double s, double L_l)
double tau_88(double s)
double delta_A_mc2(double s)
double delta_mb3(double s)
std::vector< ObservableValue > A_FB_B_Xsll(Observables oid)
complex_t Sigma_1(double s)
complex_t tau_27(double s, double w, complex_t Delta_23, complex_t Delta_27)
double omega_77(double s, double L_l)
double omega_710(double s, double L_l)
double omega_22(double s, double L_l)
double Sigma_2(double s)
double g_rho(double z)
double sigma_9(double s)
complex_t C9_new(double s, bool prime)
double PV_breit_wigner(double s, double m_V, double br, double gamma_tot, double gamma_had)
double tau_79(double s)
complex_t Delta_i_23(double s, double z, double w)
double delta_A_brem(double s)
double A_FB(double s, double ml_hat, double L_l)
double delta_bremB_base(double s)
complex_t tau_28(double s, double w, complex_t Delta_23, complex_t Delta_27)
complex_t F_27(double s)
Mapper for decay names, dynamic ids and observable membership.
Definition decay_ids.hpp:88
Typed configuration adapter for DecayParent using std::any.
bool binned
Whether this decay requires q² bins before its observables can be computed.
WilsonBuildConfig w_config
Wilson build configuration used when enabling this decay (scales, order, groups).
ObservablePortsConfig & ports
Reference to the ports/configuration wiring this decay to the framework.
Definition DecayParent.h:93
QCDOrder max_order
Maximum QCD order supported by this decay module (default: LO).
Definition DecayParent.h:90
constexpr double g
Lepton gen
Definition BXsllDecay.h:12
std::array< complex_t, 100 > F_29_lookup
Definition BXsllDecay.h:34
double pref_delta_mc2
Definition BXsllDecay.h:24
std::array< double, 100 > delta_brems_lookup
Definition BXsllDecay.h:35
double pref_delta_mb2
Definition BXsllDecay.h:24
std::array< double, 3 > rand_err
Definition BXsllDecay.h:26
std::array< double, 6 > cc_res_width_had
Definition BXsllDecay.h:40
std::array< complex_t, 100 > F_27_lookup
Definition BXsllDecay.h:32
double pref_delta_mb3
Definition BXsllDecay.h:24
std::array< double, 6 > cc_res_width_tot
Definition BXsllDecay.h:39
double pref_dB0_ds
Definition BXsllDecay.h:22
std::array< double, 6 > cc_res_mass
Definition BXsllDecay.h:37
double alpha_s_mu_b
Definition BXsllDecay.h:21
std::array< complex_t, 100 > F_17_lookup
Definition BXsllDecay.h:31
double pref_delta_brems
Definition BXsllDecay.h:24
double pref_dB_ds
Definition BXsllDecay.h:22
std::array< double, 6 > cc_res_br
Definition BXsllDecay.h:38
std::map< WCoef, complex_t > C_LO
Definition BXsllDecay.h:29
std::array< complex_t, 100 > F_19_lookup
Definition BXsllDecay.h:33
double pref_delta_em
Definition BXsllDecay.h:24
std::map< WCoef, complex_t > C
Definition BXsllDecay.h:28
Dependency container (“ports”) for observable computations.
std::unordered_set< WGroupId > groups
Set of Wilson operator group identifiers to be included in the build.
Definition Configs.h:36