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] ;
G4Molecule * GetMolecule(const G4Track &track)
G4DLLIMPORT std::ostream G4cout
virtual G4double GetMeanLifeTime(const G4Track &, G4ForceCondition *)
void SetDecayDisplacer(const G4ParticleDefinition *, G4VMolecularDecayDisplacer *)
virtual ~G4DNAMolecularDecay()
G4VMolecularDecayDisplacer * GetDecayDisplacer(const G4ParticleDefinition *)
virtual G4VParticleChange * DecayIt(const G4Track &, const G4Step &)
G4DNAMolecularDecay(const G4String &processName="DNAMolecularDecay", G4ProcessType type=fDecay)
virtual G4bool IsApplicable(const G4ParticleDefinition &)
static G4ITManager< T > * Instance()
const G4String & GetName() const
G4double GetEnergy() const
G4int GetNbProducts() const
const G4Molecule * GetProduct(int) const
G4double GetProbability() const
const G4String & GetName() const
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
const G4ElectronOccupancy * GetElectronOccupancy() const
const G4MoleculeDefinition * GetDefinition() const
virtual void Initialize(const G4Track &)
const G4String & GetParticleType() const
const G4String & GetParticleName() const
const G4ThreeVector & GetPosition() const
G4double GetProperTime() const
Identical to G4VRestProcess with dependency from G4VITProcess.
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDecayChannel *) const =0
void ProposeTrackStatus(G4TrackStatus status)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetNumberOfSecondaries(G4int totSecondaries)
G4ParticleChange aParticleChange
G4bool enableAlongStepDoIt
void SetProcessSubType(G4int)
G4bool enablePostStepDoIt
G4VParticleChange * pParticleChange
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::ostringstream G4ExceptionDescription