56 cache.
r_qp = (m_b + m_c) / cache.
m_B;
57 cache.
r_qm = (m_b - m_c) / cache.
m_B;
66 return 1 + cache.
r_D * (cache.
r_D - 2 * w);
70 return 4 * cache.
r_D * cache.
r_D * (w * w - 1);
74 return rl * rl /
t(w);
78 return t(w) * std::sqrt(
lambda_D(w)) * std::pow((1 -
x_l(rl, w)) *
h_A1(w), 2);
82 return (1 + cache.
r_D * cache.
r_D - rl * rl) / (2 * cache.
r_D);
86 double z = (std::sqrt(1 + w) -
RT2) / (std::sqrt(1 + w) +
RT2);
87 return 1 + z * (-8 * cache.
rho_D2 + z * ((53 * cache.
rho_D2 - 15) - z * (231 * cache.
rho_D2 - 91)));
92 return cache.
R_11 + u * (-0.12 + 0.05 * u);
97 return cache.
R_21 + u * (-0.11 - 0.06 * u);
102 return 0.97 + u * (-0.052 + 0.026 * u);
106 return cache.
sqrt_rD * (w + 1 -
R_1(w) * std::sqrt(w * w - 1));
110 return cache.
sqrt_rD * (w + 1 +
R_1(w) * std::sqrt(w * w - 1));
114 return cache.
sqrt_rD / std::sqrt(
t(w)) * ((cache.
r_D - w) * (1 + w) +
R_2(w) * (w * w - 1));
118 return std::sqrt((w * w - 1) /
t(w)) / (2 * cache.
sqrt_rD) * (-2 * cache.
r_D * (1 + w) + cache.
one_m_rD2 *
R_2(w) -
t(w) *
R_3(w));
126 return cache.
sqrt_rD / std::sqrt(
t(w)) * (cache.
r_qp * std::sqrt(w * w - 1) *
R_1(w) + cache.
r_qm * (1 + w));
130 return cache.
sqrt_rD / std::sqrt(
t(w)) * (cache.
r_qp * std::sqrt(w * w - 1) *
R_1(w) - cache.
r_qm * (1 + w));
135 - cache.
r_qm * (w - 1) *
t(w) * (
R_3(w) - 1)
136 - cache.
r_qm * (1 + cache.
r_D) * (std::pow(1 - cache.
r_D, 2) + 2 * (w - 1)));
141 auto f = [
this, rl] (
double w) {
return phi(rl, w) * std::pow(
H_V0(w), 2); };
148 auto f = [
this, rl] (
double w) {
149 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_V0(w), 2);
158 auto f = [
this, rl] (
double w) {
159 return phi(rl, w) * std::pow(
H_Vp(w), 2);
168 auto f = [
this, rl] (
double w) {
169 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_Vp(w), 2);
178 auto f = [
this, rl] (
double w) {
179 return phi(rl, w) * std::pow(
H_Vm(w), 2);
188 auto f = [
this, rl] (
double w) {
189 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_Vm(w), 2);
198 auto f = [
this, rl] (
double w) {
199 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_Vt(w), 2);
208 auto f = [
this, rl] (
double w) {
209 return phi(rl, w) * std::pow(
H_S(w), 2);
218 auto f = [
this, rl] (
double w) {
219 return phi(rl, w) * std::pow(
H_T0(w), 2);
228 auto f = [
this, rl] (
double w) {
229 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_T0(w), 2);
238 auto f = [
this, rl] (
double w) {
239 return phi(rl, w) * std::pow(
H_Tp(w), 2);
248 auto f = [
this, rl] (
double w) {
249 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_Tp(w), 2);
258 auto f = [
this, rl] (
double w) {
259 return phi(rl, w) * std::pow(
H_Tm(w), 2);
268 auto f = [
this, rl] (
double w) {
269 return phi(rl, w) *
x_l(rl, w) * std::pow(
H_Tm(w), 2);
278 auto f = [
this, rl] (
double w) {
288 auto f = [
this, rl] (
double w) {
298 auto f = [
this, rl] (
double w) {
308 auto f = [
this, rl] (
double w) {
318 auto f = [
this, rl] (
double w) {
328 auto f = [
this, rl] (
double w) {
338 auto f = [
this, rl] (
double w) {
348 auto f = [
this, rl] (
double w) {
349 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_V0(w) *
H_S(w);
358 auto f = [
this, rl] (
double w) {
368 auto f = [
this, rl] (
double w) {
369 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_Vt(w) *
H_S(w);
378 auto f = [
this, rl] (
double w) {
388 auto f = [
this, rl] (
double w) {
389 return phi(rl, w) * std::sqrt(
x_l(rl, w)) *
H_S(w) *
H_T0(w);
396 double c_vsq = std::pow(std::abs(cache.
C_V1), 2) + std::pow(std::abs(cache.
C_V2), 2);
397 double c_vv = -2 * std::real(cache.
C_V1 * std::conj(cache.
C_V2));
398 double c_tt = 16 * std::pow(std::abs(cache.
C_T), 2);
399 double c_v1t = -8 * std::real(cache.
C_V1 * std::conj(cache.
C_T));
400 double c_v2t = 8 * std::real(cache.
C_V2 * std::conj(cache.
C_T));
402 double f_v0_1 =
F_V0_1(rl, w_m);
403 double g_v0_t0 =
G_V0_T0(rl, w_m);
404 return c_vsq * (
F_Vp_1(rl, w_m) +
F_Vm_1(rl, w_m) + f_v0_1)
405 + c_vv * (f_v0_1 + 2 *
G_Vp_Vm_1(rl, w_m))
412 double c_vsq = 0.5 * std::pow(std::abs(cache.
C_V1), 2) + std::pow(std::abs(cache.
C_V2), 2);
413 double c_vv = -std::real(cache.
C_V1 * std::conj(cache.
C_V2));
414 double c_ss = 1.5 * std::pow(std::abs(cache.
C_P), 2);
415 double c_tt = 8 * std::pow(std::abs(cache.
C_T), 2);
416 double c_vs = 3 * std::real(cache.
C_A * std::conj(cache.
C_P));
417 double c_v1t = -4 * std::real(cache.
C_V1 * std::conj(cache.
C_T));
418 double c_v2t = 4 * std::real(cache.
C_V2 * std::conj(cache.
C_T));
420 double f_v0_2 =
F_V0_2(rl, w_m);
421 double g_v0_t0 =
G_V0_T0(rl, w_m);
422 return c_vsq * (
F_Vp_2(rl, w_m) +
F_Vm_2(rl, w_m) + f_v0_2 + 3 *
F_Vt(rl, w_m))
423 + c_vv * (f_v0_2 + 2 *
G_Vp_Vm_2(rl, w_m) + 3 *
F_Vt(rl, w_m))
424 + c_ss *
F_S (rl, w_m)
442 double c_vv = 0.75 * std::pow(std::abs(cache.
C_V1), 2) - std::pow(std::abs(cache.
C_V2), 2);
443 double c_aa = 1.5 * std::pow(std::abs(cache.
C_A), 2);
444 double c_tt = 12 * std::pow(std::abs(cache.
C_T), 2);
445 double c_ap = 1.5 * std::real(cache.
C_A * std::conj(cache.
C_P));
446 double c_v1t = -6 * std::real(cache.
C_V1 * std::conj(cache.
C_T));
447 double c_v2t = 6 * std::real(cache.
C_V2 * std::conj(cache.
C_T));
448 double c_pt = -6 * std::real(cache.
C_P * std::conj(cache.
C_T));
491 double c_aa = 0.5 * std::pow(std::abs(cache.
C_A), 2);
492 double c_pp = 1.5 * std::pow(std::abs(cache.
C_P), 2);
493 double c_tt = 8 * std::pow(std::abs(cache.
C_T), 2);
494 double c_ap = 3 * std::real(cache.
C_A * std::conj(cache.
C_P));
495 double c_at = -12 * std::real(cache.
C_A * std::conj(cache.
C_T));
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
double F_Tm_1(double rl, double w_m)
double G_Vt_T0(double rl, double w_m)
double G_Vm_Tp(double rl, double w_m)
double F_V0_1(double rl, double w_m)
double F_S(double rl, double w_m)
double F_Vp_2(double rl, double w_m)
double F_T0_2(double rl, double w_m)
double F_Vp_1(double rl, double w_m)
double Gamma_tau_m(double rl, double w_m)
double G_Vp_Vm_2(double rl, double w_m)
double G_Vt_S(double rl, double w_m)
double lambda_D(double w)
void load_cfg_dep_params()
double G_Vm_Tm(double rl, double w_m)
double F_Tp_1(double rl, double w_m)
double Gamma_tau_p(double rl, double w_m)
double G_V0_Vt(double rl, double w_m)
double x_l(double rl, double w)
double F_Tm_2(double rl, double w_m)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
double G_S_T0(double rl, double w_m)
double F_Vm_2(double rl, double w_m)
double phi(double rl, double w)
void set_cfg_flags(BDstarlnuConfig::B_Charge charge)
void load_params() override
Load and cache parameters needed by this decay.
double G_Vp_Vm_1(double rl, double w_m)
double F_Vm_1(double rl, double w_m)
double G_V0_T0(double rl, double w_m)
double G_Vp_Tp(double rl, double w_m)
double F_Tp_2(double rl, double w_m)
double F_V0_2(double rl, double w_m)
double G_V0_S(double rl, double w_m)
double F_T0_1(double rl, double w_m)
double G_Vp_Tm(double rl, double w_m)
double F_Vt(double rl, 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.