47.6. Configuring PET Physics
Table of Contents
Configuring PET physics for a PET scanner example means choosing and tuning the physics processes that are essential for realistic positron emission, transport, annihilation, and gamma interactions, while keeping the simulation efficient. In this chapter you focus on how to set up these physics options in GATE for a typical clinical PET system, not on the general physics theory that is covered elsewhere.
Goals of PET Physics Configuration
For PET, the physics configuration must achieve a few specific goals. First, it must model positron transport from the emission point to the annihilation point. Second, it must include annihilation into two 511 keV photons, with realistic angular distribution. Third, it must handle all relevant electromagnetic interactions of those photons in the patient, detector, and surrounding materials so that scattered, absorbed, and transmitted events are simulated correctly. Finally, it should balance accuracy and speed, for example by adjusting production cuts and optional models such as optical physics, depending on what your PET example intends to study.
A key idea is that PET physics is usually a subset and configuration of general electromagnetic and decay physics lists. You select or customize a physics list that already contains standard models and then you tweak it to match PET needs.
Choosing an Appropriate PET Physics List in GATE
OpenGATE uses Geant4 physics lists under the hood. For PET simulations you almost always start from a predefined electromagnetic physics list that is known to work well in medical imaging. Common choices in modern GATE versions include the Geant4 “Option 3” or “Option 4” electromagnetic lists, often combined with radioactive decay and atomic de-excitation.
Typical configuration in Python looks like this, using the simulation object sim that you created in earlier chapters of the PET example:
physics = sim.get_physics_user_info()
physics.physics_list_name = "G4EmStandardPhysics_option4"
physics.enable_decay = True
physics.enable_radioactive_decay = True
physics.enable_atomic_deexcitation = True
The exact string for physics_list_name may differ slightly depending on OpenGATE version. You can check available lists in the documentation or by inspecting opengate.physics. For PET, the important point is that you pick a modern electromagnetic list that includes precise models at energies around hundreds of keV to a few MeV, and that you turn on nuclear and atomic processes relevant to radionuclide decay.
Some GATE versions also provide PET-oriented composite physics lists with convenient names. In that case, you can simply assign that list and only adjust details such as cuts and de-excitation.
For PET simulations, always use a validated electromagnetic physics list that includes low energy gamma and electron processes, and always enable radioactive decay if you are using real radionuclides instead of generic gamma sources.
Enabling Positron and Gamma Processes for PET
PET requires consistent treatment of both the emitted positrons and the photons they produce. When you select a standard EM physics list and radioactive decay, GATE automatically includes the main positron processes, such as ionization, multiple scattering, and annihilation at rest. For a typical PET example you rarely need to add individual processes by hand, but you should ensure that positrons are not artificially removed or cut before annihilation.
The main check is to confirm that the physics list you chose handles e+, gamma, and e− transport. For instance, “EmStandard” lists in Geant4 always include gamma processes like photoelectric effect, Compton scattering, and pair production, and also electron and positron ionization and multiple scattering. In GATE the corresponding PET configuration is essentially:
physics = sim.get_physics_user_info()
physics.physics_list_name = "G4EmStandardPhysics_option4"
physics.enable_decay = True
physics.enable_radioactive_decay = TruePositron range can influence spatial resolution in PET. If your PET example is focused on detector performance only, you might be tempted to use a pure 511 keV gamma source with no positron transport. For that case, you would disable radioactive decay and simply define a gamma source at 511 keV. If instead you want realistic PET physics, for example to study resolution in small animal scanners, you must keep full positron transport active by using radionuclide decay and not overriding positron processes.
Gamma physics is equally important. Scattering in the patient and the detector strongly affects image quality and performance metrics. Ensure that the EM physics list is not simplified to the point of removing Compton scattering or photoelectric absorption. In modern GATE this is handled automatically by the recommended lists, but you should avoid custom minimal lists that omit these processes.
If you use a radionuclide source for PET, do not disable positron transport or annihilation processes. If you use a monoenergetic 511 keV gamma source, remember that you are no longer simulating a true PET process and cannot study effects related to positron range or noncollinearity.
Decay and Annihilation Settings for PET Radionuclides
In the PET example you typically use an $^{18}$F source or another positron emitter. When using such radionuclides through GATE’s radioactive source mechanism, the decay physics list takes care of positron emission, beta spectrum, and associated gammas. You need to make sure that decay is fully enabled and configured consistently.
A common configuration is:
physics.enable_decay = True
physics.enable_radioactive_decay = True
physics.decay_physics_list_name = "G4RadioactiveDecayPhysics"The exact name can differ with GATE version, but the idea is to include Geant4’s radioactive decay module. With that in place, your radionuclide source definition automatically leads to a chain of events: nucleus decays, positron is emitted, positron slows down and annihilates, two photons are produced near 511 keV and continue through the rest of the geometry.
You usually do not control annihilation directly in GATE, because it is an intrinsic part of the positron physics: once the positron energy becomes low and it encounters an electron, annihilation occurs. What you can control indirectly is how far the positron propagates before that event, through production cuts and step limits as described later. You should avoid unphysically large cuts that could make positrons vanish before reaching their natural annihilation point.
In advanced configurations you might adjust atomic de-excitation, which influences X ray and Auger electron production. For most PET detector performance examples this is a small effect. However, if you are interested in detailed dose distributions or low energy electron spectra in tissue, enable atomic de-excitation with:
physics.enable_atomic_deexcitation = TrueWhen simulating PET with real radionuclides, always enable both general decay and radioactive decay physics. If you forget this, your PET source will not produce positrons or annihilation photons, and the simulation will be physically meaningless.
Tuning Physics for PET Detector Response
The PET scanner example focuses heavily on detector performance, such as energy spectra, timing, and singles or coincidence data. Physics configuration has a direct impact on these observables. There are a few specific aspects to tune.
First, consider the detector material. Crystals like LYSO or BGO are high Z and dense, so interactions at 511 keV are dominated by photoelectric effect and Compton scattering. The standard EM lists already describe this reasonably well. Your main job is to verify that the detector region uses the same physics list as the rest of the geometry, which GATE does by default, and to ensure that the production cuts are appropriate, as discussed below.
Second, you need to decide whether to include optical physics in the PET example. If your practical example is about the full chain from scintillation to photodetector response, you would activate optical physics and scintillation processes, and then the PET detector response also depends on light production, reflection, and transport. For an introductory PET example that concentrates on energy deposits and digitizers, optical physics is usually disabled to save time, and you focus on energy deposited in the crystal volume. In that case you do not need to change the standard EM list; you simply avoid adding optical processes.
Third, timing configuration for PET often relies more on digitizers than on physics. The electromagnetic models themselves provide step times and track times, which are used to compute interaction times in the detector. In PET, Coincidence and TOF analysis later use those recorded times. The physics list should be precise enough to provide consistent timing for photon transport, which is normally true for EM lists. You rarely need to add special time models for 511 keV photons, except when you aim for sub-nanosecond TOF resolution studies, where you would combine accurate physics with careful digitizer timing blurring.
Finally, if your PET example compares true, scattered, and random coincidences, gamma physics in the patient is crucial. Low energy cutoffs must be reasonable so that scattered photons are not artificially terminated too early. You must keep Compton scattering active in tissue, water, and bone, otherwise you will underestimate scatter fractions.
For PET detector response examples, optical physics is optional, but accurate electromagnetic physics in the patient and crystal is not. Never disable Compton scattering or photoelectric effect in the detector or patient regions when you want realistic PET energy spectra and scatter fractions.
Production Cuts and Transport Parameters for PET
Production cuts control the generation of secondary particles and can have a large influence on computation time. For PET at 511 keV, you need a compromise that preserves important charged particle and low energy gamma transport while avoiding unnecessary detail in regions where you do not score anything.
In OpenGATE you typically configure global production cuts through the physics user info:
physics.global_cut = 1 * opengate.g4_units.mmor more explicitly:
physics.set_default_cut_value(1.0 * opengate.g4_units.mm)Smaller cuts mean more secondaries and finer tracking, which improves physical accuracy but increases run time. For PET, typical global cuts are in the 0.1 mm to a few mm range, especially in dense detector crystals. You can also use region based cuts to refine this:
physics.add_region("DetectorRegion")
physics.set_region_cut("DetectorRegion", 0.1 * opengate.g4_units.mm)and then assign the detector volumes to this region when you define the geometry. This approach lets you keep coarse cuts in the rest of the world and patient while using finer cuts in the detector where you care about detailed energy deposition patterns.
Transport parameters, such as step limits or range limits, can also be configured, but for a basic PET example you typically rely on defaults. Only when you see suspicious behavior, like positrons apparently stopping too early or photons taking very large steps in the patient, would you adjust them. If you do modify step limits, keep them consistent with the scale of your detector crystals; for instance, do not use a step limit larger than the crystal thickness.
You can summarize the trade off as follows:
| Region | Typical cut value | Motivation |
|---|---|---|
| Detector crystal | 0.1 mm to 1 mm | Detailed energy deposition, spectra |
| Patient/phantom | 1 mm to a few mm | Balanced scatter modeling and speed |
| World / air | A few mm or more | Little interest in fine transport in air |
Too large production cuts in the detector can bias energy deposition and spectra, while too small cuts in the whole geometry can make PET simulations unbearably slow. Use fine cuts only where you actually need detailed information, such as in the detector crystals.
Practical PET Physics Configuration: A Minimal Working Example
To connect all the above ideas, here is a compact example of how physics might be configured in the PET practical example script, assuming that geometry and sources have already been created:
import opengate as gate
from opengate import g4_units
sim = gate.Simulation()
# ... world, PET ring, and F-18 source definition ...
physics = sim.get_physics_user_info()
# Choose an EM physics list suitable for PET energies
physics.physics_list_name = "G4EmStandardPhysics_option4"
# Enable decay for PET radionuclides
physics.enable_decay = True
physics.enable_radioactive_decay = True
physics.decay_physics_list_name = "G4RadioactiveDecayPhysics"
# Enable atomic de-excitation if you care about low-energy X rays
physics.enable_atomic_deexcitation = True
# Set global production cuts
physics.global_cut = 1.0 * g4_units.mm
# Optional: refine cuts in the detector region
physics.add_region("PETDetectorRegion")
physics.set_region_cut("PETDetectorRegion", 0.3 * g4_units.mm)
# Later, when you create detector volumes:
# crystal.volume.region = "PETDetectorRegion"You can start from a configuration like this, run a small number of events, and check basic outputs such as singles spectra and coincidence counts. If the simulation runs too slowly, you can relax cuts slightly in non critical regions. If you require better modeling of scatter or dose, you can tighten cuts in the relevant volumes. The important part is to treat PET physics configuration as a controlled set of choices that you adjust according to the aims of the PET example, while maintaining physically reasonable defaults.
Views: 11
KAHIBARO