67 G4cout <<
"G4MolecularDissociationProcess constructor " <<
" Name:"
117 G4cout <<
"G4MolecularDissociation::IsApplicable(";
136 return (output > 0 ? output : 0);
159 const vector<const G4MolecularDissociationChannel*>* DecayVector =
166 exceptionDescription <<
"No decay channel was found for the molecule : "
169 "G4DNAMolecularDissociation::NoDecayChannel",
171 exceptionDescription);
175 G4int DecayVectorSize = DecayVector->size();
184 decayChannel = (*DecayVector)[i];
185 if(RdmValue < decayChannel->GetProbability())
break;
189 while(i < DecayVectorSize);
213 vector<G4ThreeVector> ProductsDisplacement(nbProducts);
216 DecayDisplacementMap::iterator it =
223 theMotherMoleculeDisplacement =
229 errMsg <<
"No G4MolecularDecayProcess::theDecayDisplacementMap["
230 << theMotherMolecule->
GetName() +
"]";
232 "DNAMolecularDecay001",
246 <<
" (trackID :" << track.
GetTrackID() <<
") "
251 G4ITNavigator* navigator =
255 for(
G4int j = 0; j < nbProducts; j++)
260 + ProductsDisplacement[j];
261 double mag_displacement = displacement.mag();
262 G4ThreeVector displacement_direction = displacement / mag_displacement;
267 displacement_direction,
271 if(prNewSafety < mag_displacement) mag_displacement = prNewSafety;
void SetTrackStatus(const G4TrackStatus aTrackStatus)
virtual G4double GetMeanLifeTime(const G4Track &, G4ForceCondition *)
Identical to G4VRestDiscreteProcess with dependency from G4VITProcess.
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
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double GetEnergy() const
const G4String & GetName() const
Returns the name of the molecule.
static G4ITTransportationManager * GetTransportationManager()
G4GLOB_DLL std::ostream G4cout
G4MolecularConfiguration * GetProduct(int) const
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
G4double GetGlobalTime() const
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)
G4ITNavigator * GetNavigatorForTracking() const
void PrintState() const
Show the electronic state of the molecule.
const G4String & GetName() const
G4VParticleChange * pParticleChange
G4ParticleChange aParticleChange
G4double GetProbability() const
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4bool enableAlongStepDoIt
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...
void SetDecayDisplacer(const G4ParticleDefinition *, G4VMolecularDecayDisplacer *)
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const =0
void ProposeTrackStatus(G4TrackStatus status)
G4double GetDecayTime() const
Returns the decay time of the molecule.
const G4MolecularDissociationTable * GetDecayTable() const
virtual G4bool IsApplicable(const G4ParticleDefinition &)