GPS histogram source for Co-60 gamma emissions

_Geant4 Version: 4.11
_Operating System: Windows 10
_Compiler/Version: MSVC/14.29.30133
_CMake Version: 3.22.1.0

Hello Geant4 community,

I’m trying to simulate a point source of Co-60 (2 GBq) that emits two γ-rays:

  • 1.17323 MeV with intensity 99.85%
  • 1.33249 MeV with intensity 99.9826%

My goal is to sample both lines in a single GPS run using a histogram energy distribution, rather than running two separate monoenergetic simulations and summing the results. I’ve tried several approaches with /gps/source/intensity and /gps/source/add, but the deposited dose rate at 200 cm (10 cm probe, 10 M primaries) varies wildly:

Case Source definition Result (μGy/h)
1 /gps/source/intensity 0.9985
/gps/particle gamma
/gps/pos/type Point
/gps/pos/centre 0 0 0 cm
/gps/ang/type iso
/gps/ene/type Mono
/gps/ene/mono 1.17323 MeV

/gps/source/add 0.999826
/gps/particle gamma
/gps/pos/type Point
/gps/pos/centre 0 0 0 cm
/gps/ang/type iso
/gps/ene/type Mono
/gps/ene/mono 1.33249 MeV
72.46
2 /gps/source/add 0.9985
/gps/particle gamma
/gps/pos/type Point
/gps/pos/centre 0 0 0 cm
/gps/ang/type iso
/gps/ene/type Mono
/gps/ene/mono 1.17323 MeV

/gps/source/add 0.999826
/gps/particle gamma
/gps/pos/type Point
/gps/pos/centre 0 0 0 cm
/gps/ang/type iso
/gps/ene/type Mono
/gps/ene/mono 1.33249 MeV
37.19
3 /gps/source/intensity 0.9985
/gps/particle gamma
/gps/pos/type Point
/gps/pos/centre 0 0 0 cm
/gps/ang/type iso
/gps/ene/type Mono
/gps/ene/mono 1.17323 MeV

/gps/source/intensity 0.999826
/gps/particle gamma
/gps/pos/type Point
/gps/pos/centre 0 0 0 cm
/gps/ang/type iso
/gps/ene/type Mono
/gps/ene/mono 1.33249 MeV
67.54
4 Run A:
/gps/source/intensity 0.9985/gps/ene/mono 1.17323 MeV

Run B:
/gps/source/intensity 0.999826/gps/ene/mono 1.33249 MeV
57.05 + 67.54 = 124.59
5 Run A:
/gps/source/add 0.9985/gps/ene/mono 1.17323 MeV

Run B:
/gps/source/add 0.999826/gps/ene/mono 1.33249 MeV
24.56 + 26.14 = 50.71

None of these matches my expectation of roughly ~ 134 μGy/h for the correctly weighted double line. I suspect I misunderstand:

  1. Difference between /gps/source/intensity and /gps/source/add
  2. How to normalize branching ratios so total probability = 1
  3. Proper use of the /gps/hist/ commands for a two-point energy spectrum

Minimal macro for context

/control/verbose 1
/geometry/source geometry.tg
/physics_lists/select Shielding
/run/initialize
/control/alias SourcePosition 0.0 0.0 0.0
/control/execute Co-60_Point.dat 
/score/create/probe ProbeVol 10.0 cm
/score/probe/material G4_AIR
/score/probe/locate 200.0 0.0 0.0 cm
/score/quantity/doseDeposit dDep
/vis/disable
/tracking/verbose 0
/run/beamOn 10000000
/score/dumpQuantityToFile ProbeVol dDep output.csv
/score/close

My questions:

  1. What is the correct way to define a two-line Co-60 source in one GPS histogram run?
  2. How should the histogram points be specified (e.g. /gps/hist/point) and normalized?
  3. Can someone share a minimal example using /gps/hist/type energy (or /gps/hist/file) to sample exactly these two energies with the correct branching ratios?
  4. Are there pitfalls in mixing /gps/source/intensity vs /gps/source/add that I should watch out for?

Dear @mahmoodeid

Thank you for your post. There are several examples showing how to use the GPS, particularly the macro 18 shows the case you are asking for /gps/hist/type hist [1]

The same macro, and others, show how to use /gps/hist/point.

To answer the point 1, probably the simplest is to define a 60Co ion, and let Geant4 perform the radioactive decay. You may find a dedicated example here [2]

I hope this helps, please let us know if something is missing in the GPS documentation or examples, or something to be improved.

Best,
Alvaro

[1] geant4/examples/extended/eventgenerator/exgps/macros/test18.mac at 20a218bbe1d8b4a78f819e396f8be615e6a38358 · Geant4/geant4 · GitHub
[2] geant4/examples/extended/radioactivedecay/rdecay01/Co60.mac at master · Geant4/geant4 · GitHub

Hi Alvaro,

Thanks for pointing me to test18.mac and the rdecay01 example. I’m fully aware that the “official” route:

# define a Co‐60 “ion” source
/gps/particle        ion
/gps/ion             27 60 0             # Z=27, A=60, Eexc=0
/gps/pos/type        Point
/gps/pos/centre      0.0 0.0 0.0 cm
/gps/ang/type        iso
...

with G4RadioactiveDecay gives me ∼127 μGy/h (i.e. two gammas per decay) in one go.

What remains unclear is whether there’s a purely GPS‐based way to fire both 1.173 MeV and 1.332 MeV gammas per primary, with correct branching, in a single simulation—without resorting to the ion/decay machinery and without post-run summation.

  • I understand that /gps/hist/point (User/energy) normalizes the two lines but still emits only one photon per shot, hence my ∼60 μGy/h result.
  • I also see that mixing /gps/source/intensity and /gps/source/add in Mono mode simply creates two weighted monoenergetic sources, but still one γ per event.

Is there a GPS command or combination of commands that will:

  1. Define multiple emissions (both γ’s) per primary in one run,
  2. Honor the Co-60 branching ratios,
  3. Avoid manual doubling of primaries or separate runs + summation?

In other words, can GPS itself be coaxed to treat one “event” as a full Co-60 decay—firing two gammas—without the radioactive‐decay process? Any clear example or pointer in the GPS docs would be greatly appreciated.

Thanks again for your help!
Mahmoud

GPS cannot do what you’re asking. You’re asking for a macro-based method to specifically reproduce exactly what G4RadioactiveDecay is already written to do correctly. Your “1., 2., 3.” requestion doesn’t include the angular correlation between the two decay gammas, so it’s still not correct, but G4RadioactiveDecay is.

If you really want to do it yourself, you should write your own PrimaryGeneratorAction with exactly the model you’re interested it.

1 Like

Hi @mahmoodeid

I totally subscribe what @mkelsey said.

Nevertheless, if you want GPS to generate two gammas with different energies, please check test34.mac [1]. To setup the relative intensity xxx, please use /gps/source/add xxx and allow multiple vertex with /gps/source/multiplevertex true.

Best,
Alvaro

[1] geant4/examples/extended/eventgenerator/exgps/macros/test34.mac at master · Geant4/geant4 · GitHub

Thanks a lot, Alvaro, that is actually what i was looking for.

Greetings,
Mahmoud