72{
73 const G4double R2 = __reactionRadius * __reactionRadius;
75 bool do_break = false;
76 int k = 0;
77
78 for (; k < 3; ++k)
79 {
80 postStepSeparation += std::pow(
82
83 if (postStepSeparation > R2)
84 {
85 do_break = true;
86 break;
87 }
88 }
89
90 if (do_break == false)
91 {
92
93
94 __separationDistance = std::sqrt(postStepSeparation);
95 return true;
96 }
97 else if (__alongStepReaction == true)
98 {
99
100
101
102 for (; k < 3; ++k)
103 {
104 postStepSeparation += std::pow(
106 }
107
108 __separationDistance = (postStepSeparation = std::sqrt(postStepSeparation));
109
112
113 G4double D = pMoleculeA->GetDiffusionCoefficient()
114 + pMoleculeB->GetDiffusionCoefficient();
115
118
119 G4double preStepSeparation = (preStepPositionA - preStepPositionB).mag();
120
121
122
123 G4double __probabiltyOfEncounter =
G4Exp(-(preStepSeparation - __reactionRadius)
124 * (postStepSeparation - __reactionRadius)
126 );
128
129 if (__selectedPOE <= __probabiltyOfEncounter)
130 {
131 return true;
132 }
133
134 }
135
136 return false;
137}
G4double D(G4double temp)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4Molecule * GetMolecule(const G4Track &track)
const G4ThreeVector & GetPosition() const
G4double GetDeltaTime() const
G4StepPoint * GetPreStepPoint() const
const G4ThreeVector & GetPosition() const
const G4Step * GetStep() const