Problem 1560

Summary: G4ions: GetPGDStable says all ions are stable
Product: Geant4 Reporter: Andreas <zog>
Component: processes/hadronic/models/radioactive_decayAssignee: asai
Status: RESOLVED FIXED    
Severity: major CC: dennis.herbert.wright, zog
Priority: P5    
Version: 10.0   
Hardware: All   
OS: All   

Description Andreas 2014-01-16 19:24:49 CET

    
Comment 1 Andreas 2014-01-16 19:44:49 CET
Hello,

Sorry somehow the email got submitted while typing the subject ;-(

Here are the problems:

(1)
Looking at G4ions and the GetPGDStable attribute, it always returns stable even for instable isotopes. This was not the case in previous releases.

Here is some code to check this based on the example for Zn:
  G4IonTable* IonTable = G4IonTable::GetIonTable();
  int Z = 30;
  for (int A = 60; A <= 72; ++A) {
    G4Ions* Ion = dynamic_cast<G4Ions*>(IonTable->GetIon(Z, A, 0));
    if (Ion == 0) continue;
    Ion->DumpTable();
  }

Zn has the following stable isotopes: 66, 67, and 68 -- 64 and 70 are considered to be "observationally stable".

The above output shows that ALL isotopes are considered stable!.


(2)
In addition, looking at the isotopes 64 and 70 - they have lifetime. Is is OK because they only considered observationally stable, however, they have no decays associated with them!

If you look at the decay tables for the above elements via:
  G4IonTable* IonTable = G4IonTable::GetIonTable();
  int Z = 30;
  for (int A = 60; A <= 72; ++A) {
    G4Ions* Ion = dynamic_cast<G4Ions*>(IonTable->GetIon(Z, A, 0));
    if (Ion == 0) continue;
    //Ion->DumpTable();

    G4RadioactiveDecay* Decay = new G4RadioactiveDecay();
    G4DecayTable* DecayTable = Decay->LoadDecayTable(*Ion);
    if (DecayTable == 0) continue;
    if (DecayTable->entries() == 0) continue;
    DecayTable->DumpInfo();
  }
  return true;

Then you see that:
(1) 64 and 66 don't have any decays channels
    --> OK for 66 but sine 64 is associated with a lifetime in the previous step it should also have decays
(2) 67, 68, 70 have decay channels, but they all point to themselves:

G4DecayTable:  Zn67
0:  BR:  1  [Phase Space]   :   Zn67

G4DecayTable:  Zn68
0:  BR:  1  [Phase Space]   :   Zn68


In summary, the current setup in 10.0 is much more inconsistent than in previous releases, and it is currently very hard to determine if an isotope is unstable and then into which daughter products it decays.

I suggest to harmonize the results:
(1) Make sure GetPGDStable() always return the correct result
(2) Make sure all isotopes with a lifetime (in their non-excited state) also have decay channels associated with them.


Thanks a lot,
Andreas
Comment 2 dennis.herbert.wright 2014-02-21 01:20:42 CET
20 nuclides in the RadioactiveDecay4.0 version of the database were identified as having long ground state lifetimes, but no decay scheme.  In the absence of data, decay schemes were added to the next version (RadioactiveDecay4.1) assuming that the theoretically expected decay occurs.  For four of these nuclides, alpha decay is expected.  For six of them double beta+ decay is expected and for the rest, double beta-.  The double beta channels are not yet implemented in the code, but placeholders were added so that the decay files are properly handled.    RadioactiveDecay4.1 and the updated code are expected to be available in a patch coming in March.  This fixes your second request.  Your first I have referred to Makoto Asai since it falls in his category.
Comment 3 asai 2014-02-22 00:49:13 CET
I modified G4ParticleDefinition::DumpTable() method so that it displays correct stability information for a general ion as long as it is known to  G4NuclideTable.
Modification will not be included in version 10.0-p01 release that should come out very soon, but will be included in the next release (v10.0-p02).
Comment 4 Andreas 2014-02-22 01:10:38 CET
Hi Makato,

Did you just fix DumpTable() or also GetPDGStable(), which would be the more important function?

Thanks,
Andreas
Comment 5 asai 2014-02-22 01:28:48 CET
I modified G4ParticleDefinition::DumpTable() method so that it displays correct stability information for a general ion as long as it is known to  G4NuclideTable.
Modification will not be included in version 10.0-p01 release that should come out very soon, but will be included in the next release (v10.0-p02).
Comment 6 asai 2014-02-22 01:30:14 CET
GetPDGStable() and GetPDGLifeTime() are also modified.