47 if (q != 1 && q != 3)
LOG_ERROR(
"ValueError",
"In Bq > l l, q can only be d (1) or s (3), found", q);
49 double m_B, f_B, tau_B, r_q;
65 const int lepton_index = gen - 1;
71 double m_l = gen == 1 ? cache.
m_e : gen == 2 ? cache.
m_mu : cache.
m_tau;
72 double x_l = m_l / m_B;
73 double beta_l = std::sqrt(1. - 4. * std::pow(x_l, 2));
75 double pref = std::pow(cache.
G_F * cache.
alpha_em, 2) / (64 * std::pow(M_PI, 3)) * cache.
eta_BBS;
76 return pref * std::pow(f_B * std::abs(lambda_q), 2) * std::pow(m_B, 3) * tau_B * beta_l * (
77 std::pow(beta_l * std::abs(r_q * CQ1_m), 2)
78 + std::pow(std::abs(r_q * CQ2_m + 2 * x_l * cache.
C10_m), 2)
83 const int lepton_index = gen - 1;
89 double m_l = gen == 1 ? cache.
m_e : gen == 2 ? cache.
m_mu : cache.
m_tau;
90 double x_l = m_l / cache.
m_Bs;
91 double beta_l = std::sqrt(1. - 4. * std::pow(x_l, 2));
92 double f = cache.
r_s / (2. * x_l);
95 double abs_S = std::pow(std::abs(S), 2);
96 double abs_P = std::pow(std::abs(P), 2);
97 double A = (abs_P * std::cos(2 * std::arg(P)) - abs_S * std::cos(2 * std::arg(S))) / (abs_P + abs_S);
99 double untag_factor = (1. + A * cache.
ys) / (1. - std::pow(cache.
ys, 2));
#define LOG_ERROR(type,...)
Macro for logging error messages and terminating the application.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
double BR_untag_Bs_ll(int gen)
void load_params() override
Load and cache parameters needed by this decay.
double BR_avg_Bq_ll(int q, int gen)
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
WilsonBuildConfig w_config
Wilson build configuration used when enabling this decay (scales, order, groups).
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.
static WCoef cpq1_for_lepton_index(int lepton_index)
static WCoef cq1_for_lepton_index(int lepton_index)
static WCoef cq2_for_lepton_index(int lepton_index)
static WCoef cpq2_for_lepton_index(int lepton_index)
double f(double x)
Wilson special function f depending on x.
Container for a computed observable value, optionally binned.
Composite identifier for a single parameter.
QCDOrder order
Perturbative QCD order used for the evolution and matching of Wilson coefficients....