laddu_likelihood/
error.rs1use laddu_data::LadduDataError;
2use laddu_expr::parameters::ParamError;
3use laddu_runtime::RuntimeError;
4use thiserror::Error;
5
6pub type LikelihoodResult<T> = Result<T, LikelihoodError>;
8
9#[derive(Clone, Debug, Error)]
11pub enum LikelihoodError {
12 #[error(transparent)]
14 Data(#[from] LadduDataError),
15 #[error(transparent)]
17 Runtime(#[from] RuntimeError),
18 #[error(transparent)]
20 Params(#[from] ParamError),
21 #[error("{dataset} intensity must be positive for a likelihood term, got {value}")]
23 NonPositiveIntensity {
24 dataset: &'static str,
26 value: f64,
28 },
29 #[error("accepted MC integral must be positive for acceptance correction, got {0}")]
31 NonPositiveAcceptedIntegral(f64),
32 #[error("luminosity must be positive for a cross section, got {0}")]
34 NonPositiveLuminosity(f64),
35 #[error("duplicate likelihood term name: {0}")]
37 DuplicateTermName(String),
38 #[error("unknown likelihood term: {0}")]
40 MissingTerm(String),
41 #[error("likelihood term is not an intensity term: {0}")]
43 NotIntensityTerm(String),
44 #[error("likelihood term does not determine an absolute rate: {0}")]
46 AbsoluteRateUnavailable(String),
47 #[error("likelihood term {term} references unknown parameter {parameter}")]
49 MissingParameter {
50 term: String,
52 parameter: String,
54 },
55 #[error("likelihood term {term} has invalid penalty weight {lambda}")]
57 InvalidPenaltyWeight {
58 term: String,
60 lambda: f64,
62 },
63 #[error("parameter values were built for a different likelihood parameter layout")]
65 ParameterLayoutMismatch,
66 #[error("gradient has length {actual}, expected {expected}")]
68 GradientLengthMismatch {
69 expected: usize,
71 actual: usize,
73 },
74 #[error("likelihood term has not been resolved: {0}")]
76 UnresolvedTerm(String),
77 #[error("stochastic batch fraction must be in (0, 1], got {0}")]
79 InvalidBatchFraction(f64),
80 #[error("invalid cross-section analysis: {0}")]
82 InvalidCrossSection(String),
83}