List-mode file

The default YRT-PET list-mode file is a record of all the events to be considered for the reconstruction.

Timestamp for event 0 (ms) (uint32)
Detector1 of the event 0 (uint32)
Detector2 of the event 0 (uint32)
TOF position of event 0 (ps) (float32) [Optional]
Randoms estimate of event 0 (counts/s) (float32) [Optional]
Timestamp for event 1 (ms) (uint32)
Detector1 of the event 1 (uint32)
Detector2 of the event 1 (uint32)
TOF position of event 1 (ps) (float32) [Optional]
Randoms estimate of event 1 (counts/s) (float32) [Optional]
...

The file extension used is .lmDat by convention. The detectors specified in the List-Mode correspond to the indices in the scanner’s LUT.

If the ListMode file contains time-of-flight (TOF) information, the option --flag_tof must be used in the executable(s). The TOF value is the difference of arrival time between detector 2 (\(t_2\)) and detector 1 (\(t_1\)), or \(t_2 - t_1\), expressed in picoseconds.

If the ListMode file contains a randoms estimate for each event, the option --flag_randoms must be used in the executable(s). The randoms estimate is in counts per second (cps).

For Python users

If using python bindings, here’s how to read a ListModeLUT:

import pyyrtpet as yrt

scanner = yrt.Scanner("<myscanner>.json")
flag_tof = True  # Indicate whether the list-mode file contains a TOF field
flag_randoms = False  # Indicate whether it contains randoms estimates
lm = yrt.ListModeLUTOwned(scanner, "<mylistmode>.lmDat",
                          flag_tof=flag_tof, flag_randoms=flag_randoms)

The flag_tof option specifies if the list-mode contains TOF information for each event and the flag_randoms option specifies if the list-mode contains randoms estimates.

List-mode DOI file

A more advanced List-Mode format is available for scanners with many DOI layers. The format is similar to the regular List-mode format described above with DOI layer (encoded in 256 bits) for each detector (from the inward face of the detector). The num_layers option in the reconstruction executable allows binning of the DOI layers from 256 layers to an arbitrary number of layers.

Note that it is still possible to use the default list-mode format for DOI-enabled scanners. This additional format only allows to save some disk space in case the amount of DOI layers in the scanner is configurable.

Timestamp for event 0 (ms) (uint32)
Detector1 of the event 0 (uint32)
DOI1 of the event 0 (uint8)
Detector2 of the event 0 (uint32)
DOI2 of the event 0 (uint8)
TOF position of event 0 (ps) (float32) [Optional]
Randoms estimate of event 0 (counts/s) (float32) [Optional]
Timestamp for event 1 (ms) (uint32)
Detector1 of the event 1 (uint32)
DOI1 of the event 1 (uint8)
Detector2 of the event 1 (uint32)
DOI2 of the event 2 (uint8)
TOF position of event 1 (ps) (float32) [Optional]
Randoms estimate of event 1 (counts/s) (float32) [Optional]
...