147 aParticleChange.Initialize(
track);
159 const vector<const G4MolecularDissociationChannel*>* DecayVector =
166 exceptionDescription <<
"No decay channel was found for the molecule : " 169 "G4DNAMolecularDissociation::NoDecayChannel",
171 exceptionDescription);
172 return &aParticleChange;
175 G4int DecayVectorSize = DecayVector->size();
184 decayChannel = (*DecayVector)[i];
185 if(RdmValue < decayChannel->GetProbability())
break;
186 RdmValue -= decayChannel->GetProbability();
189 while(i < DecayVectorSize);
195 G4double decayEnergy = decayChannel->GetEnergy();
196 G4int nbProducts = decayChannel->GetNbProducts();
204 aParticleChange.ProposeLocalEnergyDeposit(decayChannel->GetEnergy());
213 vector<G4ThreeVector> ProductsDisplacement(nbProducts);
216 DecayDisplacementMap::iterator it =
223 theMotherMoleculeDisplacement =
229 errMsg <<
"No G4MolecularDecayProcess::theDecayDisplacementMap[" 230 << theMotherMolecule->
GetName() +
"]";
232 "DNAMolecularDecay001",
237 aParticleChange.SetNumberOfSecondaries(nbProducts);
246 <<
" (trackID :" <<
track.GetTrackID() <<
") " 247 << decayChannel->GetName() <<
G4endl;
255 for(
G4int j = 0; j < nbProducts; j++)
260 + ProductsDisplacement[j];
261 double mag_displacement = displacement.
mag();
262 G4ThreeVector displacement_direction = displacement / mag_displacement;
266 navigator->CheckNextStep(
track.GetPosition(),
267 displacement_direction,
271 if(prNewSafety < mag_displacement) mag_displacement = prNewSafety;
290 track.GetPosition() + displacement_direction
293 secondary->SetTrackStatus(fAlive);
301 aParticleChange.G4VParticleChange::AddSecondary(secondary);
327 aParticleChange.ProposeTrackStatus(fStopAndKill);
329 return &aParticleChange;
std::ostringstream G4ExceptionDescription
G4ITNavigator * GetNavigatorForTracking() const
const G4MolecularDissociationTable * GetDecayTable() const
const G4MoleculeDefinition * GetDefinition() const
const std::vector< const G4MolecularDissociationChannel * > * GetDecayChannel() const
static G4ITTransportationManager * GetTransportationManager()
G4GLOB_DLL std::ostream G4cout
const G4String & GetName() const
virtual std::vector< G4ThreeVector > GetProductsDisplacement(const G4MolecularDissociationChannel *) const =0
G4Molecule * GetMolecule(const G4Track &track)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4Track * BuildTrack(G4double globalTime, const G4ThreeVector &Position)
DecayDisplacementMap fDecayDisplacementMap
virtual G4ThreeVector GetMotherMoleculeDisplacement(const G4MolecularDissociationChannel *) const =0