Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
BXsDecay.h
Go to the documentation of this file.
1#ifndef BXSDECAY_H
2#define BXSDECAY_H
3
4#include "DecayParent.h"
5#include "General.h"
6#include <array>
7#include "DefaultConfig.h"
8#include "ObsQCDProxy.h"
9
13 double m_c, m_s, m_W;
14 double ckm_factor;
15 double mu_b, mu_W;
16 double beta_0;
18 double E0;
21 double lambda_2;
22 double mu_c;
23 double z0, z1;
24 double z, delta;
26 double L_b, L_c;
27 const double X_b {-0.168440839756};
28 double rand_err;
29
30 std::map<WCoef, complex_t> C_b_LO;
31 std::map<WCoef, complex_t> C_b_NLO;
32 std::map<WCoef, complex_t> C_b_NNLO;
33 std::map<WCoef, complex_t> C_w;
34};
35
39class BXsDecay : public DecayParentConfigurable<DecayConfig> {
40private:
41 BXsDecayCache cache;
42
43protected:
44 static constexpr std::array<double, 8> gamma_i7 {-0.85596, 5.1358, -2.1728, -0.6255, -77.432, 19.029, 10.667, -3.5556};
45 static constexpr std::array<double, 8> a_i {0.608696, 0.695652, 0.2608696, -0.521739, 0.4086, -0.4230, -0.8994, 0.1456};
46 static constexpr std::array<double, 8> d_i {1.4107, -0.8380, -0.4286, -0.0714, -0.6494, -0.0380, -0.0185, -0.0057};
47
48 // Utility
49 double gen_P00(const std::array<std::array<double, 8>, 8>& K);
50 double gen_P01(const std::array<std::array<double, 8>, 8>& K);
51
52 // P_21 and P_32
53 double a(double z);
54 double b(double z);
55 complex_t G(double t);
56 double phi_22(double z, double delta);
57 double phi_27(double z, double delta);
58 double phi_47(double delta);
59 double phi_77(double delta);
60 double phi_78(double delta);
61 double phi_88(double delta);
62 std::array<std::array<double, 8>, 8> phi_1(double delta, double z);
63 std::array<double, 8> r_1(double z);
64 std::array<std::array<double, 8>, 8> K_1();
65
66 // P_22 (beta_0)
67 double F2nf(double z);
68 double r22(double z);
69 double h22(double z, double delta);
70 double h27(double z, double delta);
71 double h28(double z, double delta);
72 double h88(double delta);
73 double h77(double delta);
74
75 std::array<std::array<double, 8>, 8> phi_2_b0(double delta, double z);
76 std::array<double, 8> r_hat_2(double z);
77 std::array<std::array<double, 8>, 8> K_2_b0();
78
79 // P_22 (rem)
80 double F2a(double z);
81 double F2na(double z);
82 double phi_77_rem(double phi_77_int);
83 std::array<std::array<double, 8>, 8> K_2_rem(double z);
84 double r2_large_z(double z);
85 double dr2_dlogz(double z);
86 double r22_large_z(double z);
87 double P22_rem();
88
89 double P();
90
91 // Nonperturbative corrections
92 double N();
93
94 // Electromagnetic corrections
95 double C2_em(double eta);
96 double C8_em(double eta);
97 complex_t C7_em(double eta);
98 double epsilon_em();
99
100 // Branching Ratio
101 double C();
102 double BR_B_Xs_gamma();
103
104public:
105 BXsDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig& ports) : DecayParentConfigurable(DecayMapper::to_id(Decays::B__Xs_gamma), matching_scale, hadronic_scale, order, ports) {
108 }
109
110 void load_params() override;
111 std::vector<ObservableValue> compute_observable(Observables obs) override;
112 std::vector<ObservableValue> compute_observable(ObservableId obs) override;
113
114};
115
116#endif // __BXSDECAY_H__
Base class for observable/decay computation modules.
Observables
Definition GeneralEnum.h:4
QCDOrder
Decays
@ B__Xs_gamma
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 Bq > ll decays. Currently implements both CP-averaged and untagged Bs > mu+ mu- ...
Definition BXsDecay.h:39
double N()
Definition BXsDecay.cpp:459
double h27(double z, double delta)
Definition BXsDecay.cpp:247
double F2nf(double z)
Definition BXsDecay.cpp:222
std::array< std::array< double, 8 >, 8 > K_2_b0()
Definition BXsDecay.cpp:295
double phi_77_rem(double phi_77_int)
Definition BXsDecay.cpp:352
double epsilon_em()
Definition BXsDecay.cpp:486
std::array< double, 8 > r_1(double z)
Definition BXsDecay.cpp:179
double F2a(double z)
Definition BXsDecay.cpp:320
double h28(double z, double delta)
Definition BXsDecay.cpp:252
double F2na(double z)
Definition BXsDecay.cpp:337
double phi_47(double delta)
Definition BXsDecay.cpp:139
double dr2_dlogz(double z)
Definition BXsDecay.cpp:385
double C8_em(double eta)
Definition BXsDecay.cpp:478
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
Definition BXsDecay.cpp:512
double gen_P00(const std::array< std::array< double, 8 >, 8 > &K)
Definition BXsDecay.cpp:46
double P()
Definition BXsDecay.cpp:447
std::array< std::array< double, 8 >, 8 > phi_2_b0(double delta, double z)
Definition BXsDecay.cpp:269
static constexpr std::array< double, 8 > a_i
Definition BXsDecay.h:45
std::array< std::array< double, 8 >, 8 > K_1()
Definition BXsDecay.cpp:196
std::array< double, 8 > r_hat_2(double z)
Definition BXsDecay.cpp:284
double C()
Definition BXsDecay.cpp:493
double h22(double z, double delta)
Definition BXsDecay.cpp:243
double r2_large_z(double z)
Definition BXsDecay.cpp:381
double a(double z)
Definition BXsDecay.cpp:72
double C2_em(double eta)
Definition BXsDecay.cpp:472
complex_t G(double t)
Definition BXsDecay.cpp:99
void load_params() override
Load and cache parameters needed by this decay.
Definition BXsDecay.cpp:3
double phi_77(double delta)
Definition BXsDecay.cpp:145
double h77(double delta)
Definition BXsDecay.cpp:261
double phi_22(double z, double delta)
Definition BXsDecay.cpp:107
double r22(double z)
Definition BXsDecay.cpp:228
std::array< std::array< double, 8 >, 8 > phi_1(double delta, double z)
Definition BXsDecay.cpp:161
double h88(double delta)
Definition BXsDecay.cpp:257
double phi_88(double delta)
Definition BXsDecay.cpp:154
complex_t C7_em(double eta)
Definition BXsDecay.cpp:482
double r22_large_z(double z)
Definition BXsDecay.cpp:398
double phi_78(double delta)
Definition BXsDecay.cpp:150
std::array< std::array< double, 8 >, 8 > K_2_rem(double z)
Definition BXsDecay.cpp:362
static constexpr std::array< double, 8 > gamma_i7
Definition BXsDecay.h:44
double b(double z)
Definition BXsDecay.cpp:86
double gen_P01(const std::array< std::array< double, 8 >, 8 > &K)
Definition BXsDecay.cpp:60
static constexpr std::array< double, 8 > d_i
Definition BXsDecay.h:46
double BR_B_Xs_gamma()
Definition BXsDecay.cpp:504
double phi_27(double z, double delta)
Definition BXsDecay.cpp:123
double P22_rem()
Definition BXsDecay.cpp:403
BXsDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
Definition BXsDecay.h:105
Mapper for decay names, dynamic ids and observable membership.
Definition decay_ids.hpp:88
Typed configuration adapter for DecayParent using std::any.
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
double mu_c
Definition BXsDecay.h:22
double rand_err
Definition BXsDecay.h:28
double E0
Definition BXsDecay.h:18
double beta_0
Definition BXsDecay.h:16
double m_s
Definition BXsDecay.h:13
std::map< WCoef, complex_t > C_b_LO
Definition BXsDecay.h:30
double mu_b
Definition BXsDecay.h:15
double ckm_factor
Definition BXsDecay.h:14
double m_c_mu_c
Definition BXsDecay.h:25
double alpha_s_upsilon
Definition BXsDecay.h:17
std::map< WCoef, complex_t > C_b_NLO
Definition BXsDecay.h:31
double m_c
Definition BXsDecay.h:13
double m_W
Definition BXsDecay.h:13
double BR_B__Xc_e_nu_exp
Definition BXsDecay.h:19
const double X_b
Definition BXsDecay.h:27
double m_b_kin
Definition BXsDecay.h:12
double lambda_2
Definition BXsDecay.h:21
double rho_LS3
Definition BXsDecay.h:20
double m_b_mb
Definition BXsDecay.h:12
double eta
Definition BXsDecay.h:17
double alpha_em_0
Definition BXsDecay.h:11
double m_c_3gev
Definition BXsDecay.h:25
std::map< WCoef, complex_t > C_w
Definition BXsDecay.h:33
double alpha_s_mu_b
Definition BXsDecay.h:17
double delta
Definition BXsDecay.h:24
double L_b
Definition BXsDecay.h:26
double z0
Definition BXsDecay.h:23
double alpha_em
Definition BXsDecay.h:11
double r_msbar_1S
Definition BXsDecay.h:12
double L_c
Definition BXsDecay.h:26
double mu_G2
Definition BXsDecay.h:20
double z1
Definition BXsDecay.h:23
double mu_W
Definition BXsDecay.h:15
double rho_D3
Definition BXsDecay.h:20
std::map< WCoef, complex_t > C_b_NNLO
Definition BXsDecay.h:32
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