STIR  6.2.0
Public Member Functions | List of all members
stir::DetectionPosition< coordT > Class Template Reference

A class for storing coordinates of a detection. More...

#include "stir/DetectionPosition.h"

Inheritance diagram for stir::DetectionPosition< coordT >:
Inheritance graph
[legend]

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
 

Detailed Description

template<typename coordT = unsigned int>
class stir::DetectionPosition< coordT >

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:

  1. 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.
  2. axial_coord: a coordinate running along the scanner axis. For a cylindrical PET scanner, it would correspond to the ring number.
  3. 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.

Todo:
document directions

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.


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