22using std::chrono::high_resolution_clock;
23using std::chrono::duration;
105 std::shared_ptr<IObsParameterProxy<ParamId, DataType, std::string, LhaID>>
p;
129 std::optional<std::vector<std::pair<double, double>>>
bins;
283 void set_bins(std::vector<std::pair<double, double>> new_bins);
290 void add_bin(std::pair<double, double> new_bin);
295 std::optional<std::vector<std::pair<double, double>>>
get_bins();
393 if (
auto p = std::any_cast<std::add_const_t<T>>(&cfg)) {
set_config_spe(*
p);
return; }
394 throw std::bad_any_cast{};
Configuration structures used to control Wilson coefficient computations, strong coupling evaluations...
Read-only proxy to access parameters needed by observable computations.
Observable-side builder for Wilson coefficient services.
Per-manager helper that manages the Wilson group lifecycle for observable computations.
Observable-facing proxy to query Wilson coefficients.
Typed configuration adapter for DecayParent using std::any.
void set_config(std::any cfg) final override
Type-erased config setter (final).
DecayParentConfigurable(DecayId id, double matching_scale, double hadronic_scale, QCDOrder order, ObservablePortsConfig &ports)
Construct a configurable decay module.
virtual void set_config_spe(T config)=0
Strongly-typed configuration setter to implement in derived classes.
Abstract base class for a decay/observable module.
DecayId id
Unique decay identifier.
bool enabled
Whether the decay is enabled (i.e. Wilson groups built and parameters loaded).
virtual std::any get_config() const
Return the current decay configuration when the decay has one.
virtual void load_params()=0
Load and cache parameters needed by this decay.
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).
virtual std::vector< ObservableValue > compute_observable(Observables obs)=0
Compute an observable given a public observable enum.
QCDOrder get_order() const
Return the currently configured QCD order for this decay.
std::shared_ptr< IWilsonFreezer< WGroupId > > iobs_wfreezer
Freezer to freeze/unfreeze Wilson blocks when they are not needed by active decays.
virtual void set_config(std::any cfg)=0
Set a configuration blob for this decay.
ObservablePortsConfig & ports
Reference to the ports/configuration wiring this decay to the framework.
bool is_enabled() const
Return whether the decay has already been enabled.
virtual void set_n_threads(size_t n_threads)
Set the number of worker threads used by decays that support parallel cache filling.
std::optional< std::vector< std::pair< double, double > > > bins
Optional q^2 bins.
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).
void add_bin(std::pair< double, double > new_bin)
Adds a bin to the observables related to this decay.
void enable()
Enable the decay module (build Wilson groups and load parameters).
QCDOrder max_order
Maximum QCD order supported by this decay module (default: LO).
void set_bins(std::vector< std::pair< double, double > > new_bins)
Set the binning for the observables related to this decay.
virtual size_t get_n_threads() const
Return the currently configured worker-thread count.
void disable()
Disable the decay module.
void bind_wilson_builder(std::shared_ptr< IObsWilsonBuilder > &wilson_builder)
Bind a Wilson builder to this decay.
virtual std::vector< ObservableValue > compute_observable(ObservableId obs)=0
Compute an observable given an internal observable identifier.
virtual bool is_observable_binned(ObservableId) const
Return whether one observable of this decay requires q² bins.
void set_order(QCDOrder new_order)
Set the QCD order for this decay (one-shot policy).
bool is_binned() const
Return whether this decay has at least one observable requiring q² bins.
virtual ~DecayParent()=default
virtual bool supports_thread_config() const
Whether this decay supports runtime thread configuration.
std::shared_ptr< IObsWilsonProxy > w_proxy
Wilson proxy used at compute-time to query coefficients (matching/run).
std::shared_ptr< IObsQCDProxy > iobs_qcdp
QCD proxy (alpha_s, running masses, constants...).
std::shared_ptr< ObsWilsonHelper > w_helper
Per-manager Wilson lifecycle helper.
DecayId get_id()
Return the decay identifier.
std::optional< std::vector< std::pair< double, double > > > get_bins()
Returns the current binning of the decay.
QCDOrder check_max_order(QCDOrder order) const
Clamp a requested QCD order to this decay's supported maximum.
virtual bool is_observable_binned(Observables obs) const
Convenience overload for public observable enum ids.
std::shared_ptr< IObsWilsonBuilder > w_builder
Wilson builder used to build/add Wilson groups for this decay.
static IdOf< ObservableTag > to_id(Observables e)
Converts an enum value to an IdOf<Tag>.
double T(double x)
Wilson coefficient T(x).
DecayParentConfigurable(DecayId id, double matching_scale, double hadronic_scale, QCDOrder order, ObservablePortsConfig &ports)
void set_config(std::any) final override
No-op configuration setter for default config.
Dependency container (“ports”) for observable computations.
Configuration for building sets of Wilson coefficients.
QCDOrder order
Perturbative QCD order used for the evolution and matching of Wilson coefficients....