STIR
6.2.0
|
Symmetries appropriate for a (cylindrical) PET scanner, and a discretised density on a Cartesian grid. More...
#include "stir_experimental/recon_buildblock/DataSymmetriesForDensels_PET_CartesianGrid.h"
Public Member Functions | |
DataSymmetriesForDensels_PET_CartesianGrid (const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float >> &image_info_ptr) | |
DataSymmetriesForDensels_PET_CartesianGrid * | clone () const override |
bool | operator== (const DataSymmetriesForDensels_PET_CartesianGrid &) const |
void | get_related_densels (std::vector< Densel > &, const Densel &b) const override |
fills in a vector with all the Densels that are related to 'b' (including itself) More... | |
int | num_related_densels (const Densel &b) const override |
returns the number of Densels related to 'b' More... | |
unique_ptr< SymmetryOperation > | find_symmetry_operation_from_basic_densel (Densel &) const override |
given an arbitrary Densel 'b', find the basic Densel More... | |
bool | find_basic_densel (Densel &b) const override |
given an arbitrary Densel 'b', find the basic Densel More... | |
float | get_num_planes_per_scanner_ring () const |
find out how many image planes there are for every scanner ring | |
float | get_num_planes_per_axial_pos (const int segment_num) const |
find correspondence between axial_pos_num and image coordinates More... | |
float | get_axial_pos_to_z_offset (const int segment_num) const |
Public Member Functions inherited from stir::DataSymmetriesForDensels | |
bool | operator== (const DataSymmetriesForDensels &) const |
bool | operator!= (const DataSymmetriesForDensels &) const |
Additional Inherited Members | |
Protected Types inherited from stir::DataSymmetriesForDensels | |
typedef DataSymmetriesForDensels | root_type |
Symmetries appropriate for a (cylindrical) PET scanner, and a discretised density on a Cartesian grid.
All operations (except the constructor) are inline as timing of the methods of this class is critical.
stir::DataSymmetriesForDensels_PET_CartesianGrid::DataSymmetriesForDensels_PET_CartesianGrid | ( | const shared_ptr< const ProjDataInfo > & | proj_data_info_ptr, |
const shared_ptr< const DiscretisedDensity< 3, float >> & | image_info_ptr | ||
) |
The DiscretisedDensity pointer has to point to an object of type DiscretisedDensityOnCartesianGrid (or a derived type).
We really need only the geometrical info from the image. At the moment we have to use the data itself as well.
References stir::error(), and stir::round().
|
inlineoverridevirtual |
fills in a vector with all the Densels that are related to 'b' (including itself)
b
has to be a 'basic' Densel Implements stir::DataSymmetriesForDensels.
|
inlineoverridevirtual |
returns the number of Densels related to 'b'
default implementation in terms of get_related_densels, will be slow of course
Reimplemented from stir::DataSymmetriesForDensels.
|
inlineoverridevirtual |
given an arbitrary Densel 'b', find the basic Densel
sets 'b' to the corresponding 'basic' Densel and returns the symmetry transformation from 'basic' to 'b'.
Implements stir::DataSymmetriesForDensels.
|
inlineoverridevirtual |
given an arbitrary Densel 'b', find the basic Densel
sets 'b' to the corresponding 'basic' Densel and returns true if 'b' is changed (i.e. it was NOT a basic Densel).
default implementation in terms of find_symmetry_operation_from_basic_densel
Reimplemented from stir::DataSymmetriesForDensels.
|
inline |
find correspondence between axial_pos_num and image coordinates
z = num_planes_per_axial_pos * axial_pos_num + axial_pos_to_z_offset
compute the offset by matching up the centre of the scanner in the 2 coordinate systems