Problem 1393 - G4RadioactiveDecay segment fatal with apply command "/grdm/analogueMC false" and very low hlTreshold value
Summary: G4RadioactiveDecay segment fatal with apply command "/grdm/analogueMC false"...
Status: RESOLVED INVALID
Alias: None
Product: Geant4
Classification: Unclassified
Component: processes/hadronic/models/radioactive_decay (show other problems)
Version: 9.5
Hardware: All All
: P5 critical
Assignee: Laurent Desorgher
URL:
Depends on:
Blocks:
 
Reported: 2012-11-17 10:33 CET by chenghai
Modified: 2013-07-19 16:09 CEST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description chenghai 2012-11-17 10:33:22 CET
Hello.
With the geant4 version 9.5(including patch02). By using G4RadioactiveDecay, I test the isotopes decay. The following isotopes will cause segment fatal at line G4RadioactiveDecay.cc:1627

1624             } else {
1625               // A decay channel has been identified, so execute the DecayIt.
1626               G4double tempmass = parentNucleus->GetPDGMass();      
1627               tempprods = theDecayChannel->DecayIt(tempmass);
1628               weight *= (theDecayChannel->GetBR())*(theDecayTable->entries());
1629             }
1630           } else {

These isotopes are:
#F24
/gps/ion 9 24 0 0
#Ne24
/gps/ion 10 24 0 0
#Po201
/gps/ion 84 201 0 0
#Cs137
/gps/ion 55 137 0 0

At the same time the following command was applied: /grdm/analogueMC false 

Turn analogueMC to true or set a very large hlTreshold can avoid this problem.


I think the problem comes from line G4RadioactiveDecay.cc:1074
1072             if (level->HalfLife()*ns >= halflifethreshold ){
1073               // save the metastable nucleus 
1074               theDecayTable->Insert(theChannel);
1075             }
1076             else{
1077               brs[theDecayMode] += theChannel->GetBR();
1078             }

The "theChannel" is from line G4RadioactiveDecay.cc:1057
1054       // Go through the decay table and to combine the same decay channels
1055       //
1056       for (i=0; i<aTempDecayTable->entries(); i++) {
1057         theChannel             = aTempDecayTable->GetDecayChannel(i);
1058         theNuclearDecayChannel = static_cast<G4NuclearDecayChannel *>(theChannel);
1059         theDecayMode           = theNuclearDecayChannel->GetDecayMode();

When call "theDecayTable->Insert(theChannel)", then "theDecayTable" and "theChannel" will be deleted at line G4RadioactiveDecay.cc:1212
1209           }
1210         } // end of testing daughter nucleus
1211       } // end of i loop( the branches) 
1212       delete theDecayTable;
1213 
1214     } //end of for j loop
1215     nS = nT;

Go back to line G4RadioactiveDecay.cc:1627. The particle's decay channel are to be invalid. An segment fatal will occur.

I don't know the purpose of line 1074 and the variable "theDecayChannel". Does the "theDecayChannel" effect the particle's original decay table? Because it not assigned to a particle and it will be delete finally. 

Thanks.

Best regards.

Chenghai
Comment 1 desorgher 2013-02-22 15:16:55 CET
Dear Chengai,

Many thanks for your report!
I have tried to reproduce the bug as reported in your report but did not find any problem to simulate
the decays of all isotopes you did mentionned in the non analogue mode and setting very small hl threshold value. This was done with geant4.9.6.

So I am not sure if there is really a bug there!
Could you please check from your side if you still have the bug in the 4.9.6  version and report on the outcome of your test and also condition of your simulation if the bug occurs again.

With my best regards


Laurent
Comment 2 Laurent Desorgher 2013-07-19 16:09:37 CEST
The bug is not observed in our test, so we consider the problem as resolved.


Best regards


Laurent Desorgher