21 #ifndef __stir_recon_buildblock_GeneralisedPrior_H__ 22 #define __stir_recon_buildblock_GeneralisedPrior_H__ 41 template <
typename DataT>
51 virtual double compute_value(
const DataT& current_estimate) = 0;
57 virtual void compute_gradient(DataT& prior_gradient,
const DataT& current_estimate) = 0;
66 virtual double compute_gradient_times_input(
const DataT& input,
const DataT& current_estimate);
76 virtual void compute_Hessian(DataT& prior_Hessian_for_single_densel,
78 const DataT& current_image_estimate)
const;
87 virtual void compute_Hessian_diagonal(DataT& Hessian_diagonal,
const DataT& current_estimate)
const;
96 virtual void add_multiplication_with_approximate_Hessian(DataT& output,
const DataT& input)
const;
103 virtual void accumulate_Hessian_times_input(DataT& output,
const DataT& current_estimate,
const DataT& input)
const;
105 inline float get_penalisation_factor()
const;
106 inline void set_penalisation_factor(
float new_penalisation_factor);
109 virtual Succeeded set_up(shared_ptr<const DataT>
const& target_sptr);
113 virtual bool is_convex()
const = 0;
116 float penalisation_factor;
119 void set_defaults()
override;
122 void initialise_keymap()
override;
125 virtual void check(DataT
const& current_estimate)
const;
127 bool _already_set_up;
Declaration of class stir::Succeeded.
Declaration of class stir::ParsingObject.
A base class for 'generalised' priors, i.e. priors for which at least a 'gradient' is defined...
Definition: GeneralisedPrior.h:42
Inline implementations for class stir::GeneralisedPrior.
Declaration of class stiir::RegisteredObject.
Helper class to provide registry mechanisms to a Base classSuppose you have a hierarchy of classes wi...
Definition: RegisteredObject.h:95
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43