126#ifndef __BKLLDECAY_H__
127#define __BKLLDECAY_H__
151 std::map<WCoef, complex_t>
C;
206 const static std::unordered_set<ObservableId> dG_dq2_ids;
207 const static std::unordered_set<ObservableId> dBR_dq2_ids;
208 const static std::unordered_set<ObservableId> A_FB_ids;
209 const static std::unordered_set<ObservableId> F_H_ids;
210 const static std::map<Observables, std::pair<BKllConfig::Lepton, BKllConfig::B_Charge>> cfg_map;
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 exclusive B > K l+ l- decays. Implements the integrated branching ratio,...
complex_t F_A_low(double q2)
std::any get_config() const override
Return the current decay configuration when the decay has one.
void set_n_threads(size_t n_threads) override
Set the number of worker threads used by decays that support parallel cache filling.
void load_params() override
Load and cache parameters needed by this decay.
complex_t F_S_low(double q2)
complex_t F_P_high(double q2)
complex_t C7_eff(double q2)
void set_config_spe(BKllConfig config) override
Strongly-typed configuration setter to implement in derived classes.
complex_t F_P_low(double q2)
size_t get_n_threads() const override
Return the currently configured worker-thread count.
complex_t F_S_high(double q2)
complex_t F_V_low(double q2)
void load_cfg_dependent_params()
std::vector< ObservableValue > compute_observable(Observables obs) override
Compute an observable given a public observable enum.
BKllDecay(QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
std::vector< ObservableValue > dBR_dq2(Observables oid, bool br)
void set_lepton_gen_and_charge(BKllConfig::Lepton gen, BKllConfig::B_Charge charge)
std::vector< ObservableValue > Rm1_BK(Observables id, BKllConfig::B_Charge charge)
complex_t interpolate(double q2, complex_t val_low, complex_t val_high)
complex_t C9_eff(double q2)
complex_t T_P_cached(double q2)
complex_t F_A_high(double q2)
std::vector< ObservableValue > F_H(Observables oid)
void compute_binned_abc()
complex_t F_V_high(double q2)
bool supports_thread_config() const override
Whether this decay supports runtime thread configuration.
std::vector< ObservableValue > A_FB(Observables oid)
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< std::vector< double >, 3 > abc_binned
std::array< complex_t, 4 > A_had_err_low_1
static constexpr size_t LOOKUP_SIZE
std::vector< double > bin_widths
BPFFCalculator ff_calculator
BPQCDfCalculator qcdf_calculator
std::array< complex_t, 4 > A_had_err_low_0
std::array< complex_t, 4 > A_had_err_high
std::map< WCoef, complex_t > C
std::array< scalar_t, LOOKUP_SIZE > T_P_lookup
Dependency container (“ports”) for observable computations.
std::unordered_set< WGroupId > groups
Set of Wilson operator group identifiers to be included in the build.