47.10. Applying the PET Energy Window
Table of Contents
Why an Energy Window is Needed in PET
In PET, every valid annihilation photon should have an energy close to 511 keV. In practice, detectors also register photons that have scattered and lost energy, as well as electronic noise. If you record all detected photons without any selection, your coincidence data will contain many scattered and random events that degrade image quality and bias quantitative results.
An energy window is a simple filter applied to singles. You keep only those detector events whose measured energy lies within a chosen range around the 511 keV photopeak. This suppresses a large fraction of scattered photons, reduces randoms, and defines which events are considered “PET‑like” for your scanner model.
The PET energy window is one of the most important parameters in PET simulation and reconstruction. It must be consistent with the detector energy resolution and with the acquisition protocol you want to reproduce.
In this chapter, you will connect the previous steps of the PET digitizer chain to a concrete energy selection and see how to implement it correctly in GATE for beginners.
From Ideal Energy to Measured Energy
In previous PET chapters, you created crystals, enabled a digitizer chain, and added energy blurring to mimic finite detector energy resolution. Before blurring, the “true” deposited energy for a photoelectric event from a 511 keV photon is very close to 511 keV. After blurring, the measured energy becomes a random variable that fluctuates around 511 keV with a spread determined by the resolution.
For example, if your detector has 12 % FWHM at 511 keV, the energy spectrum of singles will show a broad peak around 511 keV, with many events that fall significantly below or above the nominal energy. Compton scatter inside the patient or phantom produces photons that deposit less energy and create a long low‑energy tail in the spectrum.
The PET energy window is always applied to this blurred, measured energy, not to the ideal energy deposition. This is crucial, because otherwise you would underestimate the impact of energy resolution on scatter rejection.
Always apply the PET energy window to the blurred energy signal produced by the digitizer, not to raw energy depositions or hits.
Choosing an Appropriate PET Energy Window
In clinical PET, typical photopeak windows around 511 keV are often symmetric or asymmetric, for example:
- 350–650 keV
- 400–650 keV
- 425–650 keV
The exact choice depends on the scanner, detector material, and acquisition protocol. A lower bound that is too low admits many scattered events, while a lower bound that is too high discards useful true events and reduces sensitivity. The upper bound is often set a bit above 511 keV to account for energy resolution and pile‑up.
In simulation, you usually choose:
- A lower bound $E_{\text{low}}$ between about 350 and 450 keV.
- An upper bound $E_{\text{high}}$ between about 600 and 700 keV.
You can convert these to GATE units. For instance:
- $E_{\text{low}} = 350 \,\text{keV}$
- $E_{\text{high}} = 650 \,\text{keV}$
If you want a symmetric window of half‑width $\Delta E$ around 511 keV, you can write:
$$
E_{\text{low}} = 511 \,\text{keV} - \Delta E,
\qquad
E_{\text{high}} = 511 \,\text{keV} + \Delta E.
$$
The choice of $\Delta E$ should relate to your detector energy resolution. As a rule of thumb:
A reasonable window half‑width is about 1 to 1.5 times the FWHM of the detector energy resolution at 511 keV.
You can evaluate different windows by looking at how the energy spectrum of singles changes, and by measuring scatter fraction and sensitivity as described in PET performance chapters.
Implementing the Energy Window in GATE
In OpenGATE with Python, energy selection is typically implemented as part of the digitizer chain that processes hits to create singles. You have at least three relevant steps:
- Energy summation over all hits in a crystal or detector channel.
- Energy blurring to include detector resolution.
- Energy window selection that discards events outside the desired range.
In the PET scanner example, you likely already created a digitizer object attached to your simulation. The energy window is usually expressed as a lower and an upper threshold in energy units consistent with your simulation.
A simple configuration pattern looks like this conceptually:
dig = sim.add_digitizer("PETDigitizer")
# ... previous steps: energy summation, blurring, etc.
# Define the photopeak window (example: 350–650 keV)
dig.energy_window_min = 350 * keV
dig.energy_window_max = 650 * keVThe precise attribute names can vary with the version or helper functions you use, but the logic is always:
- Define a minimum energy threshold.
- Define a maximum energy threshold.
- Apply them on the blurred energy.
Internally, GATE compares the measured energy $E_{\text{meas}}$ of each single to the window. The event is kept only if
$$
E_{\text{low}} \le E_{\text{meas}} \le E_{\text{high}}.
$$
Check that the units of the thresholds match the units of the stored energy. In GATE, you must always multiply numeric values by the correct unit, for example 350 * keV, not plain 350.
If your digitizer chain produces multiple singles collections, for example one before the window and one after, make sure that later steps, such as coincidence sorting, use the singles collection where the energy window has already been applied.
Verifying the Energy Window with the Singles Spectrum
After adding the energy window, you should confirm that it behaves as expected by analyzing the singles energy spectrum. This is typically done after running the simulation and reading the singles output file, either with ROOT or Python, in chapters dedicated to data analysis.
Conceptually, the steps are:
- Read the energy value for each single event from the output.
- Plot a histogram of the energy distribution.
- Mark the chosen energy window on the histogram.
You should observe a clear photopeak around 511 keV. The energy window should cover most of the peak while excluding a significant part of the low‑energy tail. If your window is too narrow, the photopeak will be cut and you will lose true events. If it is too wide, the low‑energy tail will remain almost unchanged.
A simple way to reason about your selection is:
The energy window should include the majority of the 511 keV photopeak but exclude as many scattered low‑energy events as possible.
You can repeat the simulation with different windows and compare statistics such as the number of singles, number of coincidences, and scatter fraction. This illustrates the trade‑off between sensitivity and image quality.
Interaction with Coincidence Sorting
Once the PET energy window is applied at the singles level, coincidence sorting operates on filtered singles. This has several consequences for your PET simulation:
- True coincidences where both photons deposit energy close to 511 keV are mostly preserved.
- Scattered coincidences, where at least one photon has lost significant energy, are often rejected because their measured energy falls below $E_{\text{low}}$.
- Random coincidences, which often include low‑energy interactions, are partially reduced.
If you study true, scattered, and random coincidences in later PET performance chapters, you must always keep in mind which energy window was used. A different window changes:
- The number of coincident events of each type.
- The measured scatter fraction.
- The absolute sensitivity of the scanner.
For reproducible results, always record the energy window in your simulation metadata or configuration files. This is part of documenting your PET protocol.
When comparing different PET simulations or validating against experimental data, make sure the simulated energy window matches the experimental energy window as closely as possible.
With these elements, you can now confidently configure and test the PET energy window in your example scanner, and understand how it shapes the singles and coincidence data that you will analyze in the following chapters.
Views: 11
KAHIBARO