60 if(reactionData ==
nullptr)
63 exceptionDescription <<
"No reactionData"
64 <<
" for : " << pMol1->
GetName() <<
" and "
67 "::GetReactionRadius()",
69 exceptionDescription);
77 auto pMol1 = (*fpReactionData)[i]->GetReactant1();
78 auto pMol2 = (*fpReactionData)[i]->GetReactant2();
94 exceptionDescription <<
"The total diffusion coefficient for : "
95 << pMolConfA->GetName() <<
" and "
96 << pMolConfB->GetName() <<
" is null ";
98 "::GetTimeToEncounter()",
100 exceptionDescription);
104 pMolConfA, pMolConfB);
107 G4double SmoluchowskiRadius = reactionData->GetEffectiveReactionRadius();
109 if(distance == 0 || distance < SmoluchowskiRadius)
112 exceptionDescription <<
"distance = " << distance <<
" is uncorrected with "
113 <<
" Reff = " << SmoluchowskiRadius
114 <<
" for : " << pMolConfA->GetName() <<
" and "
115 << pMolConfB->GetName();
117 "::GetTimeToEncounter()",
119 exceptionDescription);
123 G4double Winf = SmoluchowskiRadius / distance;
127 if(Winf > 0 && U < Winf)
133 (distance - SmoluchowskiRadius) / erfcIn;
134 irt_1 = (1.0 / (4 *
D)) * d * d;
138 if(reactionData->GetReactionType() == 0)
148 G4double kdif = 4 * CLHEP::pi *
D * SmoluchowskiRadius * Avogadro;
150 if(pMolConfA == pMolConfB)
158 G4double rateFactor = kact / sumOfk;
163 G4double Y = std::abs(G4RandGauss::shoot(0.0, std::sqrt(2)));
169 G4double f = X * SmoluchowskiRadius * kdif / sumOfk;
171 return irt_1 + irt_2;
G4double D(G4double temp)
G4double Y(G4double density)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4double G4Log(G4double x)
G4Molecule * GetMolecule(const G4Track &track)
G4double GetEffectiveReactionRadius() const
G4double GetObservedReactionRateConstant() const
Data * GetReactionData(Reactant *, Reactant *) const
static G4DNAMolecularReactionTable * Instance()
G4DiffusionControlledReactionModel()
G4double GetTimeToEncounter(const G4Track &trackA, const G4Track &trackB)
void InitialiseToPrint(const G4MolecularConfiguration *) override
~G4DiffusionControlledReactionModel() override
G4double GetReactionRadius(const G4MolecularConfiguration *, const G4MolecularConfiguration *) override
void Initialise(const G4MolecularConfiguration *, const G4Track &) override
static G4double erfcInv(G4double x)
static G4double GetKact(const G4double &obs, const G4double &dif)
const G4String & GetName() const
G4double GetDiffusionCoefficient() const
const G4MolecularConfiguration * GetMolecularConfiguration() const
const G4ThreeVector & GetPosition() const
const G4DNAMolecularReactionTable * fpReactionTable