Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
M0_Mixing.h
Go to the documentation of this file.
1#ifndef __M0_MIXING_H__
2#define __M0_MIXING_H__
3
4#include "DecayParent.h"
5#include "General.h"
7#include "ObsQCDProxy.h"
8
10 double G_F;
11 double m_W, mu_W;
12 double x_t, x_c;
14 double m_Bd, m_Bs, m_K, m_D;
15 double tau_D;
17 double delta_G_s;
20
21 std::array<double, 5> Q_Bd;
22 std::array<double, 5> Q_Bs;
23 std::array<double, 5> Q_K;
24 std::array<double, 5> Q_D;
25 std::array<complex_t, 8> C_Bd;
26 std::array<complex_t, 8> C_Bs;
27 std::array<complex_t, 8> C_K;
28 std::array<complex_t, 8> C_D;
31};
32
36class M0Mixing : public DecayParentConfigurable<DecayConfig> {
37private:
38 M0MixingCache cache;
39
40 static constexpr std::array<double, 5> N_i {0.66667, -0.41667, 0.08333, 0.50000, 0.16667};
41 static constexpr std::array<double, 5> d_i {0.00000, 0.00000, 0.00000, 0.16667, 1.50000};
42 static constexpr double J_5 = 5165. / 3174.;
43 static constexpr double J_4 = 6719. / 3750.;
44 static constexpr double J_3 = 307. / 162.;
45 static constexpr double B_t = 17. / 3;
46
47protected:
48 double S_18(double x);
49 double S_11(double x);
50 double S_1t(double x);
51 double dS0_dx(double x);
52 double S0_ct(double x_c, double x_t);
53 double F_S1(double x, double m_W, double mu_W, double mu_t);
54
55 double Q_i(int i, double B_i, double r_chi, double mf2, bool is_B=false);
56 void populate_Q_from_bag(std::array<double, 5>& Q, const std::array<double, 5>& B, double r_chi, double mf2, bool is_B);
57 void populate_C(std::array<complex_t, 8>& C, double hadronic_scale, size_t offset=0);
58 complex_t M_12_NP(const std::array<complex_t, 8>& C, const std::array<double, 5>& Q, double m_M);
59 complex_t M_12_B_SM(int gen);
61
62 double phi_q(int gen);
63 double delta_M_B(int gen);
64 double a_fs();
65 double epsilon_K();
66 double delta_M_K();
67 double x_D();
68
69public:
70 M0Mixing(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig& ports) : DecayParentConfigurable(DecayMapper::to_id(Decays::M0_Mix), matching_scale, hadronic_scale, order, ports) {
72 this->max_order = QCDOrder::LO;
73 // this->load_params();
74 }
75
76 void load_params() override;
77 std::vector<ObservableValue> compute_observable(Observables obs) override;
78 std::vector<ObservableValue> compute_observable(ObservableId obs) override;
79};
80
81#endif // __M0_MIXING_H__
Base class for observable/decay computation modules.
Observables
Definition GeneralEnum.h:4
QCDOrder
Decays
@ MESON_MIXING
High-level mutator for parameters used by the observable layer.
Default observable-layer implementation of IObsQCDProxy.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Definition Utils.h:35
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
Parent for the M0 - M0_bar mixing observables. Currently implements TODO.
Definition M0_Mixing.h:36
double S0_ct(double x_c, double x_t)
Definition M0_Mixing.cpp:90
double delta_M_K()
double Q_i(int i, double B_i, double r_chi, double mf2, bool is_B=false)
Definition M0_Mixing.cpp:98
complex_t M_12_K_SM()
double delta_M_B(int gen)
complex_t M_12_B_SM(int gen)
double phi_q(int gen)
M0Mixing(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
Definition M0_Mixing.h:70
double a_fs()
double S_18(double x)
Definition M0_Mixing.cpp:74
double dS0_dx(double x)
Definition M0_Mixing.cpp:86
double F_S1(double x, double m_W, double mu_W, double mu_t)
Definition M0_Mixing.cpp:94
double x_D()
void load_params() override
Load and cache parameters needed by this decay.
Definition M0_Mixing.cpp:3
void populate_C(std::array< complex_t, 8 > &C, double hadronic_scale, size_t offset=0)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
double epsilon_K()
complex_t M_12_NP(const std::array< complex_t, 8 > &C, const std::array< double, 5 > &Q, double m_M)
void populate_Q_from_bag(std::array< double, 5 > &Q, const std::array< double, 5 > &B, double r_chi, double mf2, bool is_B)
double S_1t(double x)
Definition M0_Mixing.cpp:82
double S_11(double x)
Definition M0_Mixing.cpp:78
double alpha_s_mu_b
Definition M0_Mixing.h:19
std::array< double, 5 > Q_D
Definition M0_Mixing.h:24
complex_t C1_Bs_SM
Definition M0_Mixing.h:30
std::array< double, 5 > Q_Bd
Definition M0_Mixing.h:21
double mu_W
Definition M0_Mixing.h:11
std::array< double, 5 > Q_K
Definition M0_Mixing.h:23
double m_Bd
Definition M0_Mixing.h:14
std::array< double, 5 > Q_Bs
Definition M0_Mixing.h:22
double tau_D
Definition M0_Mixing.h:15
double eta_cc
Definition M0_Mixing.h:18
double alpha_s_mu_W
Definition M0_Mixing.h:19
std::array< complex_t, 8 > C_D
Definition M0_Mixing.h:28
complex_t lambda_c
Definition M0_Mixing.h:13
std::array< complex_t, 8 > C_Bs
Definition M0_Mixing.h:26
complex_t G12_s
Definition M0_Mixing.h:16
double alpha_s_mu_c
Definition M0_Mixing.h:19
complex_t C1_Bd_SM
Definition M0_Mixing.h:29
double kappa_e
Definition M0_Mixing.h:18
std::array< complex_t, 8 > C_K
Definition M0_Mixing.h:27
double delta_G_s
Definition M0_Mixing.h:17
double eta_ct
Definition M0_Mixing.h:18
complex_t lambda_t
Definition M0_Mixing.h:13
double m_Bs
Definition M0_Mixing.h:14
std::array< complex_t, 8 > C_Bd
Definition M0_Mixing.h:25
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