Scatter and random correction

Dear CASToR users,

I am simulating a TOF PET scanner in GATE, and I would like to reconstruct an image with scatter and random correction. I am using “castor-GATErootToCastor” utility function, and I noticed an option “-src” that computes scatter and random correction rates for each LOR. Performing a test, I noticed this option reconstructs basically the same image as if only true coincidences (option “-t”) are reconstructed. I presume the function calculates exact correction factors and thus no statistical (Poisson) noise is introduced into the image. To introduce this statistical noise that is inevitable in real world, my idea is to obtain correction factors from one simulation and then use them to reconstruct an image from a separate simulation (same simulation but with a different seed). My questions are:

  • Is there an option to extract just the scatter and correction factors from the simulation?
  • Is there a simple way to include correction factors into list-mode data (I want to include TOF information)?
  • Any other experience/suggestion how to perform scatter and random correction? Maybe it is better/easier to modify “castor-GATERootToCastor” function and introduce some statistical noise when determining correction factors.

Any advice and suggestion will be greatly appreciated. Thank you!

Best Regards,


(PhD student)

Hi Gasper,

There is no corrections computed in the GATE to CASToR utility.

It only removes scatter and/or random coincidences from the datafile.

So this is normal that you get the exact same results as if reconstructing the trues only.

If you want to mimic corrections as in real scanners, you must provide smooth corrections. In CASToR, scatter and random corrections are accounted for by adding them to the forward projection of the image. This implies that these corrections have to be noise free.

The solution that you propose (using another simulation to get an independent statistical realization of the scatter and random coincidences) is half of what should be done because you will have to smooth these signals. You can look at some papers about Monte Carlo scatter corrections in which they may propose some smoothing strategies. For randoms, you can do a fan sum followed by a reverse fan sum which should be enough.

Otherwise, you may simply subtract the second simulation of scatter and random from the prompts of the first simulation. BUT, if you want to get the best image from such a signal, you should then consider using the shifted poisson algorithm from Fessler.

As for the implementation, it may be easier to modify the castor-GATErootToCastor to read the two simulations and do what you want inside it before writing the castor datafile.

If you implement such things, we would be interested in including your developments in the castor tools so that they can be shared with the community.

Keep us posted.