STIR 6.4.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
29START_NAMESPACE_STIR
30
31template <int num_dimensions, typename elemT>
32class DiscretisedDensity;
33class ProjDataInfo;
34
111
113 : public RegisteredParsingObject<ProjMatrixByBinUsingRayTracing, ProjMatrixByBin, ProjMatrixByBin>
114{
115public:
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
166private:
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)
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
197END_NAMESPACE_STIR
198
199#endif
defines the stir::CartesianCoordinate3D<coordT> class
declaration of stir::ProjMatrixByBin and its helpers classes
Declaration of class stir::RegisteredParsingObject.
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
static const char *const registered_name
Name which will be used when parsing a ProjMatrixByBin object.
Definition ProjMatrixByBinUsingRayTracing.h:117
void set_up(const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float > > &density_info_ptr) override
Stores all necessary geometric info.
Definition ProjMatrixByBinUsingRayTracing.cxx:239
ProjMatrixByBinUsingRayTracing()
Default constructor (calls set_defaults())
Definition ProjMatrixByBinUsingRayTracing.cxx:69
This stores the non-zero projection matrix elements for every 'densel' that contributes to a given bi...
Definition ProjMatrixElemsForOneBin.h:69
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files.
Definition RegisteredParsingObject.h:78
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...