Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
BKllDecay Class Reference

Decay parent for the exclusive B > K l+ l- decays. Implements the integrated branching ratio, forward-backward asymmetry and flat term in several q² bins. More...

#include <BKllDecay.h>

Inheritance diagram for BKllDecay:
Collaboration diagram for BKllDecay:

Public Member Functions

 BKllDecay (QCDOrder order, double matching_scale, double hadronic_scale, ObservablePortsConfig &ports)
 
void load_params () override
 Load and cache parameters needed by this decay.
 
std::vector< ObservableValuecompute_observable (Observables obs) override
 Compute an observable given a public observable enum.
 
std::vector< ObservableValuecompute_observable (ObservableId obs) override
 Compute an observable given an internal observable identifier.
 
void set_config_spe (BKllConfig config) override
 Strongly-typed configuration setter to implement in derived classes.
 
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.
 
size_t get_n_threads () const override
 Return the currently configured worker-thread count.
 
bool supports_thread_config () const override
 Whether this decay supports runtime thread configuration.
 
- Public Member Functions inherited from DecayParentConfigurable< BKllConfig >
 DecayParentConfigurable (DecayId id, double matching_scale, double hadronic_scale, QCDOrder order, ObservablePortsConfig &ports)
 Construct a configurable decay module.
 
void set_config (std::any cfg) final override
 Type-erased config setter (final).
 
- Public Member Functions inherited from DecayParent
virtual ~DecayParent ()=default
 
 DecayParent (DecayId custom_id, double matching_scale, double hadronic_scale, QCDOrder order, ObservablePortsConfig &ports)
 Construct a decay module and bind it to the observable ports.
 
void bind_wilson_builder (std::shared_ptr< IObsWilsonBuilder > &wilson_builder)
 Bind a Wilson builder to this decay.
 
void enable ()
 Enable the decay module (build Wilson groups and load parameters).
 
void disable ()
 Disable the decay module.
 
void set_order (QCDOrder new_order)
 Set the QCD order for this decay (one-shot policy).
 
void set_bins (std::vector< std::pair< double, double > > new_bins)
 Set the binning for the observables related to this decay.
 
void add_bin (std::pair< double, double > new_bin)
 Adds a bin to the observables related to this decay.
 
std::optional< std::vector< std::pair< double, double > > > get_bins ()
 Returns the current binning of the decay.
 
DecayId get_id ()
 Return the decay identifier.
 
QCDOrder get_order () const
 Return the currently configured QCD order for this decay.
 
bool is_enabled () const
 Return whether the decay has already been enabled.
 
bool is_binned () const
 Return whether this decay has at least one observable requiring q² bins.
 
virtual bool is_observable_binned (ObservableId) const
 Return whether one observable of this decay requires q² bins.
 
virtual bool is_observable_binned (Observables obs) const
 Convenience overload for public observable enum ids.
 

Protected Member Functions

void fill_wilson_cache ()
 
void load_cfg_dependent_params ()
 
void set_lepton_gen_and_charge (BKllConfig::Lepton gen, BKllConfig::B_Charge charge)
 
complex_t T_P_cached (double q2)
 
double beta_l (double q2)
 
double lambda (double q2)
 
double N (double q2)
 
complex_t F_V_low (double q2)
 
complex_t F_A_low (double q2)
 
complex_t F_P_low (double q2)
 
complex_t F_S_low (double q2)
 
complex_t C7_eff (double q2)
 
complex_t C9_eff (double q2)
 
complex_t F_V_high (double q2)
 
complex_t F_A_high (double q2)
 
complex_t F_P_high (double q2)
 
complex_t F_S_high (double q2)
 
complex_t interpolate (double q2, complex_t val_low, complex_t val_high)
 
complex_t F_V (double q2)
 
complex_t F_A (double q2)
 
complex_t F_P (double q2)
 
complex_t F_S (double q2)
 
double a (double q2)
 
double b (double q2)
 
double c (double q2)
 
void compute_binned_abc ()
 
std::vector< ObservableValuedBR_dq2 (Observables oid, bool br)
 
std::vector< ObservableValueA_FB (Observables oid)
 
std::vector< ObservableValueF_H (Observables oid)
 
std::vector< ObservableValueRm1_BK (Observables id, BKllConfig::B_Charge charge)
 
- Protected Member Functions inherited from DecayParent
QCDOrder check_max_order (QCDOrder order) const
 Clamp a requested QCD order to this decay's supported maximum.
 

Additional Inherited Members

- Protected Attributes inherited from DecayParent
QCDOrder max_order = QCDOrder::LO
 Maximum QCD order supported by this decay module (default: LO).
 
