62 G4cout <<
"G4MolecularDecayProcess constructor " <<
" Name:" << processName
103 G4cout <<
"G4MolecularDecay::IsApplicable(";
120 return (output > 0 ? output : 0);
141 const vector<const G4MolecularDissociationChannel*>* DecayVector =
144 if (DecayVector == 0)
148 exceptionDescription <<
"No decay channel was found for the molecule : "
152 exceptionDescription);
156 G4int DecayVectorSize = DecayVector->size();
165 decayChannel = (*DecayVector)[i];
166 if (RdmValue < decayChannel->GetProbability())
break;
170 while (i < DecayVectorSize);
192 vector<G4ThreeVector> ProductsDisplacement(nbProducts);
202 theMotherMoleculeDisplacement =
208 errMsg <<
"No G4MolecularDecayProcess::theDecayDisplacementMap["
209 << theMotherMolecule->
GetName() +
"]";
210 G4Exception(
"G4MolecularDecayProcess::DecayIt",
"DNAMolecularDecay001",
220 <<
" (trackID :" << track.
GetTrackID() <<
") "
225 for (
G4int j = 0; j < nbProducts; j++)
235 track.
GetPosition() + theMotherMoleculeDisplacement
236 + ProductsDisplacement[j]);
258 else if(!decayEnergy && !nbProducts)
261 errMsg <<
"There is no products and no energy specified in the molecular decay channel";
void SetTrackStatus(const G4TrackStatus aTrackStatus)
virtual G4double GetMeanLifeTime(const G4Track &, G4ForceCondition *)
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannel() const
G4VMolecularDecayDisplacer * GetDecayDisplacer(const G4ParticleDefinition *)
std::ostringstream G4ExceptionDescription
G4double GetProperTime() const
CLHEP::Hep3Vector G4ThreeVector
const G4ThreeVector & GetPosition() const
G4int GetNbProducts() const
const G4String & GetParticleName() const
Identical to G4VRestProcess with dependency from G4VITProcess.
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double GetEnergy() const
const G4String & GetName() const
Returns the name of the molecule.
G4GLOB_DLL std::ostream G4cout
virtual G4VParticleChange * DecayIt(const G4Track &, const G4Step &)
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const =0
void SetProcessSubType(G4int)
const G4String & GetParticleType() const
virtual ~G4DNAMolecularDissociation()
G4bool enablePostStepDoIt
G4Molecule * GetMolecule(const G4Track &track)
const G4MoleculeDefinition * GetDefinition() const
Get molecule definition.
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
DecayDisplacementMap fDecayDisplacementMap
G4DNAMolecularDissociation()
virtual void Initialize(const G4Track &)
void SetNumberOfSecondaries(G4int totSecondaries)
const G4String & GetName() const
G4VParticleChange * pParticleChange
G4ParticleChange aParticleChange
G4double GetProbability() const
G4bool enableAlongStepDoIt
const G4Molecule * GetProduct(int) const
G4DNAMolecularDissociation should be called only for molecules.
Class Description The dynamic molecule holds all the data that change for a molecule It has a pointer...
static const double picosecond
void SetDecayDisplacer(const G4ParticleDefinition *, G4VMolecularDecayDisplacer *)
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const =0
void ProposeTrackStatus(G4TrackStatus status)
const G4ElectronOccupancy * GetElectronOccupancy() const
Returns the object ElectronOccupancy describing the electronic configuration of the molecule...
G4double GetDecayTime() const
Returns the decay time of the molecule.
const G4MolecularDissociationTable * GetDecayTable() const
virtual G4bool IsApplicable(const G4ParticleDefinition &)