Running PG simulator

GATE as PG simulator

This article describes steps used in generating prompt gammas (PG) in proton radiotherapy for tests of Compton cameras using this software.

Work was mostly performed by Kristijan Kuhar (kristijan.kuhar@gmail.com).

It derives heavily from vpgtle code desribed here. In essence, the PG track simulation is split to three parts:

  • stage 0: generation of PG probability cross-sections for a pre-defined set of elements
  • stage 1: generation of voxel-based PGyd generation image based on either voxelized or analytical phantoms containing a (sub)set of elements used in stage 0. Here a small-statistic of proton therapy is run to determine track distribution
  • stage 2: use PGyd to generate photons to be detected by the detector system

Data generated in step 0 can significantly shorten the time needed to generate PGyd. In continuation, steps used in PG simulation will be described

Stage 0

Stage 0 is run through entering the vpgtle_gate/stage0 directory. First, create the output directory:

$>cd vpgtle_gate/stage0
$>mkdir output

and running:

$> $GATE mac/main.mac -a '[ELEMENT,Aluminium]';

to get data for aluminium. The run takes a while; current estimate is 6h/element. One needs to rerun the parameters stored in output only when the model for the interactions are changed (ie. change the physics list or Geant data/software version).

Run length is approximately 0.5k evts/s. For a standard size of 10M, the run/element will take on the order of 6h.

The content of db-ELEMENT.root file is a set of plots:

  • Ngamma: distribution of generated prompt gammas (could be more than 1 per proton interaction) with respect to both proton energy (at the time of interaction) and energy of the generated photon

  • GammaZ: Gamma_Z as found in the JMS paper. Actually, it is Ngamma scaled with number of protons that interacted via any inelastic nuclear process (EpInelastic, see below) at that proton energy bin and multiplied by cross-section per density (SigmaInelastic, see below). Units are x10 cm^2/g

  • EpEpg: the same as Ngamma
  • EpEpgNorm: the same as GammaZ
  • EpInelastic: distribution of protons that underwent an inelastic interaction with respect to proton energy Ninel(Ep,Z) as used in the paper
  • Ep: distribution of all protons that interacted wrt. proton energy, including non-inelastic interactions (ie. msc)
  • SigmaInelastic: inelastic cross-section (GetSigmaPerVolume()), in mm^-1. Also, inelastic cross-section per density, since at stage 0, all densities are set to 1 g/cm3. In this case, the units are x10 cm2/g
  • EpInelasticProducedGamma: distribution of protons that generated at least 1 photon wrt. proton energy

Some notes of incident proton data from LANL generated via MCNPX with GNASH nuclear model are here. There are some obvious discrepancies. E.g. for oxygen, the cross-section peaks at 0.3 b, equivalent to 0.00125 cm2/g, while Gate/Geant with QGSP_BIC_HP_EMY peaks at 0.002 cm2/g.

The current G4NDL4.5 version has some missing data, e.g.

Carbon:

  • NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
  • NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
  • NeutronHP: /Inelastic file for Z = 6, A = 12 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
  • NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
  • NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
  • NeutronHP: /Inelastic file for Z = 6, A = 13 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon

Oxygen

  • NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
  • NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
  • NeutronHP: /Inelastic file for Z = 8, A = 18 is not found and NeutronHP will use /usr/share/Geant4-10.3.0/data/G4NDL4.5/Inelastic/CrossSection/8_17_Oxygen

links

social