1#ifndef __BSPHIDECAY_H__
2#define __BSPHIDECAY_H__
25 std::map<WCoef, complex_t>
C;
115 double J1s(
double q2,
bool bar);
116 double J1c(
double q2,
bool bar);
117 double J2s(
double q2,
bool bar);
118 double J2c(
double q2,
bool bar);
119 double J3(
double q2,
bool bar);
120 double J4(
double q2,
bool bar);
121 double J5(
double q2,
bool bar);
122 double J6s(
double q2,
bool bar);
123 double J6c(
double q2,
bool bar);
124 double J7(
double q2,
bool bar);
125 double J8(
double q2,
bool bar);
126 double J9(
double q2,
bool bar);
128 double h1s(
double q2);
129 double h1c(
double q2);
130 double h2s(
double q2);
131 double h2c(
double q2);
132 double h3(
double q2);
133 double h4(
double q2);
134 double h5(
double q2);
135 double h6s(
double q2);
136 double h6c(
double q2);
137 double h7(
double q2);
138 double h8(
double q2);
139 double h9(
double q2);
141 double s8(
double q2);
142 double s9(
double q2);
Base class for observable/decay computation modules.
Default observable-layer implementation of IObsQCDProxy.
std::complex< double > complex_t
Convenience alias for std::complex<double>.
Decay parent for the Bs > phi l+ l- decays.
complex_t interpolate(double q2, complex_t val_low, complex_t val_high)
complex_t A_par_low(double q2, double sign, bool bar)
std::vector< ObservableValue > Pp_4(Observables id)
void compute_binned_J_i()
complex_t A_t_low(double q2, bool bar)
double J8(double q2, bool bar)
complex_t A_S_low(double q2, bool bar)
std::vector< ObservableValue > F_L(Observables id)
complex_t A_0_low(double q2, double sign, bool bar)
std::vector< ObservableValue > Pp_5_CPV(Observables id)
std::any get_config() const override
Return the current decay configuration when the decay has one.
complex_t delta_A_0(double q2, double sign, bool bar)
complex_t T_par_m_cached(double q2, bool bar)
complex_t A_t(double q2, bool bar)
std::vector< ObservableValue > A_T_Re_CPV(Observables id)
std::vector< ObservableValue > A_T_Im_CPV(Observables id)
complex_t A_S_high(double q2, bool bar)
size_t get_n_threads() const override
Return the currently configured worker-thread count.
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
complex_t T_perp_m_cached(double q2, bool bar)
void load_params() override
Load and cache parameters needed by this decay.
std::vector< ObservableValue > Q_8_m(Observables id)
std::vector< ObservableValue > A_T_2(Observables id)
std::vector< ObservableValue > Q_9(Observables id)
double J6c(double q2, bool bar)
std::vector< ObservableValue > S_i(int i, Observables id)
std::vector< ObservableValue > P_2_CPV(Observables id)
complex_t A_0_high(double q2, double sign, bool bar)
std::vector< ObservableValue > A_FB_CPV(Observables id)
double J6s(double q2, bool bar)
void load_cfg_dep_params()
double dG_dq2_avg_bin(size_t bin)
double J1c(double q2, bool bar)
double J4(double q2, bool bar)
BsPhiDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
complex_t delta_A_perp(double q2, double sign, bool bar)
std::vector< ObservableValue > Pp_6(Observables id)
double J2c(double q2, bool bar)
complex_t A_perp(double q2, double sign, bool bar)
void set_n_threads(size_t n_threads) override
Set the number of worker threads used by decays that support parallel cache filling.
std::vector< ObservableValue > dBR_dq2_binned(bool bar, Observables id, bool br=true)
void set_config_spe(BsPhiConfig config) override
Strongly-typed configuration setter to implement in derived classes.
complex_t A_S(double q2, bool bar)
complex_t A_perp_high(double q2, double sign, bool bar)
complex_t delta_A_par(double q2, double sign, bool bar)
complex_t A_par(double q2, double sign, bool bar)
double J1s(double q2, bool bar)
std::vector< ObservableValue > Pp_8_CPV(Observables id)
complex_t C9_eff(double q2, bool bar)
double J7(double q2, bool bar)
void set_cfg_flags(BsPhiConfig::Lepton gen)
complex_t A_perp_low(double q2, double sign, bool bar)
complex_t A_par_high(double q2, double sign, bool bar)
complex_t C7_eff(double q2, bool bar)
double J3(double q2, bool bar)
bool supports_thread_config() const override
Whether this decay supports runtime thread configuration.
complex_t A_t_high(double q2, bool bar)
complex_t T_perp_p_cached(double q2, bool bar)
double J5(double q2, bool bar)
std::vector< ObservableValue > Rm1_BsPhi(Observables id)
complex_t A_0(double q2, double sign, bool bar)
std::vector< ObservableValue > P_3_CPV(Observables id)
double J9(double q2, bool bar)
complex_t N(double q2, bool bar)
double J2s(double q2, bool bar)
std::vector< ObservableValue > Q_8_p(Observables id)
std::vector< ObservableValue > A_i(int i, Observables id)
Mapper for decay names, dynamic ids and observable membership.
Typed configuration adapter for DecayParent using std::any.
bool binned
Whether this decay requires q² bins before its observables can be computed.
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.
QCDOrder max_order
Maximum QCD order supported by this decay module (default: LO).
static IdOf< WGroupTag > to_id(WGroup e)
Converts an enum value to an IdOf<Tag>.
std::array< scalar_t, LOOKUP_SIZE > T_par_m_lookup
std::array< std::vector< double >, 15 > f_J_i_binned
std::array< scalar_t, LOOKUP_SIZE > T_perp_p_lookup
std::array< scalar_t, LOOKUP_SIZE > T_perp_p_bar_lookup
BVQCDfCalculator qcdf_calculator
std::array< scalar_t, LOOKUP_SIZE > T_perp_m_bar_lookup
std::vector< double > bin_widths
std::array< complex_t, 6 > A_had_err_low_1
std::map< WCoef, complex_t > C
std::array< complex_t, 8 > A_had_err_high
std::array< scalar_t, LOOKUP_SIZE > T_perp_m_lookup
std::array< scalar_t, LOOKUP_SIZE > T_par_m_bar_lookup
std::array< complex_t, 6 > A_had_err_low_0
static constexpr size_t LOOKUP_SIZE
BVFFCalculator ff_calculator
Dependency container (“ports”) for observable computations.
std::unordered_set< WGroupId > groups
Set of Wilson operator group identifiers to be included in the build.