Normalization with listmode data

Hi everyone,

I’m currently facing a challenge when preparing normalization data for a PET system with a large number of crystals using CASToR.

In my workflow:

  • I simulate the normalization phantom and obtain ROOT output.
  • I attempt to convert the ROOT data to histogram-mode using castor-GATERootToCastor.

Unfortunately, due to the high number of crystals, the RAM usage during histogram allocation becomes excessive and crashes the conversion (system has 128 GiB RAM, most of it available, but still not sufficient). As a workaround, I convert the ROOT data to list-mode Interfile instead (which works fine), but I’ve found that castor-norm only accepts histogram-mode datafiles.

My question:

Given that histogram-mode conversion is not feasible due to memory constraints, but I have list-mode data available:

  • Are there any existing methods, workarounds or recommended workflows to compute normalization factors from list-mode data?
  • Alternatively, would it be possible (or advisable) to modify castor-norm to support list-mode input?
  • Any insights from others who faced similar issues with high-crystal-count systems would also be appreciated.

Thanks in advance for any suggestions or experiences!

Best regards,
Philipp

Hi Philipp,
castor-GATERootToCastor integrates the same functionality that castor-norm (-n/-nl/-nimg options) in which the data can be provided in list-mode (root file). However you might face the same memory issue as the data has to be reorganized in a normalization (histogram-like) file. The toolkit assuming every pair of crystals can be linked together (no geometry restriction), this can indeed lead to very large memory usage if the number of crystal is very high.

The problem with list-mode input is that it doesn’t contain all possible data channels for the system, and those are required for the computation of the sensitivity image.

Best,
Thibaut