99{
102
110 G4double RVal = pMolConfA->GetVanDerVaalsRadius() + pMolConfB->GetVanDerVaalsRadius();
111
112 if((pMolConfA->GetCharge() != 0) &&
113 (pMolConfB->GetCharge() != 0))
114 {
115 G4double rc = 0.71 *
nm * pMolConfA->GetCharge() *
116 pMolConfB->GetCharge();
119 SmoluchowskiRadius = Reff;
120 }
121 else
122 {
123 SmoluchowskiRadius = RVal;
124 }
125
126 G4double Winf = SmoluchowskiRadius / distance;
133
136
137 if ( U < Winf )
138 {
139 G4double d = ( distance - SmoluchowskiRadius ) /
141 irt_1 = ( 1.0 / ( 4 *
D ) ) * d * d;
142 }
143
144 if( irt_1 < 0)
145 {
146 return irt_1;
147 }
148 else
149 {
150 G4double rateFactor = kact / ( kact + kdif );
151 if( U1 > rateFactor )
152 {
154 }
156
158 {
159 X = - (
G4Log( U2 ) ) /
Y;
160 }
161
162 G4double f = X * SmoluchowskiRadius * kdif / ( kact + kdif );
163 irt_2 = ( f * f ) /
D ;
164 }
165
166 return irt_1 + irt_2;
167}
G4double Y(G4double density)
G4double G4Log(G4double x)
G4Molecule * GetMolecule(const G4Track &track)
static constexpr double ps
G4double GetObservedReactionRateConstant() const
static G4double erfcInv(G4double x)
const G4MolecularConfiguration * GetMolecularConfiguration() const
const G4ThreeVector & GetPosition() const
ThreeVector shoot(const G4int Ap, const G4int Af)