62 return G4UniformRand() < Rs / ( Rs + ( kdif / kact ) * ( R + Rs ));
72 G4double b = std::exp( -rc / ( R + Rs ) );
73 G4double Preact = ( a - b ) / ( a - b - ( kdif / kact ) * ( 1 - a ) );
110 G4double RVal = pMolConfA->GetVanDerVaalsRadius() + pMolConfB->GetVanDerVaalsRadius();
112 if((pMolConfA->GetCharge() != 0) &&
113 (pMolConfB->GetCharge() != 0))
115 G4double rc = 0.71 *
nm * pMolConfA->GetCharge() *
116 pMolConfB->GetCharge();
119 SmoluchowskiRadius = Reff;
123 SmoluchowskiRadius = RVal;
126 G4double Winf = SmoluchowskiRadius / distance;
139 G4double d = ( distance - SmoluchowskiRadius ) /
141 irt_1 = ( 1.0 / ( 4 *
D ) ) * d * d;
150 G4double rateFactor = kact / ( kact + kdif );
151 if( U1 > rateFactor )
159 X = - (
G4Log( U2 ) ) /
Y;
162 G4double f = X * SmoluchowskiRadius * kdif / ( kact + kdif );
163 irt_2 = ( f * f ) /
D ;
166 return irt_1 + irt_2;
G4double D(G4double temp)
G4double Y(G4double density)
G4double G4Log(G4double x)
G4Molecule * GetMolecule(const G4Track &track)
static constexpr double nm
static constexpr double ps
G4double GetObservedReactionRateConstant() const
Data * GetReactionData(Reactant *, Reactant *) const
static G4DNAMolecularReactionTable * Instance()
G4double GetTimeToEncounter(const G4Track &trackA, const G4Track &trackB) override
~G4DNAPartiallyDiffusionControlled() override
G4DNAPartiallyDiffusionControlled()
G4double GetDiffusionCoefficient(const G4MolecularConfiguration *, const G4MolecularConfiguration *)
G4bool GeminateRecombinationProbability(const G4MolecularConfiguration *, const G4MolecularConfiguration *) override
static G4double erfcInv(G4double x)
static G4double EffectiveDistance(const G4double &rc, const G4double &r0)
static G4double GetKact(const G4double &obs, const G4double &dif)
G4double GetVanDerVaalsRadius() const
G4double GetDiffusionCoefficient() const
const G4MolecularConfiguration * GetMolecularConfiguration() const
const G4ThreeVector & GetPosition() const
static constexpr double pi
ThreeVector shoot(const G4int Ap, const G4int Af)