PHID source (Photon from Ion Decay)#
Description#
PHID (Photon from Ion Decay) is a virtual source model that generates photons emitted in the complex decay chain process of alpha-emitter radionuclides, typically for use during simulation of SPECT image acquisition. Given an alpha-emitter radionuclide, the model extracts from Geant4 databases the photon emission lines from all decaying daughters for both isometric transition and atomic relaxation processes. According to a given time range, abundances and activities in the decay chain are considered thanks to the Bateman equations, taking into account the decay rates and the initial abundances. It generates photons with the correct energy and temporal distribution, avoiding the costly Monte Carlo simulation of the complete decay chain. Photons emitted from Bremsstrahlung are ignored, but are not significant for SPECT imaging. Also, the model is not expected to be correct for gammas below 20-30 keV.
See Sarrut et al 2024 Phys. Med. Biol..
To use such a source, declare a “PhotonFromIonDecaySource” with an ion as particle name, like the “GenericSource”. Only the gammas emitted by atomic relaxation and isomeric transition will be created and tracked. The timing is taken into account by using a TAC (Time Activity Curve) automatically computed from the start and end time of the simulation. The TAC is then binned and the number of bins can be modified. See tests 053.
source = sim.add_source("PhotonFromIonDecaySource", "my_source")
source.particle = f"ion 89 225"
source.position.type = "sphere"
source.position.radius = 1 * nm
source.direction.type = "iso"
source.activity = 10 * kBq
source.atomic_relaxation_flag = True
source.isomeric_transition_flag = True
source.tac_bins = 200
source.dump_log = "phid_log.txt"
source.verbose = True
Command line tools#
Also, several command lines tools are provided :
# print information about a radionuclide bi213, pb212, etc.
phid_info ac225
# plot time activity curve of a radionuclide. Options may by set to adapt the timing
phid_tac
# plot gammas lines from a radionuclide (whatever the time)
phid_gammas ac225
phid_atomic_relaxation ac225
phid_isomeric_transition ac225
Reference#
- class PhotonFromIonDecaySource(*args, **kwargs)[source]#
Manage a set of GenericSource sub_sources, one for each nuclide gamma lines, for all daughters of the given ion. Each sub_sources will have: - activity managed by a TAC, corresponding to the Bateman equation during the time range - spectrum energy line for isomeric transition - spectrum energy line for atomic relaxation (fluo) - particle forced to gammas
User input parameters and default values:
activity:
Default value: 0
Description: Activity of the source in Bq (exclusive with ‘n’)
atomic_relaxation_flag:
Default value: True
Description: Consider gammas from atomic relaxation
attached_to:
Default value: world
Description: Name of the volume to which the source is attached.
direction:
Default value: {‘type’: ‘iso’, ‘theta’: [0, 3.141592653589793], ‘phi’: [0, 6.283185307179586], ‘momentum’: [0, 0, 1], ‘focus_point’: [0, 0, 0], ‘sigma’: [0, 0], ‘acceptance_angle’: {‘skip_policy’: ‘SkipEvents’, ‘volumes’: [], ‘intersection_flag’: False, ‘normal_flag’: False, ‘normal_vector’: [0, 0, 1], ‘normal_tolerance’: 0.05235987755982989}, ‘accolinearity_flag’: False, ‘accolinearity_fwhm’: 0.008726646259971648, ‘histogram_theta_weights’: [], ‘histogram_theta_angles’: [], ‘histogram_phi_weights’: [], ‘histogram_phi_angles’: []}
Description: Define the direction of the primary particles
direction_relative_to_attached_volume:
Default value: False
Description: Should we update the direction of the particle when the volume is moved (with dynamic parametrisation)?
dump_log:
Default value: None
Description: write log in the given filename
end_time:
Default value: None
Description: End time of the source
energy:
Default value: {‘type’: ‘mono’, ‘mono’: 0, ‘sigma_gauss’: 0, ‘is_cdf’: False, ‘min_energy’: None, ‘max_energy’: None, ‘spectrum_type’: None, ‘spectrum_weights’: [], ‘spectrum_energies’: [], ‘spectrum_energy_bin_edges’: [], ‘spectrum_histogram_interpolation’: None}
Description: Define the energy of the primary particles
half_life:
Default value: -1
Description: Half-life decay (-1 if no decay). Only when used with ‘activity’
ion:
Default value: {‘Z’: 0, ‘A’: 0, ‘E’: 0}
Description: If the particle is an ion, you must set Z: Atomic Number, A: Atomic Mass (nn + np +nlambda), E: Excitation energy (i.e. for metastable)
isomeric_transition_flag:
Default value: True
Description: Consider gammas from isomeric transition
mother:
Deprecated: The user input parameter ‘mother’ is deprecated. Use ‘attached_to’ instead.
n:
Default value: 0
Description: Number of particle to generate (exclusive with ‘activity’)
name (must be provided):
Default value: None
particle:
Default value: gamma
Description: Name of the particle generated by the source (gamma, e+ … or an ion such as ‘ion 9 18’)
position:
Default value: {‘type’: ‘point’, ‘radius’: 0, ‘sigma_x’: 0, ‘sigma_y’: 0, ‘size’: [0, 0, 0], ‘translation’: [0, 0, 0], ‘rotation’: array([[1., 0., 0.],, [0., 1., 0.],, [0., 0., 1.]]), ‘confine’: None}
Description: Define the position of the primary particles
start_time:
Default value: None
Description: Starting time of the source
tac_activities:
Default value: None
Description: TAC: Time Activity Curve, this set the vector for the activities. Must be used with tac_times.
tac_bins:
Default value: 200
Description: Number of bins for the TAC
tac_times:
Default value: None
Description: TAC: Time Activity Curve, this set the vector for the times. Must be used with tac_activities.
user_particle_life_time:
Default value: -1
Description: FIXME
verbose:
Default value: False
Description: Verbose for debug
weight:
Default value: -1
Description: Particle initial weight (for variance reduction technique)
weight_sigma:
Default value: -1
Description: if not negative, the weights of the particle are a Gaussian distribution with this sigma