50 if (
this == &right)
return *
this;
84 G4double __output = (*fReactionData)[__i]->GetEffectiveReactionRadius();
89 const G4Track& __trackB,
92 const G4bool __alongStepReaction)
95 bool do_break =
false;
101 postStepSeparation += std::pow(
102 __trackA.GetPosition()[k] - __trackB.GetPosition()[k], 2);
104 if (postStepSeparation > R2)
111 if (do_break ==
false)
115 __r = std::sqrt(postStepSeparation);
118 else if (__alongStepReaction ==
true)
127 postStepSeparation += std::pow(
128 __trackA.GetPosition()[k] - __trackB.GetPosition()[k], 2);
131 __r = (postStepSeparation = std::sqrt(postStepSeparation));
139 G4ThreeVector __preStepPositionA = __trackA.GetStep()->GetPreStepPoint()
141 G4ThreeVector __preStepPositionB = __trackB.GetStep()->GetPreStepPoint()
144 if (__preStepPositionA == __trackA.GetPosition())
147 exceptionDescription <<
"The molecule : " << __moleculeA->
GetName();
148 exceptionDescription <<
" with track ID :" << __trackA.GetTrackID();
149 exceptionDescription <<
" did not move since the previous step." <<
G4endl;
150 exceptionDescription <<
"Current position : " 151 <<
G4BestUnit(__trackA.GetPosition(),
"Length")
153 exceptionDescription <<
"Previous position : " 155 G4Exception(
"G4DNASmoluchowskiReactionModel::FindReaction",
157 exceptionDescription);
161 (__preStepPositionA - __preStepPositionB).mag();
174 G4double __probabiltyOfEncounter = std::exp(
175 -(__preStepSeparation - __R) * (postStepSeparation - __R) / (__D
176 * (__trackB.GetStep()->GetDeltaTime())));
179 if (__selectedPOE <= __probabiltyOfEncounter)
return true;
virtual G4bool FindReaction(const G4Track &, const G4Track &, const G4double, G4double &, const G4bool)
std::ostringstream G4ExceptionDescription
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
const std::vector< const G4DNAMolecularReactionData * > * fReactionData
const G4DNAMolecularReactionTable * fReactionTable
const G4String & GetName() const
virtual G4double GetReactionRadius(G4MolecularConfiguration *, G4MolecularConfiguration *)
G4Molecule * GetMolecule(const G4Track &track)
G4DNASmoluchowskiReactionModel()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4DNASmoluchowskiReactionModel & operator=(const G4DNASmoluchowskiReactionModel &)
const G4DNAMolecularReactionData * GetReactionData(G4MolecularConfiguration *, G4MolecularConfiguration *) const
virtual ~G4DNASmoluchowskiReactionModel()
virtual void Initialise(G4MolecularConfiguration *, const G4Track &)
virtual void InitialiseToPrint(G4MolecularConfiguration *)
G4double GetEffectiveReactionRadius() const
G4double GetDiffusionCoefficient() const