Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
DecayParentConfigurable< T > Class Template Referenceabstract

Typed configuration adapter for DecayParent using std::any. More...

#include <DecayParent.h>

Inheritance diagram for DecayParentConfigurable< T >:
Collaboration diagram for DecayParentConfigurable< T >:

Public Member Functions

 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).
 
virtual void set_config_spe (T config)=0
 Strongly-typed configuration setter to implement in derived classes.
 
- 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).
 
virtual void load_params ()=0
 Load and cache parameters needed by this decay.
 
virtual std::vector< ObservableValuecompute_observable (Observables obs)=0
 Compute an observable given a public observable enum.
 
virtual std::vector< ObservableValuecompute_observable (ObservableId obs)=0
 Compute an observable given an internal observable identifier.
 
virtual std::any get_config () const
 Return the current decay configuration when the decay has one.
 
virtual void set_n_threads (size_t n_threads)
 Set the number of worker threads used by decays that support parallel cache filling.
 
virtual size_t get_n_threads () const
 Return the currently configured worker-thread count.
 
virtual bool supports_thread_config () const
 Whether this decay supports runtime thread configuration.
 
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.
 

Additional Inherited Members

- Protected Member Functions inherited from DecayParent
QCDOrder check_max_order (QCDOrder order) const
 Clamp a requested QCD order to this decay's supported maximum.
 
- 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

template<typename T>
class DecayParentConfigurable< T >

Typed configuration adapter for DecayParent using std::any.

This helper template implements DecayParent::set_config by attempting to extract a configuration object of type T from the provided std::any, then forwarding it to a strongly-typed virtual method set_config_spe.

This avoids repeating std::any boilerplate in each derived class.

Example:

struct MyConfig { double x; };
class MyDecay : public DecayParentConfigurable<MyConfig> {
public:
void set_config_spe(MyConfig cfg) override { myx = cfg.x; }
...
};
Typed configuration adapter for DecayParent using std::any.
DecayParentConfigurable(DecayId id, double matching_scale, double hadronic_scale, QCDOrder order, ObservablePortsConfig &ports)
Construct a configurable decay module.

Definition at line 363 of file DecayParent.h.

Constructor & Destructor Documentation

◆ DecayParentConfigurable()

template<typename T >
DecayParentConfigurable< T >::DecayParentConfigurable ( DecayId  id,
double  matching_scale,
double  hadronic_scale,
QCDOrder  order,
ObservablePortsConfig ports 
)
inline

Construct a configurable decay module.

Parameters
idDecay id.
matching_scaleMatching scale mu_W.
hadronic_scaleHadronic scale mu_h.
orderRequested QCD order.
portsPorts configuration.

Definition at line 374 of file DecayParent.h.

Member Function Documentation

◆ set_config()

template<typename T >
void DecayParentConfigurable< T >::set_config ( std::any  cfg)
inlinefinaloverridevirtual

Type-erased config setter (final).

Accepts:

  • T
  • const T

Forwards to set_config_spe(T).

Parameters
cfgType-erased configuration.
Exceptions
std::bad_any_castif cfg does not contain T / const T.

Implements DecayParent.

Definition at line 391 of file DecayParent.h.

◆ set_config_spe()

template<typename T >
virtual void DecayParentConfigurable< T >::set_config_spe ( T  config)
pure virtual

Strongly-typed configuration setter to implement in derived classes.

Parameters
configParsed configuration object.

Implemented in BDlnuDecay, BDstarlnuDecay, BKllDecay, BKstarGammaDecay, BKstarllDecay, BsPhiDecay, BXsllDecay, KllDecay, and LbLllDecay.


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