62 G4cout <<
"G4MolecularDecayProcess constructor " <<
" Name:" << processName <<
G4endl;
68 fDecayAtFixedTime = true ;
73 DecayDisplacementMap::iterator it = fDecayDisplacementMap.begin();
75 for( ; it != fDecayDisplacementMap.end() ; it++)
83 fDecayDisplacementMap.clear();
89 fDecayAtFixedTime = right . fDecayAtFixedTime;
90 fDecayDisplacementMap = right.fDecayDisplacementMap;
91 fVerbose = right.fVerbose ;
101 G4cout<<
"G4MolecularDecay::IsApplicable(";
118 return (output > 0 ? output : 0 );
137 if(moleculeDefinition-> GetDecayTable())
139 const vector<const G4MolecularDecayChannel*>* DecayVector =
140 (theMotherMolecule -> GetDecayChannel());
146 exceptionDescription <<
"No decay channel was found for the molecule : " << theMotherMolecule-> GetName() <<
G4endl;
151 G4int DecayVectorSize = DecayVector-> size();
160 decayChannel = (*DecayVector)[i];
161 if(RdmValue < decayChannel->GetProbability())
break;
165 while(i< DecayVectorSize);
187 vector<G4ThreeVector> ProductsDisplacement(nbProducts);
190 DecayDisplacementMap::iterator it = fDecayDisplacementMap.find(moleculeDefinition);
192 if(it!=fDecayDisplacementMap.end())
196 theMotherMoleculeDisplacement = displacer-> GetMotherMoleculeDisplacement(decayChannel);
201 errMsg <<
"No G4MolecularDecayProcess::theDecayDisplacementMap["
202 << theMotherMolecule->
GetName() +
"]" ;
211 G4cout<<
"Decay Process : "
212 << theMotherMolecule->
GetName()
213 <<
" (trackID :" << track.
GetTrackID() <<
") "
219 for (
G4int j=0; j<nbProducts ; j++)
228 + theMotherMoleculeDisplacement + ProductsDisplacement[j]);
230 secondary-> SetTrackStatus(
fAlive);
252 else if(!decayEnergy && !nbProducts)
255 errMsg <<
"There is no products and no energy specified in the molecular decay channel";
267 fDecayDisplacementMap[molDef] = aDisplacer;
272 return fDecayDisplacementMap[molDef] ;