18 #ifndef __stir_recon_buildblock_PoissonLogLikelihoodWithLinearModelForMean_H__ 19 #define __stir_recon_buildblock_PoissonLogLikelihoodWithLinearModelForMean_H__ 110 template <
typename TargetT>
111 class PoissonLogLikelihoodWithLinearModelForMean :
public GeneralisedObjectiveFunction<TargetT>
114 typedef GeneralisedObjectiveFunction<TargetT> base_type;
132 void compute_sub_gradient_without_penalty(TargetT& gradient,
const TargetT& current_estimate,
const int subset_num)
override;
147 compute_sub_gradient_without_penalty_plus_sensitivity(TargetT& gradient,
const TargetT& current_estimate,
const int subset_num);
162 Succeeded set_up(shared_ptr<TargetT>
const& target_sptr)
override;
165 const TargetT& get_sensitivity()
const;
167 const TargetT& get_subset_sensitivity(
const int subset_num)
const;
170 virtual void add_subset_sensitivity(TargetT& sensitivity,
const int subset_num)
const = 0;
177 bool get_use_subset_sensitivities()
const;
180 bool get_recompute_sensitivity()
const;
184 std::string get_sensitivity_filename()
const;
190 std::string get_subsensitivity_filenames()
const;
194 std::string get_subsensitivity_filename(
const int subset_num)
const;
203 void set_recompute_sensitivity(
const bool);
204 void set_subset_sensitivity_sptr(
const shared_ptr<TargetT>&,
const int subset_num);
207 void set_use_subset_sensitivities(
const bool);
211 void set_sensitivity_filename(
const std::string&);
219 void set_subsensitivity_filenames(
const std::string&);
225 void fill_nonidentifiable_target_parameters(TargetT& target,
const float value)
const override;
228 std::string sensitivity_filename;
229 std::string subsensitivity_filenames;
230 bool recompute_sensitivity;
231 bool use_subset_sensitivities;
233 VectorWithOffset<shared_ptr<TargetT>> subsensitivity_sptrs;
234 shared_ptr<TargetT> sensitivity_sptr;
237 shared_ptr<TargetT> get_subset_sensitivity_sptr(
const int subset_num)
const;
246 void set_total_or_subset_sensitivities();
250 virtual Succeeded set_up_before_sensitivity(shared_ptr<const TargetT>
const& target_sptr) = 0;
257 void compute_sensitivities();
274 virtual void actual_compute_subset_gradient_without_penalty(TargetT& gradient,
275 const TargetT& current_estimate,
276 const int subset_num,
277 const bool add_sensitivity)
284 void set_defaults()
override;
285 void initialise_keymap()
override;
286 bool post_processing()
override;
Declaration of class stir::GeneralisedObjectiveFunction.