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

Default implementation of a profileable negative log-likelihood. More...

#include <BaseLikelihood.h>

Inheritance diagram for BaseLikelihood:
Collaboration diagram for BaseLikelihood:

Public Member Functions

 BaseLikelihood (const ModelFn &model, std::shared_ptr< LikelihoodContext > ctx, size_t p_dim)
 Constructs a likelihood from a model and statistical context.
 
double nll (const std::vector< double > &theta) const override
 Evaluates the negative log-likelihood for a full parameter vector.
 
std::vector< fit_app::ParameterDefinitionget_param_defs () const override
 Returns all parameter definitions in likelihood-vector order.
 
std::size_t dim () const override
 Returns the total likelihood dimension.
 
void enable_debug_trace (std::size_t max_evals=25)
 Enables debug tracing for likelihood evaluations.
 
void disable_debug_trace ()
 Disables debug tracing of likelihood evaluations.
 
std::size_t p_dimension () const override
 Returns the dimension of the fitted-parameter block.
 
std::size_t eta_dimension () const override
 Returns the dimension of the nuisance-parameter block.
 
std::vector< double > central_p () const override
 Returns the central values of the fitted parameters.
 
std::vector< double > central_eta () const override
 Returns the central values of the nuisance parameters.
 
std::vector< double > predict (const std::vector< double > &p, const std::vector< double > &eta) const override
 
std::vector< double > residuals (const std::vector< double > &p, const std::vector< double > &eta) const override
 
double nll_from_split (const std::vector< double > &p, const std::vector< double > &eta) const override
 
RealMatrix observable_curvature (const std::vector< double > &r) const override
 
RealMatrix nuisance_curvature (const std::vector< double > &eta) const override
 
- Public Member Functions inherited from ILikelihood
virtual ~ILikelihood ()=default
 Virtual destructor for safe polymorphic deletion.
 

Protected Attributes

std::shared_ptr< LikelihoodContextctx
 Shared statistical context used by the likelihood.
 
ModelFn model
 Model function evaluated by the likelihood.
 
std::size_t p_dim
 Dimension of the fitted-parameter block.
 
bool debug_trace_enabled_ = false
 Whether evaluation debug tracing is enabled.
 
std::size_t debug_trace_max_evals_ = 0
 Maximum number of traced evaluations.
 
std::size_t debug_eval_count_ = 0
 Number of evaluations already traced.
 
bool debug_have_ref_theta_ = false
 Whether the debug reference parameter vector is set.
 
bool debug_have_ref_res_ = false
 Whether the debug reference residual vector is set.
 
std::vector< double > debug_ref_theta_
 First traced parameter vector used as debug reference.
 
std::vector< double > debug_ref_res_
 First traced residual vector used as debug reference.
 

Detailed Description

Default implementation of a profileable negative log-likelihood.

BaseLikelihood evaluates

\[
  -\log L(p, \eta)
  = -\left[\log f_{obs}(m(p,\eta) - y_{obs})
      + \log f_{nuis}(\eta)\right],
\]

where $m(p,\eta)$ is the model prediction and $y_{obs}$ are the nominal experimental observable values stored in LikelihoodContext.

The class also exposes diagnostic helpers for profiling workflows, including central values, split-parameter evaluation, residual computation and local curvature matrices.

Note
If model evaluation or density evaluation produces a non-finite value, the implementation returns a large finite penalty value instead of propagating NaNs through the optimizer.

Definition at line 75 of file BaseLikelihood.h.

Constructor & Destructor Documentation

◆ BaseLikelihood()

BaseLikelihood::BaseLikelihood ( const ModelFn model,
std::shared_ptr< LikelihoodContext ctx,
size_t  p_dim 
)

Constructs a likelihood from a model and statistical context.

Parameters
modelModel function used to compute observable predictions.
ctxShared likelihood context containing distributions and parameter definitions.
p_dimDimension of the fitted-parameter block $p$.

Definition at line 3 of file BaseLikelihood.cpp.

Member Function Documentation

◆ central_eta()

std::vector< double > BaseLikelihood::central_eta ( ) const
overridevirtual

Returns the central values of the nuisance parameters.

Returns
Vector containing the nominal values of $\eta$.

Implements IProfileableLikelihood.

Definition at line 137 of file BaseLikelihood.cpp.

◆ central_p()

std::vector< double > BaseLikelihood::central_p ( ) const
overridevirtual

Returns the central values of the fitted parameters.

Returns
Vector containing the nominal values of $p$.

Implements IProfileableLikelihood.

Definition at line 126 of file BaseLikelihood.cpp.

◆ dim()

std::size_t BaseLikelihood::dim ( ) const
overridevirtual

Returns the total likelihood dimension.

Returns
Sum of fitted-parameter and nuisance-parameter dimensions.

Implements ILikelihood.

Reimplemented in ChiSquaredLikelihood.

Definition at line 114 of file BaseLikelihood.cpp.

◆ disable_debug_trace()

void BaseLikelihood::disable_debug_trace ( )
inline

Disables debug tracing of likelihood evaluations.

Definition at line 144 of file BaseLikelihood.h.

◆ enable_debug_trace()

void BaseLikelihood::enable_debug_trace ( std::size_t  max_evals = 25)
inline

Enables debug tracing for likelihood evaluations.

