Decay of Cobalt 60 in slab


I want to simulate the decay of a 100% pure cobalt-60 slab, and it does not decay on its own. I only have the geometry and material defined for the slab.

I was thinking I would need to specify something in the PrimaryGeneratorAction file, but I am not sure how I would implement it. The main usage of the PrimaryGeneratorAction file is to create gammas. I do not want to force cobalt-60 decay each event, but for it to decay randomly. How would I implement this?

I also have found some information on the G4DecayProcess class, but not enough to actually implement it. Any help would be appreciated. Thank you!

Geant4 Version: 11.1
Operating System: Linux

You’ve discovered the difference between G4Isotope, which is part of the G4Material framework for defining geometry elements, and G4Ions, which are active trackable particles corresponding to nuclei.

You can make your geometry out of anything you want. It won’t decay. It won’t get activated. It’s absolutely passive stuff which is identical from event to event in your simulation. It’s the “ground” within which all the tracks do their thing.

If you want to generate events simulating Co-60 decays, then what you want to do is create a Co-60 G4Ions as your primary particle (i.e., in your PrimaryGeneratorAction), and G4 will have it decay, and track the resulting secondaries, etc.

If you are using G4ParticleGun, you can do this with two macro commands:

/gun/particle ion         # This says you want to create a G4ions primary
/gun/ion 27 60            # This says you want Co-60 as your primary

If you’re using GPS, you can do the same, but with /gps/... commands instead.

Thank you for your reply, that makes sense why I cannot use the geometry to create primaries

I had looked into G4GeneralParticleSource for a little bit, and it seems I can use this to generate primaries within a region. Would I be able to use this in conjunction with a particle gun? I would like to seed a particle source with cobalt-60 and later more ions to create a background source, and then run a beam of gammas into my detector and look at that spectrum. Would this be possible as well?

You’re asking multiple different things, here.

GPS is a replacement for the much simpler G4ParticleGun. If you want to write your own source, and do all the calculations of position, particle, etc., then you can do that and have a G4ParticleGun* data member that you call to take of putting stuff into the event. Instead of doing that, you could use GPS and do the configuration with macro commands.

I’m not sure I fully understand. You’re interested a gamma beam incident on some mix of ions and you want to see the nuclear excitations that result from those gammas? You would not do that with a “mix of sources.” Geant4 very explicitly does not ever support two different G4Tracks interacting with one another.

If you want a target for your gamma beam, then you make it as a volume with materials. You can define your own material that is enriched in some isotope or another, but the material isotopes will not decay. Ever. But they can act as a target for your gammas.

I apologize for the confusion. I should have explained my simulation setup better.

My simulation includes a detector to detect a beam of gammas. I want to see what a background spectrum overlayed on the gamma spectrum of the detector is like, so I want to simulate a source of background gammas along with my beam of gammas. I use G4ParticleGun to generate the beam of gammas, and I was thinking of using G4GeneralPrimarySource to generate G4Ions that would decay within a specified region. The gammas from those ions would then interact with the detector as my background.

Would this be feasible? Thank you!

Yes, it’s feasible, but you probably want to do it differently. To do what you describe in your code, you would need to write your own custom G4PrimaryGeneratorAction (since you’re doing something specific to your experiment, not general purpose). Your code would need to include all of the “relative activity” calculations to deal with whether or not you would expect an overlay of the two sources, and you would have to deal with the corresponding time shift (if any, and if your detector setup includes a trigger window).

Alternatively, you generate the individual sources separately: your gamma beam on your geometry, then a sample of Co-60 decays within your sample, maybe even samples of other radioisotope contaminants in your detector casing or support frame or whatever. Now you’ve got detector response spectra from each of those sources. In your offline analysis code, you can scale those spectra according to the relative activities and sum them together to see what the composite spectrum looks like.