Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
BToMuMuToy.h
Go to the documentation of this file.
1#pragma once
2#include <vector>
3#include <cmath>
4#include "ports/IModel.h"
5
6
7// Simple model mirroring your Python formula for quick testing
8class BToMuMuToy final : public IModel {
9public:
10BToMuMuToy() = default;
11
12
13std::size_t n_observables() const override { return 2; }
14
15
16Vec predict(const Vec& p, const Vec& eta) {
17// p: [C10, Cp10]
18const double C10 = p.at(0);
19const double Cp10 = p.at(1);
20// eta: [f_Bd, f_Bs, y_s, |Vts|, |Vtd|]
21const double f_d = eta.at(0);
22const double f_s = eta.at(1);
23const double ys = eta.at(2);
24const double Vts = eta.at(3);
25const double Vtd = eta.at(4);
26
27
28// constants
29const double HBAR = 6.58211889e-25;
30const double G_F = 1.1663787e-5;
31const double alpha_em = 1.0/1.27930e+02;
32const double m_mu = 0.1056583755;
33const double m_Bd = 5.27972;
34const double m_Bs = 5.36693;
35const double tau_Bd = 1.517e-12;
36const double tau_Bs = 1.527e-12;
37const double abs_Vtb = 0.999118;
38
39
40const double k = (G_F*G_F)*(alpha_em*alpha_em)/(16.0*M_PI*M_PI*M_PI);
41const double ps_s = std::sqrt(1.0 - 4.0*m_mu*m_mu/(m_Bs*m_Bs));
42const double ps_d = std::sqrt(1.0 - 4.0*m_mu*m_mu/(m_Bd*m_Bd));
43
44
45const double BR_s_untag = (1.0 + ys)/(1.0 - ys*ys) * k * f_s*f_s * tau_Bs * m_Bs * m_mu*m_mu * Vts*Vts * abs_Vtb*abs_Vtb * ps_s * (C10 - Cp10)*(C10 - Cp10) / HBAR;
46const double BR_d = k * f_d*f_d * tau_Bd * m_Bd * m_mu*m_mu * Vtd*Vtd * abs_Vtb*abs_Vtb * ps_d * C10*C10 / HBAR;
47return Vec{BR_s_untag, BR_d};
48}
49
50std::map<ObservableId, double> predict(const std::map<ParamId, double>& p, const std::map<ParamId, double>& eta) {
51// p: [C10, Cp10]
52// const double C10 = p.at(0);
53// const double Cp10 = p.at(1);
54// // eta: [f_Bd, f_Bs, y_s, |Vts|, |Vtd|]
55// const double f_d = eta.at(0);
56// const double f_s = eta.at(1);
57// const double ys = eta.at(2);
58// const double Vts = eta.at(3);
59// const double Vtd = eta.at(4);
60
61
62// // constants
63// const double HBAR = 6.58211889e-25;
64// const double G_F = 1.1663787e-5;
65// const double alpha_em = 1.0/1.27930e+02;
66// const double m_mu = 0.1056583755;
67// const double m_Bd = 5.27972;
68// const double m_Bs = 5.36693;
69// const double tau_Bd = 1.517e-12;
70// const double tau_Bs = 1.527e-12;
71// const double abs_Vtb = 0.999118;
72
73
74// const double k = (G_F*G_F)*(alpha_em*alpha_em)/(16.0*M_PI*M_PI*M_PI);
75// const double ps_s = std::sqrt(1.0 - 4.0*m_mu*m_mu/(m_Bs*m_Bs));
76// const double ps_d = std::sqrt(1.0 - 4.0*m_mu*m_mu/(m_Bd*m_Bd));
77
78
79// const double BR_s_untag = (1.0 + ys)/(1.0 - ys*ys) * k * f_s*f_s * tau_Bs * m_Bs * m_mu*m_mu * Vts*Vts * abs_Vtb*abs_Vtb * ps_s * (C10 - Cp10)*(C10 - Cp10) / HBAR;
80// const double BR_d = k * f_d*f_d * tau_Bd * m_Bd * m_mu*m_mu * Vtd*Vtd * abs_Vtb*abs_Vtb * ps_d * C10*C10 / HBAR;
81// return Vec{BR_s_untag, BR_d};
82return std::map<ObservableId, double>{};
83}
84
85void add_observables(std::map<ObservableId, QCDOrder> obs_ids) {};
86std::unordered_set<ParamId> get_obs_deps(ObservableId id) override {return std::unordered_set<ParamId>{};}
87};
Abstract model interface used by the statistical layer.
BToMuMuToy()=default
std::unordered_set< ParamId > get_obs_deps(ObservableId id) override
Returns the model parameters required by an observable.
Definition BToMuMuToy.h:86
std::map< ObservableId, double > predict(const std::map< ParamId, double > &p, const std::map< ParamId, double > &eta)
Definition BToMuMuToy.h:50
void add_observables(std::map< ObservableId, QCDOrder > obs_ids)
Definition BToMuMuToy.h:85
Vec predict(const Vec &p, const Vec &eta)
Definition BToMuMuToy.h:16
std::size_t n_observables() const override
Returns the number of currently active binned observables.
Definition BToMuMuToy.h:13
Definition BWilson.h:149
Interface for a model capable of producing observable predictions.
Definition IModel.h:42
constexpr double HBAR
Definition constants.h:23
std::vector< double > Vec