ObservablePortsConfigports
 Reference to the ports/configuration wiring this decay to the framework.
 
std::shared_ptr< IObsWilsonBuilderw_builder
 Wilson builder used to build/add Wilson groups for this decay.
 
std::shared_ptr< IObsWilsonProxyw_proxy
 Wilson proxy used at compute-time to query coefficients (matching/run).
 
std::shared_ptr< IObsCoreAPI< bool > > use_marty
 Port exposing whether the MARTY backend is active.
 
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< IObsQCDProxyiobs_qcdp
 QCD proxy (alpha_s, running masses, constants...).
 
std::shared_ptr< IWilsonFreezer< WGroupId > > iobs_wfreezer
 Freezer to freeze/unfreeze Wilson blocks when they are not needed by active decays.
 
std::shared_ptr< ObsWilsonHelperw_helper
 Per-manager Wilson lifecycle helper.
 
WilsonBuildConfig w_config {}
 Wilson build configuration used when enabling this decay (scales, order, groups).
 
bool enabled {false}
 Whether the decay is enabled (i.e. Wilson groups built and parameters loaded).
 
bool binned {false}
 Whether this decay requires q² bins before its observables can be computed.
 
DecayId id
 Unique decay identifier.
 
std::optional< std::vector< std::pair< double, double > > > bins
 Optional q^2 bins.
 

Detailed Description

Decay parent for the exclusive B > K l+ l- decays. Implements the integrated branching ratio, forward-backward asymmetry and flat term in several q² bins.

Definition at line 183 of file BKllDecay.h.

Constructor & Destructor Documentation

◆ BKllDecay()

BKllDecay::BKllDecay ( QCDOrder  order,
double  matching_scale,
double  hadronic_scale,
ObservablePortsConfig ports 
)
inline

Definition at line 185 of file BKllDecay.h.

Member Function Documentation

◆ a()

double BKllDecay::a ( double  q2)
protected

Definition at line 452 of file BKllDecay.cpp.

◆ A_FB()

std::vector< ObservableValue > BKllDecay::A_FB ( Observables  oid)
protected

Definition at line 583 of file BKllDecay.cpp.

◆ b()

double BKllDecay::b ( double  q2)
protected

Definition at line 461 of file BKllDecay.cpp.

◆ beta_l()

double BKllDecay::beta_l ( double  q2)
protected

Definition at line 287 of file BKllDecay.cpp.

◆ c()

double BKllDecay::c ( double  q2)
protected

Definition at line 465 of file BKllDecay.cpp.

◆ C7_eff()

complex_t BKllDecay::C7_eff ( double  q2)
protected

Definition at line 380 of file BKllDecay.cpp.

◆ C9_eff()

complex_t BKllDecay::C9_eff ( double  q2)
protected

Definition at line 386 of file BKllDecay.cpp.

◆ compute_binned_abc()

void BKllDecay::compute_binned_abc ( )
protected

Definition at line 469 of file BKllDecay.cpp.

◆ compute_observable() [1/2]

std::vector< ObservableValue > BKllDecay::compute_observable ( ObservableId  obs)
overridevirtual

Compute an observable given an internal observable identifier.

Parameters
obsInternal observable id.
Returns
One or more results as ObservableValue.

Implements DecayParent.

Definition at line 661 of file BKllDecay.cpp.

◆ compute_observable() [2/2]

std::vector< ObservableValue > BKllDecay::compute_observable ( Observables  obs)
overridevirtual

Compute an observable given a public observable enum.

Parameters
obsObservable enum id.
Returns
One or more results as ObservableValue.
Note
Some observables are binned; return multiple values or fill ObservableValue::bin.

Implements DecayParent.

Definition at line 622 of file BKllDecay.cpp.

◆ dBR_dq2()

std::vector< ObservableValue > BKllDecay::dBR_dq2 ( Observables  oid,
bool  br 
)
protected

Definition at line 560 of file BKllDecay.cpp.

◆ F_A()

complex_t BKllDecay::F_A ( double  q2)
protected

Definition at line 440 of file BKllDecay.cpp.

◆ F_A_high()

complex_t BKllDecay::F_A_high ( double  q2)
protected

Definition at line 409 of file BKllDecay.cpp.

◆ F_A_low()

complex_t BKllDecay::F_A_low ( double  q2)
protected

Definition at line 337 of file BKllDecay.cpp.

◆ F_H()

std::vector< ObservableValue > BKllDecay::F_H ( Observables  oid)
protected

Definition at line 592 of file BKllDecay.cpp.

◆ F_P()

complex_t BKllDecay::F_P ( double  q2)
protected

Definition at line 444 of file BKllDecay.cpp.

◆ F_P_high()

