STIR  6.2.0
PriorWithParabolicSurrogate.h
Go to the documentation of this file.
1 //
2 //
12 /*
13  Copyright (C) 2002- 2009, Hammersmith Imanet Ltd
14  This file is part of STIR.
15 
16  SPDX-License-Identifier: Apache-2.0
17 
18  See STIR/LICENSE.txt for details
19 */
20 
21 #ifndef __stir_recon_buildblock_PriorWithParabolicSurrogate_H__
22 #define __stir_recon_buildblock_PriorWithParabolicSurrogate_H__
23 
25 #include "stir/BasicCoordinate.h"
26 
27 START_NAMESPACE_STIR
28 
38 template <typename TargetT>
40 {
41 public:
43  virtual void parabolic_surrogate_curvature(TargetT& parabolic_surrogate_curvature, const TargetT& current_estimate) = 0;
44 
46 
48  virtual bool parabolic_surrogate_curvature_depends_on_argument() const { return true; }
49 #if 0
50  // TODO this does not work for arbitrary TargetT, but only 3-dimensional things
51  // maybe we could have a TargetT::index_type or so
52  virtual void
53  compute_Hessian(TargetT& prior_Hessian_for_single_densel,
54  const BasicCoordinate<3,int>& coords,
55  const TargetT &current_estimate) =0;
56 #endif
57 };
58 
59 END_NAMESPACE_STIR
60 
61 #endif
virtual bool parabolic_surrogate_curvature_depends_on_argument() const
A function that allows skipping some computations if the curvature is independent of the current_esti...
Definition: PriorWithParabolicSurrogate.h:48
This file declares class stir::BasicCoordinate and some functions acting on stir::BasicCoordinate obj...
A base class for &#39;generalised&#39; priors, i.e. priors for which at least a &#39;gradient&#39; is defined...
Definition: GeneralisedPrior.h:41
this class implements priors with a parabolic surrogate curvature
Definition: PriorWithParabolicSurrogate.h:39
Declaration of class stir::GeneralisedPrior.