laddu_extensions/likelihood/
term.rs1use std::collections::HashMap;
2
3use dyn_clone::DynClone;
4use laddu_core::{amplitude::ParameterMap, LadduResult};
5use nalgebra::DVector;
6
7use super::LikelihoodExpression;
8
9pub trait LikelihoodTerm: DynClone + Send + Sync {
12 fn evaluate(&self, parameters: &[f64]) -> LadduResult<f64>;
14 fn evaluate_gradient(&self, parameters: &[f64]) -> LadduResult<DVector<f64>>;
16 fn fix_parameter(&self, _name: &str, _value: f64) -> LadduResult<()> {
18 Ok(())
19 }
20 fn free_parameter(&self, _name: &str) -> LadduResult<()> {
22 Ok(())
23 }
24 fn rename_parameter(&self, _old: &str, _new: &str) -> LadduResult<()> {
26 Ok(())
27 }
28 fn rename_parameters(&self, _mapping: &HashMap<String, String>) -> LadduResult<()> {
30 Ok(())
31 }
32 fn parameter_map(&self) -> ParameterMap {
34 ParameterMap::default()
35 }
36 fn update(&self) {}
38
39 fn into_expression(self) -> LadduResult<LikelihoodExpression>
44 where
45 Self: Sized + 'static,
46 {
47 LikelihoodExpression::from_term(Box::new(self))
48 }
49}
50
51dyn_clone::clone_trait_object!(LikelihoodTerm);