STIR 6.4.0
ProjMatrixByDenselUsingRayTracing.h
Go to the documentation of this file.
1//
2//
12/*
13 Copyright (C) 2000- 2002, IRSL
14 See STIR/LICENSE.txt for details
15*/
16#ifndef __ProjMatrixByDenselUsingRayTracing__
17#define __ProjMatrixByDenselUsingRayTracing__
18
22
23START_NAMESPACE_STIR
24
25template <int num_dimensions, typename elemT>
26class DiscretisedDensity;
27class DataSymmetriesForDensels_PET_CartesianGrid;
28
53
55 : public RegisteredParsingObject<ProjMatrixByDenselUsingRayTracing, ProjMatrixByDenselOnCartesianGridUsingElement>
56{
58
59public:
61 static const char* const registered_name;
62
65
67
69 void set_up(const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
70 const shared_ptr<const DiscretisedDensity<3, float>>& density_info_ptr // TODO should be Info only
71 ) override;
72
73 const DataSymmetriesForDensels* get_symmetries_ptr() const override;
74
75 float get_element(const Bin&, const CartesianCoordinate3D<float>&) const override;
76
77private:
78 shared_ptr<DataSymmetriesForDensels_PET_CartesianGrid> symmetries_ptr;
79#if 0
81 bool restrict_to_cylindrical_FOV;
82#endif
84 int num_tangential_LORs;
86 bool use_actual_detector_boundaries;
87
88 // explicitly list necessary members for image details (should use an Info object instead)
89 // ideally these should be const, but I have some trouble initialising them in that case
94
95 float xhalfsize;
96 float yhalfsize;
97 float zhalfsize;
98
99 void set_defaults() override;
100 void initialise_keymap() override;
101 bool post_processing() override;
102};
103
104END_NAMESPACE_STIR
105
106#endif
defines the stir::CartesianCoordinate3D<coordT> class
ProjMatrixByDenselOnCartesianGridUsingElement's definition.
Declaration of class stir::RegisteredParsingObject.
A class for storing coordinates and value of a single projection bin.
Definition Bin.h:49
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
A class for encoding/finding symmetries common to the geometry of the projection data and the discret...
Definition DataSymmetriesForDensels.h:51
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
Computes projection matrix elements for VoxelsOnCartesianGrid images by using a Length of Intersectio...
Definition ProjMatrixByDenselOnCartesianGridUsingElement.h:55
float get_element(const Bin &, const CartesianCoordinate3D< float > &) const override
this member computes a single element of the projection matrix
Definition ProjMatrixByDenselUsingRayTracing.cxx:253
const DataSymmetriesForDensels * get_symmetries_ptr() const override
get a pointer to an object encoding all symmetries that are used by this ProjMatrixByDensel
Definition ProjMatrixByDenselUsingRayTracing.cxx:73
static const char *const registered_name
Name which will be used when parsing a ProjMatrixByDensel object.
Definition ProjMatrixByDenselUsingRayTracing.h:61
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 ProjMatrixByDenselUsingRayTracing.cxx:79
ProjMatrixByDenselUsingRayTracing()
Default constructor (calls set_defaults())
Definition ProjMatrixByDenselUsingRayTracing.cxx:35
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files.
Definition RegisteredParsingObject.h:78