21#ifndef __stir_recon_buildblock_DataSymmetriesForDensels_PET_CartesianGrid_H__
22#define __stir_recon_buildblock_DataSymmetriesForDensels_PET_CartesianGrid_H__
35template <
int num_dimensions,
typename elemT>
36class DiscretisedDensity;
37template <
int num_dimensions,
typename elemT>
38class DiscretisedDensityOnCartesianGrid;
51 typedef DataSymmetriesForDensels base_type;
65 virtual DenselIndexRange
66 get_basic_densel_index_range()
const;
87 inline float get_axial_pos_to_z_offset(
const int segment_num)
const;
90 const shared_ptr<const ProjDataInfo>& proj_data_info_ptr;
92 int num_independent_planes;
94 int num_planes_per_scanner_ring;
104 shared_ptr<const DiscretisedDensity<3,float> > image_info_ptr;
108 cartesian_grid_info_ptr()
const;
111 bool blindly_equals(
const root_type*
const)
const override;
113 inline SymmetryOperation* find_sym_op_general_densel(
const int z,
const int y,
const int x)
const;
Declaration of class stir::DataSymmetriesForDensels.
inline implementations for class DataSymmetriesForDensels_PET_CartesianGrid
Declaration of typedef stir::Densel.
Declaration of class stir::ProjDataInfo.
unique_ptr< SymmetryOperation > find_symmetry_operation_from_basic_densel(Densel &) const override
given an arbitrary Densel 'b', find the basic Densel
Definition DataSymmetriesForDensels_PET_CartesianGrid.inl:112
DataSymmetriesForDensels_PET_CartesianGrid(const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float > > &image_info_ptr)
Definition DataSymmetriesForDensels_PET_CartesianGrid.cxx:106
float get_num_planes_per_axial_pos(const int segment_num) const
find correspondence between axial_pos_num and image coordinates
Definition DataSymmetriesForDensels_PET_CartesianGrid.inl:34
bool find_basic_densel(Densel &b) const override
given an arbitrary Densel 'b', find the basic Densel
Definition DataSymmetriesForDensels_PET_CartesianGrid.inl:93
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)
Definition DataSymmetriesForDensels_PET_CartesianGrid.inl:143
int num_related_densels(const Densel &b) const override
returns the number of Densels related to 'b'
Definition DataSymmetriesForDensels_PET_CartesianGrid.inl:128
float get_num_planes_per_scanner_ring() const
find out how many image planes there are for every scanner ring
Definition DataSymmetriesForDensels_PET_CartesianGrid.inl:40
This abstract class is the basis for images on a Cartesian grid.
Definition DiscretisedDensityOnCartesianGrid.h:45
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
Encodes symmetry operation on image coordinates and projection data coordinates.
Definition SymmetryOperation.h:62
A templated class for vectors, but with indices starting not from 0.
Definition VectorWithOffset.h:65
Coordinate3D< int > Densel
a typedef used for an element of a DiscretisedDensity
Definition Densel.h:36
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...