51 G4DNAMolecularDissociation::
52 G4DNAMolecularDissociation(
const G4String& processName,
67 G4cout <<
"G4MolecularDissociationProcess constructor " <<
" Name:"
74 fDecayAtFixedTime =
true;
82 DisplacementMap::iterator it = fDisplacementMap.begin();
84 for(; it != fDisplacementMap.end(); it++)
92 fDisplacementMap.clear();
97 G4DNAMolecularDissociation::
101 fDecayAtFixedTime = right.fDecayAtFixedTime;
102 fDisplacementMap = right.fDisplacementMap;
103 fVerbose = right.fVerbose;
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 DisplacementMap::iterator it =
217 fDisplacementMap.find(moleculeDefinition);
219 if(it != fDisplacementMap.end())
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();
263 displacement/(mag_displacement+1e-30);
269 displacement_direction,
274 mag_displacement =
min(prNewSafety*0.8, mag_displacement);
277 + displacement_direction * mag_displacement;
280 ->GetGlobalToLocalTransform();
288 G4cout <<
"Mother volume: "
292 "OUTSIDE_OF_MOTHER_VOLUME",
294 "Product has been placed outside of the volume "
295 "containing the mother molecule");
317 else if(fVerbose && decayEnergy)
347 fDisplacementMap[molDef] = aDisplacer;
356 return fDisplacementMap[molDef];
365 fDisplacementMap[molDef] = aDisplacer;
374 return fDisplacementMap[molDef];
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 *)
G4VMolecularDecayDisplacer * GetDisplacer(const G4ParticleDefinition *)
virtual G4VSolid * GetSolid(G4int depth=0) const
std::ostringstream G4ExceptionDescription
G4double GetProperTime() const
const G4ThreeVector & GetPosition() const
G4int GetNbProducts() const
const G4String & GetParticleName() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
G4double GetEnergy() const
const G4String & GetName() const
static G4ITTransportationManager * GetTransportationManager()
G4GLOB_DLL std::ostream G4cout
void SetDisplacer(const G4ParticleDefinition *, G4VMolecularDecayDisplacer *)
const G4String & GetName() const
virtual EInside Inside(const G4ThreeVector &p) const =0
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
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
virtual void Initialize(const G4Track &)
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
void SetNumberOfSecondaries(G4int totSecondaries)
const G4VTouchable * GetTouchable() const
G4ITNavigator * GetNavigatorForTracking() const
const G4String & GetName() const
G4VParticleChange * pParticleChange
G4ParticleChange aParticleChange
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double GetProbability() const
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4bool enableAlongStepDoIt
void SetDecayDisplacer(const G4ParticleDefinition *, G4VMolecularDecayDisplacer *)
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const =0
void ProposeTrackStatus(G4TrackStatus status)
G4double GetDecayTime() const
const G4MolecularDissociationTable * GetDecayTable() const
virtual G4bool IsApplicable(const G4ParticleDefinition &)