When enabled, the first max_evals evaluations print diagnostic information such as the negative log-likelihood value, observable and nuisance log-density terms, and maximum shifts relative to the first traced point.

Parameters
max_evalsMaximum number of evaluations to print.

Definition at line 131 of file BaseLikelihood.h.

◆ eta_dimension()

std::size_t BaseLikelihood::eta_dimension ( ) const
overridevirtual

Returns the dimension of the nuisance-parameter block.

Returns
Number of scalar parameters in $\eta$.

Implements IProfileableLikelihood.

Definition at line 122 of file BaseLikelihood.cpp.

◆ get_param_defs()

std::vector< fit_app::ParameterDefinition > BaseLikelihood::get_param_defs ( ) const
inlineoverridevirtual

Returns all parameter definitions in likelihood-vector order.

The returned list contains fitted-parameter definitions first, followed by nuisance-parameter definitions.

Returns
Ordered list of fitted and nuisance parameter definitions.

Implements ILikelihood.

Definition at line 108 of file BaseLikelihood.h.

◆ nll()

double BaseLikelihood::nll ( const std::vector< double > &  theta) const
overridevirtual

Evaluates the negative log-likelihood for a full parameter vector.

The input vector is split as $\theta = (p, \eta)$ using the fitted parameter dimension provided at construction.

Parameters
thetaFull parameter vector ordered as fitted parameters followed by nuisance parameters.
Returns
Negative log-likelihood value, or a large finite penalty if the evaluation is numerically invalid.

Implements ILikelihood.

Reimplemented in ChiSquaredLikelihood.

Definition at line 68 of file BaseLikelihood.cpp.

◆ nll_from_split()

double BaseLikelihood::nll_from_split ( const std::vector< double > &  p,
const std::vector< double > &  eta 
) const
overridevirtual

Implements IProfileableLikelihood.

Definition at line 172 of file BaseLikelihood.cpp.

◆ nuisance_curvature()

RealMatrix BaseLikelihood::nuisance_curvature ( const std::vector< double > &  eta) const
overridevirtual

Implements IProfileableLikelihood.

Reimplemented in ChiSquaredLikelihood.

Definition at line 206 of file BaseLikelihood.cpp.

◆ observable_curvature()

RealMatrix BaseLikelihood::observable_curvature ( const std::vector< double > &  r) const
overridevirtual

Implements IProfileableLikelihood.

Reimplemented in ChiSquaredLikelihood.

Definition at line 184 of file BaseLikelihood.cpp.

◆ p_dimension()

std::size_t BaseLikelihood::p_dimension ( ) const
overridevirtual

Returns the dimension of the fitted-parameter block.

Returns
Number of scalar parameters in $p$.

Implements IProfileableLikelihood.

Definition at line 118 of file BaseLikelihood.cpp.

◆ predict()

std::vector< double > BaseLikelihood::predict ( const std::vector< double > &  p,
const std::vector< double > &  eta 
) const
overridevirtual

Implements IProfileableLikelihood.

Definition at line 148 of file BaseLikelihood.cpp.

◆ residuals()

std::vector< double > BaseLikelihood::residuals ( const std::vector< double > &  p,
const std::vector< double > &  eta 
) const
overridevirtual

Implements IProfileableLikelihood.

Definition at line 155 of file BaseLikelihood.cpp.

Member Data Documentation

◆ ctx

std::shared_ptr<LikelihoodContext> BaseLikelihood::ctx
protected

Shared statistical context used by the likelihood.

Definition at line 189 of file BaseLikelihood.h.

◆ debug_eval_count_

std::size_t BaseLikelihood::debug_eval_count_ = 0
mutableprotected

Number of evaluations already traced.

Definition at line 195 of file BaseLikelihood.h.

◆ debug_have_ref_res_

bool BaseLikelihood::debug_have_ref_res_ = false
mutableprotected

Whether the debug reference residual vector is set.

Definition at line 198 of file BaseLikelihood.h.

◆ debug_have_ref_theta_

bool BaseLikelihood::debug_have_ref_theta_ = false
mutableprotected

Whether the debug reference parameter vector is set.

Definition at line 197 of file BaseLikelihood.h.

◆ debug_ref_res_

std::vector<double> BaseLikelihood::debug_ref_res_
mutableprotected

First traced residual vector used as debug reference.

Definition at line 200 of file BaseLikelihood.h.

◆ debug_ref_theta_

std::vector<double> BaseLikelihood::debug_ref_theta_
mutableprotected

First traced parameter vector used as debug reference.

Definition at line 199 of file BaseLikelihood.h.

◆ debug_trace_enabled_

bool BaseLikelihood::debug_trace_enabled_ = false
mutableprotected

Whether evaluation debug tracing is enabled.

Definition at line 193 of file BaseLikelihood.h.

◆ debug_trace_max_evals_

std::size_t BaseLikelihood::debug_trace_max_evals_ = 0
mutableprotected

Maximum number of traced evaluations.

Definition at line 194 of file BaseLikelihood.h.

◆ model

ModelFn BaseLikelihood::model
protected

Model function evaluated by the likelihood.

Definition at line 190 of file BaseLikelihood.h.

◆ p_dim

std::size_t BaseLikelihood::p_dim
protected

Dimension of the fitted-parameter block.

Definition at line 191 of file BaseLikelihood.h.


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