STIR 6.4.0
stir::ListEvent Class Referenceabstract

Class for storing and using gamma events from a list mode file. More...

#include "stir/listmode/ListEvent.h"

Inheritance diagram for stir::ListEvent:

Public Member Functions

virtual bool is_prompt () const =0
 
virtual LORAs2Points< float > get_LOR () const =0
 Finds the LOR between the coordinates where the detection took place.
 
virtual void get_bin (Bin &bin, const ProjDataInfo &) const
 Finds the bin coordinates of this event for some characteristics of the projection data.
 
virtual bool is_valid_template (const ProjDataInfo &) const =0
 This method checks if the template is valid for LmToProjData.
 

Detailed Description

Class for storing and using gamma events from a list mode file.

ListEvent is used to provide an interface to the actual events (i.e. detected counts) in the list mode stream.

Todo
this is still under development. Things to add are for instance energy windows and time-of-flight info. Also, get_bin() would need time info or so for rotating scanners.
See also
ListModeData for more info on list mode data.

Member Function Documentation

◆ is_prompt()

virtual bool stir::ListEvent::is_prompt ( ) const
pure virtual

◆ get_LOR()

virtual LORAs2Points< float > stir::ListEvent::get_LOR ( ) const
pure virtual

Finds the LOR between the coordinates where the detection took place.

Obviously, these coordinates are only estimates which depend on the scanner hardware. For example, Depth-of-Interaction might not be taken into account. However, the intention is that this function returns 'likely' positions (e.g. not the face of a crystal, but a point somewhere in the middle).

Coordinates are in mm and in the standard STIR coordinate system used by ProjDataInfo etc (i.e. origin is in the centre of the scanner).

Note that for PET data, this (should) return a "directed" LOR. e.g. if the TOF bin changes sign, the coordinates will swap.

Todo
This function might need time info or so for rotating scanners.

Implemented in stir::CListEventSAFIR< Derived >, stir::CListEventSAFIR< CListRecordSAFIR< DataType > >, stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoT >, stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoCylindricalNoArcCorr >, and stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoCylindricalNoArcCorr >.

References get_bin().

Referenced by get_bin().

◆ get_bin()

void stir::ListEvent::get_bin ( Bin & bin,
const ProjDataInfo & proj_data_info ) const
virtual

Finds the bin coordinates of this event for some characteristics of the projection data.

bin.get_bin_value() will be <=0 when the event corresponds to an LOR outside the range of the projection data.

bin.get_bin_value() will be set to a negative value if no such bin can be found.

Currently, bin.get_bin_value() might indicate some weight which can be used for normalisation. This is unlikely to remain the case in future versions.

The default implementation uses get_LOR() and ProjDataInfo::get_bin(). However, a derived class can overload this with a more efficient implementation.

Todo
get_bin() might need time info or so for rotating scanners.

Reimplemented in stir::CListEventCylindricalScannerWithViewTangRingRingEncoding< Derived >, stir::CListEventCylindricalScannerWithViewTangRingRingEncoding< CListEventECAT966 >, stir::CListEventCylindricalScannerWithViewTangRingRingEncoding< CListRecordECAT962 >, stir::CListEventSAFIR< Derived >, stir::CListEventSAFIR< CListRecordSAFIR< DataType > >, stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoT >, stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoCylindricalNoArcCorr >, and stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoCylindricalNoArcCorr >.

References get_bin(), stir::ProjDataInfo::get_bin(), and get_LOR().

Referenced by get_bin(), and get_LOR().

◆ is_valid_template()

virtual bool stir::ListEvent::is_valid_template ( const ProjDataInfo & ) const
pure virtual

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