Isotope lifetimes from G4IonTable are strange or have a value of 0 s

Hi , after created the topic https://geant4-forum.web.cern.ch/t/geant4-11-01-g4iontable-give-a-lifetime-of-0s-from-some-isotopes/10441 , I realised that the lifetime returned by DumpTable() or GetPDGLifeTime() using G4IonTable are systematically wrong.

A example of the code used to display the ion infos :

G4IonTable* IonTable = G4IonTable::GetIonTable();
  int Z = 25;
  for (int A = 60; A <= 65; ++A) {
    G4Ions* Ion = dynamic_cast<G4Ions*>(IonTable->FindIon(Z, A, 0));
    if (Ion == 0) {cout<<"ion not found !"<<endl; continue;}
    Ion->DumpTable();
    
    cout<<"Life time :"<<IonTable->GetLifeTime(Z, A, 0)<<endl;
    G4ParticleDefinition* part = IonTable->GetIon(Z, A, 0);
    cout<<"Life time from PDG def:"<<part->GetPDGLifeTime()/s<<endl;

Some result example :

--- G4ParticleDefinition ---
 Particle Name : Mn60
 PDG particle code : 1000250600 [PDG anti-particle code: 0]
 Mass [GeV/c2] : 55.8239     Width : 0
 Lifetime [nsec] : 4.03955e+08
 Charge [e]: 25
 Spin : 2/2
 Parity : 1
 Charge conjugation : 0
 Isospin : (I,Iz): (0/2 , 0/2 ) 
 GParity : 0
 Quark contents     (d,u,s,c,b,t) : 85, 95, 0, 0, 0, 0
 AntiQuark contents               : 0, 0, 0, 0, 0, 0
 Lepton number : 0 Baryon number : 60
 Particle type : nucleus [generic]
 Atomic Number : 25  Atomic Mass : 60
 Stable : unstable -- lifetime = 403.955 ms 
  Decay table should be consulted to G4RadioactiveDecayProcess.
Life time :4.03955e+08
Life time from PDG def:0.403955

--- G4ParticleDefinition ---
 Particle Name : Mn61
 PDG particle code : 1000250610 [PDG anti-particle code: 0]
 Mass [GeV/c2] : 56.7567     Width : 0
 Lifetime [nsec] : 9.66606e+08
 Charge [e]: 25
 Spin : 5/2
 Parity : 1
 Charge conjugation : 0
 Isospin : (I,Iz): (0/2 , 0/2 ) 
 GParity : 0
 Quark contents     (d,u,s,c,b,t) : 86, 97, 0, 0, 0, 0
 AntiQuark contents               : 0, 0, 0, 0, 0, 0
 Lepton number : 0 Baryon number : 61
 Particle type : nucleus [generic]
 Atomic Number : 25  Atomic Mass : 61
 Stable : unstable -- lifetime = 966.606 ms 
  Decay table should be consulted to G4RadioactiveDecayProcess.
Life time :9.66606e+08
Life time from PDG def:0.966606

--- G4ParticleDefinition ---
 Particle Name : Mn62
 PDG particle code : 1000250620 [PDG anti-particle code: 0]
 Mass [GeV/c2] : 57.6914     Width : 0
 Lifetime [nsec] : 0
 Charge [e]: 25
 Spin : 0/2
 Parity : 1
 Charge conjugation : 0
 Isospin : (I,Iz): (0/2 , 0/2 ) 
 GParity : 0
 Quark contents     (d,u,s,c,b,t) : 87, 99, 0, 0, 0, 0
 AntiQuark contents               : 0, 0, 0, 0, 0, 0
 Lepton number : 0 Baryon number : 62
 Particle type : nucleus [generic]
 Atomic Number : 25  Atomic Mass : 62
 Stable : unstable -- lifetime = 0 ps 
  Decay table should be consulted to G4RadioactiveDecayProcess.
Life time :-1001
Life time from PDG def:0

When we look to the data geant4_v11.01/share/Geant4-10.2.3/data/RadioactiveDecay5.6/ we see that the half-lifetime should be 0.28s , 0.709 s and 92ms.

mean-life and half-life …
savitri.mac.txt (166 Bytes)
savitri.out.txt (2.1 KB)

Oh ok my bad :sweat_smile:! But what about Mn62 which is not found ?

Mn62 ground state is flagged as “floating” (eg. +x). I do not remember well what this means exactly. I have noticed that, in this situation, mean life is set to zero.

Mn62.out.txt (1.8 KB)

I have found a explanation about floating level here https://geant4-forum.web.cern.ch/t/does-g4radioactivedecay-handle-isomeric-states/7727/6 .

If I is set explicitly the floating level for the GetIon method i.e for Mn62 :

G4Ions* Ion = dynamic_cast<G4Ions*>(IonTable->GetIon(25, 62, 0,G4Ions::G4FloatLevelBase::plus_X));
Ion->DumpTable();

I have the right lifetime :

--- G4ParticleDefinition ---
 Particle Name : Mn62[0.000X]
 PDG particle code : 1000250620 [PDG anti-particle code: 0]
 Mass [GeV/c2] : 57.6914     Width : 0
 Lifetime [nsec] : 1.32728e+08
 Charge [e]: 25
 Spin : 2/2
 Parity : 1
 Charge conjugation : 0
 Isospin : (I,Iz): (0/2 , 0/2 ) 
 GParity : 0
 Quark contents     (d,u,s,c,b,t) : 87, 99, 0, 0, 0, 0
 AntiQuark contents               : 0, 0, 0, 0, 0, 0
 Lepton number : 0 Baryon number : 62
 Particle type : nucleus [generic]
 Atomic Number : 25  Atomic Mass : 62
 Stable : unstable -- lifetime = 132.728 ms 
  Decay table should be consulted to G4RadioactiveDecayProcess.

However , as I don’t know in advance the floating level of a isotope for my activation code , i need to loop over the G4FloatLevelBase ( no_Float,plus_X,plus_Y , etc…) until the method GetIon((Z, A, 0,G4Ions::G4FloatLevelBase)) return a non 0 value…

It is a issue only for isotopes where the ground state is “floating” like Mn62 which return a lifetime of 0s if we don’t put explicitly the floating level. Also if you want to get the lifetime for a excited state which is different than no_Float level

Hello,

thank you for the post. The explanation of the problem in this discussion about floating levels is correct. In the current Geant4 schema for floating levels we have this problem, which may be clarified as a bug for the case when a ground level is floating. I would recommend to make a Bugzilla bug report using the text of this discussion. This will help to fix the problem faster.

VI