Problem 852

Summary: Request for the support of nucleon-emission decay in exrdm
Product: Geant4 Reporter: kameoka
Component: processes/hadronic/modelsAssignee: flei
Status: RESOLVED LATER    
Severity: normal    
Priority: P2    
Version: other   
Hardware: PC   
OS: Linux   

Description kameoka 2006-03-23 03:02:17 CET
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.
Comment 1 kameoka 2006-04-01 00:01:59 CEST
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);
Comment 2 flei 2006-08-17 12:37:59 CEST
Thanks for reporting the problem and for the solution. Will evaluate it and
include the changes in future release

Fan