119{
123 G4double D2 = pMoleculeB->GetDiffusionCoefficient();
124
128
131
132 if(D1 == 0)
133 {
135 return;
136 }
137 else if(D2 == 0)
138 {
140 return;
141 }
142
143 if(distance == 0)
144 {
146 exceptionDescription << "Two particles are overlap: "
150 G4Exception(
"G4DNAMakeReaction::PrepareForReaction()",
151 "G4DNAMakeReaction003",
153 }
154 S1.
setMag(reactionRadius);
155
157
158 if(dt > 0)
159 {
162 G4double sigma = s12 + ( s12 * s12 ) / s22;
163 G4double alpha = reactionRadius * distance / (2 * (D1 + D2) * dt );
164
167 G4RandGauss::shoot(0.0, sigma),
168 G4RandGauss::shoot(0.0, sigma));
169
171
172 S1.
setTheta(rad * std::acos( 1.0 + (1. / alpha) *
174 (1.-std::exp(-2.0 * alpha)))));
175
178
181 }
182}
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
CLHEP::Hep3Vector G4ThreeVector
G4double GetDiffusionCoefficient() const
const G4String & GetName() const
void SetPosition(const G4ThreeVector &aValue)
virtual G4double GetReactionRadius(const G4MolecularConfiguration *, const G4MolecularConfiguration *)=0