complex_t BKllDecay::F_P_high ( double  q2)
protected

Definition at line 413 of file BKllDecay.cpp.

◆ F_P_low()

complex_t BKllDecay::F_P_low ( double  q2)
protected

Definition at line 349 of file BKllDecay.cpp.

◆ F_S()

complex_t BKllDecay::F_S ( double  q2)
protected

Definition at line 448 of file BKllDecay.cpp.

◆ F_S_high()

complex_t BKllDecay::F_S_high ( double  q2)
protected

Definition at line 420 of file BKllDecay.cpp.

◆ F_S_low()

complex_t BKllDecay::F_S_low ( double  q2)
protected

Definition at line 367 of file BKllDecay.cpp.

◆ F_V()

complex_t BKllDecay::F_V ( double  q2)
protected

Definition at line 436 of file BKllDecay.cpp.

◆ F_V_high()

complex_t BKllDecay::F_V_high ( double  q2)
protected

Definition at line 404 of file BKllDecay.cpp.

◆ F_V_low()

complex_t BKllDecay::F_V_low ( double  q2)
protected

Definition at line 309 of file BKllDecay.cpp.

◆ fill_wilson_cache()

void BKllDecay::fill_wilson_cache ( )
protected

Definition at line 111 of file BKllDecay.cpp.

◆ get_config()

std::any BKllDecay::get_config ( ) const
inlineoverridevirtual

Return the current decay configuration when the decay has one.

The base implementation returns an empty std::any. Configurable decays that keep runtime options, such as form-factor source or internal thread count, override this so ObservableInterface worker clones can reproduce the same physics setup as the parent interface.

Reimplemented from DecayParent.

Definition at line 196 of file BKllDecay.h.

◆ get_n_threads()

size_t BKllDecay::get_n_threads ( ) const
inlineoverridevirtual

Return the currently configured worker-thread count.

Decays that do not implement internal parallelism return 1.

Reimplemented from DecayParent.

Definition at line 198 of file BKllDecay.h.

◆ interpolate()

complex_t BKllDecay::interpolate ( double  q2,
complex_t  val_low,
complex_t  val_high 
)
protected

Definition at line 425 of file BKllDecay.cpp.

◆ lambda()

double BKllDecay::lambda ( double  q2)
protected

Definition at line 292 of file BKllDecay.cpp.

◆ load_cfg_dependent_params()

void BKllDecay::load_cfg_dependent_params ( )
protected

Definition at line 129 of file BKllDecay.cpp.

◆ load_params()

void BKllDecay::load_params ( )
overridevirtual

Load and cache parameters needed by this decay.

Derived classes should read all relevant inputs through the proxies (e.g. p, w_proxy, iobs_qcdp) and store them internally.

This is called by enable after Wilson has been built and the proxy is ready.

Implements DecayParent.

Definition at line 81 of file BKllDecay.cpp.

◆ N()

double BKllDecay::N ( double  q2)
protected

Definition at line 305 of file BKllDecay.cpp.

◆ Rm1_BK()

std::vector< ObservableValue > BKllDecay::Rm1_BK ( Observables  id,
BKllConfig::B_Charge  charge 
)
protected

Definition at line 601 of file BKllDecay.cpp.

◆ set_config_spe()

void BKllDecay::set_config_spe ( BKllConfig  config)
inlineoverridevirtual

Strongly-typed configuration setter to implement in derived classes.

Parameters
configParsed configuration object.

Implements DecayParentConfigurable< BKllConfig >.

Definition at line 195 of file BKllDecay.h.

◆ set_lepton_gen_and_charge()

void BKllDecay::set_lepton_gen_and_charge ( BKllConfig::Lepton  gen,
BKllConfig::B_Charge  charge 
)
protected

Definition at line 273 of file BKllDecay.cpp.

◆ set_n_threads()

void BKllDecay::set_n_threads ( size_t  n_threads)
overridevirtual

Set the number of worker threads used by decays that support parallel cache filling.

The default implementation warns and leaves the decay unchanged. Derived decays with long QCDf/integration caches can override this method. Passing 0 means "use hardware_concurrency" for decays that support it.

Parameters
n_threadsRequested number of threads.

Reimplemented from DecayParent.

Definition at line 665 of file BKllDecay.cpp.

◆ supports_thread_config()

bool BKllDecay::supports_thread_config ( ) const
inlineoverridevirtual

Whether this decay supports runtime thread configuration.

Reimplemented from DecayParent.

Definition at line 199 of file BKllDecay.h.

◆ T_P_cached()

complex_t BKllDecay::T_P_cached ( double  q2)
protected

Definition at line 282 of file BKllDecay.cpp.


The documentation for this class was generated from the following files: