I am having a problem with unreliable decays of tritons in Geant4.9.3.p01. I followed this advice to make the triton unstable: http://bugzilla-geant4.kek.jp/show_bug.cgi?id=916 I find that if G4ParticleDefinition::SetPDGStable(false) is not also called for the triton, Geant4 will sometimes produce decays, but sometimes not. I think that if G4ParticleDefinition::SetPDGStable(false) is not called, radioactive decay may not be invoked in G4SteppingManager:: InvokeAtRestDoItProcs(). This occurs because G4SteppingManager:: InvokeAtRestDoItProcs() sets lifeTime to G4VProcess::AtRestGPIL(* fTrack, &fCondition ), which returns the value of G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(). G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength() returns the product of -std::log( G4UniformRand()) (from G4VProcess::ResetNumberOfInteractionLengthLeft()) and G4RadioactiveDecay::GetMeanLifeTime(). G4RadioactiveDecay::GetMeanLifeTime() will return DBL_MAX if GetPDGStable() returns false; this leads to lifeTime = inf if -std::log( G4UniformRand()) is greater than 1.0. If lifeTime is set to inf, G4RadioactiveDecay is never invoked. If I set G4ParticleDefinition::SetPDGStable(false), the problem goes away. It seems undesirable that not setting G4ParticleDefinition::SetPDGStable(false) leads to this unreliable behavior.
Hi, Yes. You are right. G4ParticleDefinition::SetPDGStable(false) should be called in addition to activate the decay process and set the life time as you pointed out. Thank you ! Hisaya