STIR 6.4.0
stir::DataSymmetriesForDensels_PET_CartesianGrid Class Reference

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"

Inheritance diagram for stir::DataSymmetriesForDensels_PET_CartesianGrid:

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_CartesianGridclone () 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)
 
int num_related_densels (const Densel &b) const override
 returns the number of Densels related to 'b'
 
unique_ptr< SymmetryOperationfind_symmetry_operation_from_basic_densel (Densel &) const override
 given an arbitrary Densel 'b', find the basic Densel
 
bool find_basic_densel (Densel &b) const override
 given an arbitrary Densel 'b', find the basic Densel
 
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
 
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
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ DataSymmetriesForDensels_PET_CartesianGrid()

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 DataSymmetriesForDensels_PET_CartesianGrid(), stir::error(), stir::DiscretisedDensity< num_dimensions, elemT >::get_origin(), and stir::round().

Referenced by DataSymmetriesForDensels_PET_CartesianGrid().

Member Function Documentation

◆ clone()

DataSymmetriesForDensels_PET_CartesianGrid * stir::DataSymmetriesForDensels_PET_CartesianGrid::clone ( ) const
overridevirtual

◆ get_related_densels()

void stir::DataSymmetriesForDensels_PET_CartesianGrid::get_related_densels ( std::vector< Densel > & rel_b,
const Densel & b ) const
inlineoverridevirtual

fills in a vector with all the Densels that are related to 'b' (including itself)

Warning
b has to be a 'basic' Densel

Implements stir::DataSymmetriesForDensels.

References find_basic_densel(), get_related_densels(), and num_related_densels().

Referenced by get_related_densels().

◆ num_related_densels()

int stir::DataSymmetriesForDensels_PET_CartesianGrid::num_related_densels ( const Densel & b) const
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.

References num_related_densels().

Referenced by get_related_densels(), and num_related_densels().

◆ find_symmetry_operation_from_basic_densel()

unique_ptr< SymmetryOperation > stir::DataSymmetriesForDensels_PET_CartesianGrid::find_symmetry_operation_from_basic_densel ( Densel & ) const
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.

References find_basic_densel(), and find_symmetry_operation_from_basic_densel().

Referenced by find_symmetry_operation_from_basic_densel().

◆ find_basic_densel()

bool stir::DataSymmetriesForDensels_PET_CartesianGrid::find_basic_densel ( Densel & b) const
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.

References find_basic_densel().

Referenced by find_basic_densel(), find_symmetry_operation_from_basic_densel(), and get_related_densels().

◆ get_num_planes_per_axial_pos()

float stir::DataSymmetriesForDensels_PET_CartesianGrid::get_num_planes_per_axial_pos ( const int segment_num) const
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

References get_num_planes_per_axial_pos().

Referenced by get_num_planes_per_axial_pos().


The documentation for this class was generated from the following files: