STIR  6.2.0
ProjMatrixByBinUsingRayTracing.h
Go to the documentation of this file.
1 
11 /*
12  Copyright (C) 2000 PARAPET partners
13  Copyright (C) 2000-2009, Hammersmith Imanet Ltd
14  Copyright (C) 2014, University College London
15  This file is part of STIR.
16 
17  SPDX-License-Identifier: Apache-2.0 AND License-ref-PARAPET-license
18 
19  See STIR/LICENSE.txt for details
20 */
21 #ifndef __ProjMatrixByBinUsingRayTracing__
22 #define __ProjMatrixByBinUsingRayTracing__
23 
27 #include "stir/shared_ptr.h"
28 
29 START_NAMESPACE_STIR
30 
31 template <int num_dimensions, typename elemT>
32 class DiscretisedDensity;
33 class ProjDataInfo;
34 
113  : public RegisteredParsingObject<ProjMatrixByBinUsingRayTracing, ProjMatrixByBin, ProjMatrixByBin>
114 {
115 public:
117  static const char* const registered_name;
118 
121 
123 
125  void set_up(const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
126  const shared_ptr<const DiscretisedDensity<3, float>>& density_info_ptr // TODO should be Info only
127  ) override;
128 
129  ProjMatrixByBinUsingRayTracing* clone() const override;
130 
133  bool get_restrict_to_cylindrical_FOV() const;
134  void set_restrict_to_cylindrical_FOV(bool);
138  int get_num_tangential_LORs() const;
139  void set_num_tangential_LORs(int);
141 
144  bool get_use_actual_detector_boundaries() const;
145  void set_use_actual_detector_boundaries(bool);
147 
150  bool get_do_symmetry_90degrees_min_phi() const;
151  void set_do_symmetry_90degrees_min_phi(bool);
152 
153  bool get_do_symmetry_180degrees_min_phi() const;
154  void set_do_symmetry_180degrees_min_phi(bool);
155 
156  bool get_do_symmetry_swap_segment() const;
157  void set_do_symmetry_swap_segment(bool);
158 
159  bool get_do_symmetry_swap_s() const;
160  void set_do_symmetry_swap_s(bool);
161 
162  bool get_do_symmetry_shift_z() const;
163  void set_do_symmetry_shift_z(bool);
165 
166 private:
168 
170  bool already_setup;
171 
173  bool restrict_to_cylindrical_FOV;
175  int num_tangential_LORs;
177  bool use_actual_detector_boundaries;
178  bool do_symmetry_90degrees_min_phi;
179  bool do_symmetry_180degrees_min_phi;
180  bool do_symmetry_swap_segment;
181  bool do_symmetry_swap_s;
182  bool do_symmetry_shift_z;
183 
184  // explicitly list necessary members for image details (should use an Info object instead)
185  CartesianCoordinate3D<float> voxel_size;
187  CartesianCoordinate3D<int> min_index;
188  CartesianCoordinate3D<int> max_index;
189 
190  void calculate_proj_matrix_elems_for_one_bin(ProjMatrixElemsForOneBin&) const override;
191 
192  void set_defaults() override;
193  void initialise_keymap() override;
194  bool post_processing() override;
195 };
196 
197 END_NAMESPACE_STIR
198 
199 #endif
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast (or corresponding b...
declaration of stir::ProjMatrixByBin and its helpers classes
static const char *const registered_name
Name which will be used when parsing a ProjMatrixByBin object.
Definition: ProjMatrixByBinUsingRayTracing.h:117
Computes projection matrix elements for VoxelsOnCartesianGrid images by using a Length of Intersectio...
Definition: ProjMatrixByBinUsingRayTracing.h:112
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files...
Definition: RegisteredParsingObject.h:77
This stores the non-zero projection matrix elements for every &#39;densel&#39; that contributes to a given bi...
Definition: ProjMatrixElemsForOneBin.h:68
defines the stir::CartesianCoordinate3D<coordT> class
Declaration of class stir::RegisteredParsingObject.