# Questions on Normalization Factor Calculation (Annular Phantom Chord Length & Attenuation) & Reconstruction Speed (List-mode vs. Histogram) for Dedicated Brain PET

**URL:** <https://castor-project.discourse.group/t/questions-on-normalization-factor-calculation-annular-phantom-chord-length-attenuation-reconstruction-speed-list-mode-vs-histogram-for-dedicated-brain-pet/1498>\
**Category:** General Discussions\
**Created:** [September 11, 2026, 4:58pm UTC](https://castor-project.discourse.group/t/questions-on-normalization-factor-calculation-annular-phantom-chord-length-attenuation-reconstruction-speed-list-mode-vs-histogram-for-dedicated-brain-pet/1498 "2026-09-11T16:58:16Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![zzp](https://avatars.discourse-cdn.com/v4/letter/z/b5ac83/32.png) [@zzp](https://castor-project.discourse.group/u/zzp)\
**Post date:** [September 11, 2026, 4:58pm UTC](https://castor-project.discourse.group/t/questions-on-normalization-factor-calculation-annular-phantom-chord-length-attenuation-reconstruction-speed-list-mode-vs-histogram-for-dedicated-brain-pet/1498/1 "2026-09-11T16:58:16Z")

</div>

Dear CASToR Team and Community,

First of all, thank you very much for developing and maintaining this comprehensive open-source reconstruction framework.

I am an R&D engineer working on a dedicated brain PET scanner. We are currently evaluating CASToR to obtain high-quality clinical and research reconstructions. As we are relatively new to CASToR, we have encountered several critical questions regarding **normalization factor generation with an annular phantom** and **reconstruction computation time**. Any guidance or insights from the developers and community would be immensely appreciated.

* * *

### 1. System & Acquisition Setup

- **Scanner geometry** : Dedicated Brain PET, 61,440 crystal elements in total.
- **LOR space** : Approximately 1.6 billion (1.6 \times 10^9) LORs within the transaxial and axial acceptance angle.
- **Reconstructed image matrix** : 256 \times 256 \times 264 voxels.
- **Normalization Phantom** : A physical hollow annular phantom (outer diameter: 300 mm, inner diameter: 280 mm, axial length: 300 mm). Note that the emission source region lies outside the primary brain reconstructed FOV.
- **Normalization Statistics** : Due to FDG isotope decay and system dead-time/count-rate constraints, a total of ~3.0 billion (3.0 \times 10^9) coincidence events were acquired during the normalization scan. Consequently, many LORs have 0 counts (sparse histogram).

* * *

### 2. Question 1: Normalization Factor Calculation, Annular Phantom Modeling & Extreme Edge Divergence (10^{21})

Currently, we attempted a simple ad-hoc direct calculation for the normalization factors:

\text{NormFactor}\_i = \frac{1}{1 + \text{LOR\_Counts}\_i}

We then generated the normalization CDF file and provided it to `castor-recon` with the `-norm` option. However, we encountered the following severe issues:

1. **Extreme Edge Artifacts** : Voxels located at the boundary/edge of the reconstructed FOV explode with abnormally huge values—up to **10^{21} times** higher than the central brain region.
2. **Current Workaround** : We currently have to manually apply a spatial binary mask or zero out the voxels outside/at the border of the FOV. After masking, standard phantom images (e.g., 3D Hoffman and NEMA IQ phantoms) show no obvious ring artifacts, but the overall contrast and image quality are still noticeably inferior to mature commercial algorithms.

**Specific questions regarding normalization:**

- **Chord Length & Activity Modeling** : When using an annular phantom, is it essential to explicitly account for the geometric path length (the intersection chord thickness through the annular active volume) for each LOR?
- **Self-Attenuation** : Does the calculation of normalization factors need to incorporate the self-attenuation of the annular phantom (attenuation of 511 keV photons through water and the acrylic walls)?
- **Edge Divergence** : Is our naive \frac{1}{1 + \text{count}} formula the primary cause of the 10^{21} edge explosion (e.g., due to the lack of forward-projection weighting and sensitivity backprojection boundary issues)?
- **Reference Workflow/Tools** : Does CASToR have an official recommended pipeline, script, or tool (such as `castor-norm` or forward-projecting an analytical phantom image) to compute proper normalization factors from experimental annular phantom data? If so, are there any reference documentation or papers you would recommend for this geometry?
- **Zero-count LOR Handling** : What is the recommended practice in CASToR for handling zero-count LORs in high-granularity systems to prevent numerical instabilities during reconstruction?

* * *

### 3. Question 2: Reconstruction Speed (List-mode vs. Histogram Mode)

In another benchmark using the 3D Hoffman brain phantom:

- **Dataset size** : ~2.5 billion (2.5 \times 10^9) prompt events, ~0.9 billion (0.9 \times 10^9) delayed coincidence events.
- **Algorithm** : List-mode reconstruction with 3 iterations and 15 subsets (only Normalization and Randoms correction enabled; no Attenuation or Scatter correction yet).
- **Observed performance** : It currently takes approximately **20 minutes to complete a single subset update** (meaning a full 3-iteration run requires ~15 hours).

**Specific questions regarding performance:**

- Given our high-statistics dataset (2.5B prompts vs. 1.6B possible LORs), would converting and reconstructing in **histogram mode** yield a significant speedup compared to **list-mode mode**? Roughly what order of magnitude improvement can we expect?
- If real-time or dynamic list-mode reconstruction is not strictly required, is histogram-based reconstruction generally the recommended standard in CASToR for static high-count acquisitions?

* * *

Thank you very much in advance for your time, expertise, and support!

Best regards,

Your Name / Team Name

Brain PET System R&D Engineer

---

<div class="post-metadata">

**Author:** ![tmerlin](https://yyz2.discourse-cdn.com/free1/user_avatar/castor-project.discourse.group/tmerlin/32/216_2.png) [@tmerlin](https://castor-project.discourse.group/u/tmerlin)\
**Post date:** [September 17, 2026, 5:21pm UTC](https://castor-project.discourse.group/t/questions-on-normalization-factor-calculation-annular-phantom-chord-length-attenuation-reconstruction-speed-list-mode-vs-histogram-for-dedicated-brain-pet/1498/2 "2026-09-17T17:21:51Z")

</div>

Hi,

> 1. **Chord Length & Activity Modeling** : When using an annular phantom, is it essential to explicitly account for the geometric path length (the intersection chord thickness through the annular active volume) for each LOR?
> 2. **Self-Attenuation** : Does the calculation of normalization factors need to incorporate the self-attenuation of the annular phantom (attenuation of 511 keV photons through water and the acrylic walls)?

I would say it is required to take into account at least the intersection chord with the phantom, as your annular phantom still has some finite thickness. I would not expect those to be the reason of your high-activity at the edge of the reconstructed image though.

> **Edge Divergence** : Is our naive 11+count formula the primary cause of the 1021 edge explosion (e.g., due to the lack of forward-projection weighting and sensitivity backprojection boundary issues)?

Your formula implies that any LORs without count is still sensitive. This is probably not the case for edge LORs but they are still taken into account in the generation of the sensitivity image. This could be why the edge voxels become very sensitive and cause the edge divergence.

> **Reference Workflow/Tools** : Does CASToR have an official recommended pipeline, script, or tool (such as `castor-norm` or forward-projecting an analytical phantom image) to compute proper normalization factors from experimental annular phantom data? If so, are there any reference documentation or papers you would recommend for this geometry?

> **Zero-count LOR Handling** : What is the recommended practice in CASToR for handling zero-count LORs in high-granularity systems to prevent numerical instabilities during reconstruction?

`castor-norm` is so far the main tool provided by CASToR to help compute normalization. It is also based on direct estimation and thus has the disadvantage of requiring high statistics as it is very sensitive to noise ([more details here](https://castor-project.discourse.group/t/normalization-file-preparation-and-normalization-factor-computation/966/5)) in comparison with other approaches such as component based norm. According to your acquisition data (3 billion coincidences events for 1.6 billion LORs) the low-count LORs measurements will most likely be dominated by noise.

> **Specific questions regarding performance:**
> 
> - Given our high-statistics dataset (2.5B prompts vs. 1.6B possible LORs), would converting and reconstructing in **histogram mode** yield a significant speedup compared to **list-mode mode**? Roughly what order of magnitude improvement can we expect?
> - If real-time or dynamic list-mode reconstruction is not strictly required, is histogram-based reconstruction generally the recommended standard in CASToR for static high-count acquisitions?

I would expect an improvement in computing time but it’s complicated to estimate an order of magnitude given the sensitivity is computed differently in list-mode (beforehand) and histogram (recomputed for each subset, though lightweight as backprojection is just performed once) and could also vary if your system includes TOF or some level of compression (span/mash), but you don’t mention it so I assume this is not your case.

→ Essentially I would try to address the normalization issue in priority, modify the formula and check how noise affects your normalization by trying to reconstruct with normalization dataset of varying statistic, ideally generate a substantially higher-statistics normalization dataset. If you have some simulation data it could clarify what level of statistic would be required for your system with this experimental setup using a direct normalization approach.

Best,  
Thibaut
