41 cache.
r_qp = (m_b + m_c) / cache.
m_B;
42 cache.
r_qm = (m_b - m_c) / cache.
m_B;
52 return 1 + cache.
r_D * (cache.
r_D - 2 * w);
56 return 4 * cache.
r_D * cache.
r_D * (w * w - 1);
60 return rl * rl /
t(w);
64 return t(w) * std::sqrt(
lambda_D(w)) * std::pow(1 -
x_l(rl, w), 2);
68 return (1 + rD * rD - rl * rl) / (2 * rD);
72 double z = (std::sqrt(1 + w) -
RT2) / (std::sqrt(1 + w) +
RT2);
73 return 1 + z * (-8 * cache.
rho_D2 + z * ((51 * cache.
rho_D2 - 10) - z * (252 * cache.
rho_D2 - 84)));
78 return V_1(w) * (1 + cache.
Delta * (-0.019 + u * (0.041 - 0.015 * u)));
82 return std::sqrt(cache.
r_D * (w * w - 1) /
t(w)) * (1 + cache.
r_D) *
V_1(w);
86 return std::sqrt(cache.
r_D /
t(w)) * (1 - cache.
r_D) * (1 + w) *
S_1(w);
90 return std::sqrt(cache.
r_D) * (1 - cache.
r_D) * (1 + w) *
S_1(w) / cache.
r_qm;
94 double a = std::sqrt(cache.
r_D * (w * w - 1)) * cache.
r_qp / (
t(w) * (1 + cache.
r_D));
95 return -a * (std::pow(1 + cache.
r_D, 2) *
V_1(w) - 2 * cache.
r_D * (1 + w) *
S_1(w));
101 auto f = [
this, rl] (
double w) {
102 return phi(rl, w) * std::pow(
H_V0(w), 2);
111 auto f = [
this, rl] (
double w) {
112 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_V0(w), 2);
121 auto f = [
this, rl] (
double w) {
122 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_Vt(w), 2);
131 auto f = [
this, rl] (
double w) {
132 return phi(rl, w) * std::pow(
H_S(w), 2);
141 auto f = [
this, rl] (
double w) {
142 return phi(rl, w) * std::pow(
H_T(w), 2);
151 auto f = [
this, rl] (
double w) {
152 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_T(w), 2);
161 auto f = [
this, rl] (
double w) {
171 auto f = [
this, rl] (
double w) {
172 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_V0(w) *
H_S(w);
181 auto f = [
this, rl] (
double w) {
182 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_V0(w) *
H_T(w);
191 auto f = [
this, rl] (
double w) {
192 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_Vt(w) *
H_S(w);
201 auto f = [
this, rl] (
double w) {
202 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_Vt(w) *
H_T(w);
211 auto f = [
this, rl] (
double w) {
219 double c_vv = std::pow(std::abs(cache.
C_V), 2);
220 double c_tt = 16 * std::pow(std::abs(cache.
C_T), 2);
221 double c_vt = -8 * std::real(cache.
C_V * std::conj(cache.
C_T));
223 return c_vv *
F_V0_1(r_l, w_m) + c_tt *
F_T_2(r_l, w_m) + c_vt *
G_V0_T(r_l, w_m);
227 double c_vv = 0.5 * std::pow(std::abs(cache.
C_V), 2);
228 double c_ss = 1.5 * std::pow(std::abs(cache.
C_S), 2);
229 double c_tt = 8 * std::pow(std::abs(cache.
C_T), 2);
230 double c_vs = 3 * std::real(cache.
C_V * std::conj(cache.
C_S));
231 double c_vt = -4 * std::real(cache.
C_V * std::conj(cache.
C_T));
233 return c_vv * (
F_V0_2(r_l, w_m) + 3 *
F_Vt(r_l, w_m)) + c_ss *
F_S(r_l, w_m) + c_tt *
F_T_1(r_l, w_m) + c_vs *
G_Vt_S(r_l, w_m) + c_vt *
G_V0_T(r_l, w_m);
247 double c_vv = 1.5 * std::pow(std::abs(cache.
C_V), 2);
248 double c_vs = 1.5 * std::real(cache.
C_V * std::conj(cache.
C_S));
249 double c_vt = -6 * std::real(cache.
C_V * std::conj(cache.
C_T));
250 double c_st = -6 * std::real(cache.
C_S * std::conj(cache.
C_T));
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
void load_params() override
Load and cache parameters needed by this decay.
double x_l(double rl, double w)
double F_T_1(double r_l, double w_m)
double F_Vt(double r_l, double w_m)
double F_V0_1(double r_l, double w_m)
double G_V0_T(double r_l, double w_m)
double w_max(double rD, double r_l)
double G_Vt_S(double r_l, double w_m)
double phi(double rl, double w)
double G_S_T(double r_l, double w_m)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
double gamma_p(double r_l, double w_m)
double F_S(double r_l, double w_m)
void load_cfg_dep_params()
double G_Vt_T(double r_l, double w_m)
double F_V0_2(double r_l, double w_m)
double lambda_D(double w)
void set_cfg_flags(BDlnuConfig::B_Charge charge)
double F_T_2(double r_l, double w_m)
double G_V0_Vt(double r_l, double w_m)
double G_V0_S(double r_l, double w_m)
double gamma_m(double r_l, double w_m)
std::shared_ptr< IObsParameterProxy< ParamId, DataType, std::string, LhaID > > p
Parameter proxy for SM-like quantities used by the decay (may be SM/BSM depending on wiring).
std::shared_ptr< IObsWilsonProxy > w_proxy
Wilson proxy used at compute-time to query coefficients (matching/run).
static std::optional< Observables > enum_of(const IdOf< ObservableTag > &id)
Attempts to recover the enum value associated with an identifier.
static IdOf< ObservableTag > to_id(Observables e)
Converts an enum value to an IdOf<Tag>.
static std::string str(const IdOf< ObservableTag > &id)
Returns the string representation of an identifier.
double integrate(RealValuedFunction f, double l, double u, double prec)
Performs numerical integration of a real-valued function of a real variable.
std::enable_if_t< not std::numeric_limits< T >::is_integer, bool > fpeq(T, T, std::size_t n=10)
Compares two floating point numbers with a given precision.
double f(double x)
Wilson special function f depending on x.
Configuration for computing a particle mass at a given scale.
Container for a computed observable value, optionally binned.
Composite identifier for a single parameter.