STIR  6.2.0
Public Member Functions | List of all members
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:
Inheritance graph
[legend]

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) More...
 
int num_related_densels (const Densel &b) const override
 returns the number of Densels related to 'b' More...
 
unique_ptr< SymmetryOperationfind_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
 

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 stir::error(), and stir::round().

Member Function Documentation

◆ 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.

◆ 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.

◆ 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.

◆ 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.

◆ 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


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