STIR
6.2.0
|
A class for storing coordinates of a detection. More...
#include "stir/DetectionPosition.h"
Public Member Functions | |
DetectionPosition (const coordT tangential_coord=0, const coordT axial_coord=0, const coordT radial_coord=0) | |
coordT | tangential_coord () const |
coordT | axial_coord () const |
coordT | radial_coord () const |
coordT & | tangential_coord () |
coordT & | axial_coord () |
coordT & | radial_coord () |
comparison operators | |
bool | operator== (const DetectionPosition &) const |
comparison operators | |
bool | operator< (const DetectionPosition &) const |
A class for storing coordinates of a detection.
This encodes where a gamma photon was detected on a detector array. For example, in a cylindrical PET scanner, this class stores the crystal where a gamma was detected.
The scanner might have more than 1 detector array (for example a dual-headed system), but this info is (currently) not in this class. Also, the detector array might be rotating during acquisition. The corresponding angle is also not in the class.
This is essentially a collection of 3 numbers:
tangential_coord:
a coordinate running tangentially to the scanner cylinder, and orthogonal to the scanner axis. For a cylindrical PET scanner, this would be the Detection number in a ring. axial_coord:
a coordinate running along the scanner axis. For a cylindrical PET scanner, it would correspond to the ring number. radial_coord:
a coordinate 'orthogonal' to the 2 previous ones. This is only used for scanners with multiple layers of detectors (which would give Depth Of Interaction information). radial_coord==0 corresponds to the layer closest to the centre of the scanner. All 3 coordinates are normally positive, and start with 0.
For scanners that do not need 3 coordinates, there is a space overhead but no performance overhead, except in the comparison functions. The class is templated to allow for systems with continuous detection.