The Geant4 radioactive decay module (RDM) is currently unable to handle nucleon-emission decay of a nucleus such as 5He -> alpha + n and 5Li -> alpha + p. The RDM assumes the daughters resulted from the decay of a nucleus to be also nuclei, and attempts to create G4Ions objects by invoking G4IonTable::GetIon(), which fails for Z=0 or A=1 particle. I believe that the nucleon-emission decay is able to be supported with only minor modifications to treat such a daughter properly as a proton or neutron.
Dear Geant4 developers, let me elaborate on the issue. The present radioactive decay data distributed with the Geant4 package lacks the decay scheme for He5 and Li5 although they are unstable. We added the alpha decay mode to their respective data files to make them decay, but the current implementation of the RDM is unable to handle the decays because the residual (the daughter other than alpha) is not a nucleus but a nucleon. I made a modification to the function G4NuclearDecayChannel::FillDaughterNucleus() to deal properly with this case. I'd appreciate it if you would adopt the following patch. Regards, Satoru Kameoka --- G4NuclearDecayChannel.cc 2006-04-01 10:57:43.000000000 +0900 +++ G4NuclearDecayChannel.cc.org 2006-04-01 13:35:52.000000000 +0900 @@ -198,12 +198,7 @@ // daughterA = A; daughterZ = Z; - if (Z == 1 && A == 1) { - daughterNucleus = G4Proton::Definition(); - } else if (Z == 0 && A == 1) { - daughterNucleus = G4Neutron::Definition(); - } else { - G4IonTable *theIonTable = (G4IonTable*)(G4ParticleTable::GetParticleTable()->GetIonTable()); + G4IonTable *theIonTable = (G4IonTable*)(G4ParticleTable::GetParticleTable()->GetIonTable()); // daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, 0.0*keV); // // @@ -258,8 +253,7 @@ daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, 0.0*keV); } */ - daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, theDaughterExcitation*MeV); - } + daughterNucleus = theIonTable->GetIon(daughterZ, daughterA, theDaughterExcitation*MeV); daughterExcitation = theDaughterExcitation; SetDaughter(index, daughterNucleus);
Thanks for reporting the problem and for the solution. Will evaluate it and include the changes in future release Fan