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

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. More...
 
virtual void get_bin (Bin &bin, const ProjDataInfo &) const
 Finds the bin coordinates of this event for some characteristics of the projection data. More...
 
virtual bool is_valid_template (const ProjDataInfo &) const =0
 This method checks if the template is valid for LmToProjData. More...
 

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

◆ 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 >, and stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoCylindricalNoArcCorr >.

◆ 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::CListEventSAFIR< Derived >, stir::CListEventSAFIR< CListRecordSAFIR< DataType > >, stir::CListEventCylindricalScannerWithViewTangRingRingEncoding< Derived >, stir::CListEventCylindricalScannerWithViewTangRingRingEncoding< CListRecordECAT962 >, stir::CListEventCylindricalScannerWithViewTangRingRingEncoding< CListEventECAT966 >, stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoT >, and stir::CListEventScannerWithDiscreteDetectors< ProjDataInfoCylindricalNoArcCorr >.

References stir::ProjDataInfo::get_bin().

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