STIR  6.3.0
SRT2DReconstruction.h
Go to the documentation of this file.
1 #ifndef __stir_analytic_SRT2D_SRT2DReconstruction_H__
2 #define __stir_analytic_SRT2D_SRT2DReconstruction_H__
3 /*
4  Copyright (C) 2012-2016, 2023-2024, Dimitra Kyriakopoulou
5  Copyright (C) 2024, University College London
6  This file is part of STIR.
7 
8  SPDX-License-Identifier: Apache-2.0
9 
10  See STIR/LICENSE.txt for details
11 */
29 #include <string>
30 #include <vector>
31 #include "stir/shared_ptr.h"
32 
33 START_NAMESPACE_STIR
34 
35 template <int num_dimensions, typename elemT>
36 class DiscretisedDensity;
37 class Succeeded;
38 class ProjData;
39 
73  : public RegisteredParsingObject<SRT2DReconstruction, Reconstruction<DiscretisedDensity<3, float>>, AnalyticReconstruction>
74 {
75  // typedef AnalyticReconstruction base_type;
77  base_type;
78 #ifdef SWIG
79  // work-around swig problem. It gets confused when using a private (or protected)
80  // typedef in a definition of a public typedef/member
81  public:
82 #else
83 private:
84 #endif
86 
87 public:
89  static constexpr const char* const registered_name = "SRT2D";
90 
97  explicit SRT2DReconstruction(const std::string& parameter_filename);
98 
99  SRT2DReconstruction(const shared_ptr<ProjData>& proj_data_ptr_v, const int num_segments_to_combine = -1);
100  virtual std::string method_info() const;
101 
102  virtual void ask_parameters();
103 
104  virtual Succeeded set_up(shared_ptr<TargetT> const& target_data_sptr);
105 
106 protected: // make parameters protected such that doc shows always up in doxygen
107  // parameters used for parsing
108 
110 
116 
117 private:
118  Succeeded actual_reconstruct(shared_ptr<DiscretisedDensity<3, float>> const& target_image_ptr);
119 
120  virtual void set_defaults();
121  virtual void initialise_keymap();
122  virtual bool post_processing();
123 
135  void spline(const std::vector<float>& x, const std::vector<float>& y, int n, std::vector<float>& y2) const;
136 
153  float hilbert_der(float x,
154  const std::vector<float>& f,
155  const std::vector<float>& ddf,
156  const std::vector<float>& p,
157  int sp,
158  const std::vector<float>& lg,
159  float termC) const;
160 
171  float integ(float dist, int max, const std::vector<float>& ff) const;
172 };
173 
174 END_NAMESPACE_STIR
175 
176 #endif
base class for all analytic reconstruction algorithmsThis class provides extra functinoality (compare...
Definition: AnalyticReconstruction.h:50
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...
Reconstruction class for 2D Spline Reconstruction Technique.
Definition: SRT2DReconstruction.h:72
declares the stir::AnalyticReconstruction class
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files...
Definition: RegisteredParsingObject.h:77
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
Declaration of class stir::RegisteredParsingObject.
int num_segments_to_combine
number of segments to combine (with SSRB) before starting 2D reconstruction
Definition: SRT2DReconstruction.h:115