Radioactive Decays & general Ion Source
After a discussion with a colleague and some research, I have implemented the following approach for radioactive decays. It uses the Geant4-internal facilities for radioactive decays and stops the decay chain after the first instance.
Radioactive sources can be simulated simply by setting their isotope name in the particle_type
parameter, and optionally by setting the source energy to zero for a decay in rest.
Secondary ions from the decay are not further treated and the decay chain is interrupted, e.g. Am241 only undergoes its alpha decay without the decay of its daughter nucleus of Np237 being simulated.
Currently, the following radioactive isotopes are supported: Fe55
, Am241
, Sr90
, Co60
, Cs137
.
Ions can be used as particles by setting their atomic properties, i.e. the atomic number Z, the atomic mass A, their charge Q and the excitation energy E via the following syntax:
particle_type = "ion/Z/A/Q/E"
where Z
and A
are unsigned integers, Q
is a signed integer and E
a floating point value with units, e.g. 13eV
.
I still have the following open questions:
- Does adding the
G4RadioactiveDecays
physics list has any impact on other simulations? I don't see any implications though. - Ion excitation energy: how does this play together with the source energy (i.e.
source->GetEneDist()->SetMonoEnergy()
? - In what units does G4 expect the excitation energy?
- Is there a way to access ions by their name, just like there is for PDG particles? The
G4IonTable
does not seem to offer aGetIon(std::string name)
function, but there is one later which can be retrieved byGetParticleName()
- this resolves toFe55
for the iron source. With name lookup we could circumvent re-adding our own database of radioactive sources.
@mjing, could you please have a look at this and test it? What do you think of this approach? I think it is a bit more generic than our previous idea of simulating multiple Gaussian distributions manually.
This MR fixes #110 (closed).