Problem with sensitivity computed from normalization datafile

Dear Castor users,

I can reconstruct without problem a list mode from an IEC phantom recorded on the Philips Vereos TEP (with and without correction) when the sensitivity is calculated from the .geom scanner. However, when the sensitivity is generated from a normalization file, it does not work anymore. I have no idea where the problem may come from, especially since the sensitivity image generated from the normalization file seems correct to me.

Here in attachement :

“SensiScan” : Sensitivity calculated from the scanner element without taking into account attenuation and normalization.

“ReconWithSensiScan” : MLEM reconstruction with sensitivity “SensiScan” without any correction

è Gets reconstructed images which seems to me coherent considering the absence of correction

“SensiNorm”: Sensitivity calculated from the normalization datafile without taking into account attenuation and normalization (attenuation and normalization factor set to 1)

ReconWithSensiNorm : MLEM reconstruction with sensitivity “SensiNorm” without any correction

è Gets an almost uniform image with values very close to 0

Do you think that the sensitivity image calculated with the normalization file seems correct? Have you ever encountered a similar problem?

Any help will be welcome!

Kind regards

Julien Salvadori

Phd student, IADI

Hi Julien,

Looking at the SensiNorm, you are taking normalization and/or attenuation into account, because we can see your object in the sensitivity image.
If you really want to disable it, even if it is present in your normalization data file, just use the "-ignore-corr attn,norm" option, as you did in the reconstruction.
Otherwise, the attenuation is still present in the sensitivity image, even if you ask for ignoring it in the reconstruction, as you provide the sensitivity image.
I suggest you try this, until you get an almost similar image to the one built with the scanner elements.

Also, when looking at the SensiNorm, it is quite noisy and we can see the inserts which looks like as if you used the prompt data as the normalization coefficients.
I am wondering what kind of normalization coefficients are you using ? Are you using the one provided by Philips ?


Thank you Simon for the quick reply.

I disabled the attenuation and normalization in the calculation of the sensitivity and i always get strictly the same result. To make sure, i also reiterated the sensitivity computation by forcing the variable lor_sensitivity to 1 in the ProcessThisLine function of oSensitivityGenerator, with again the same result !

Indeed,i use prompt coincidences to generate the normalization datafile, it’s not what is necessary to do ? and yes normalization coefficients are provided by Philips.


The normalization datafile should contain as many events as the number of possible lines-of-response that may record coincidences.

So at a certain point, you should start from the sinogram of normalization coefficients provided by Philips and create one "normalization event" per sinogram bin to build the normalization data file. You must know the corresponding crystals-pair for each sinogram bin and write it in the event.

So prompt coincidences have nothing to do with the sensitivity image computation here.

If you are using your list-mode events to build the normalization datafile, this is normal that you get an object in your sensitivity image.
It is simply as if you backprojected all your events.