226 const std::vector<double>* densityTable =
229 double temperature =
track.GetMaterial()->GetTemperature();
230 double density = (*densityTable)[
track.GetMaterial()->GetIndex()] /
244 e_aq.GetMoleculeID(),
245 10. * onsager_radius);
250 if(results == 0 || results->GetSize() == 0)
259 std::vector<ReactionProfile>& reactants = state->fReactants;
262 reactants.resize(results->GetSize());
264 for(
size_t i = 0; results->End() ==
false; results->Next(), ++i)
266 reactants[i].fElectron = results->GetItem<
G4IT>()->GetTrack();
267 reactants[i].fDistance = std::sqrt(results->GetDistanceSqr());
269 if(reactants[i].fDistance != 0)
271 reactants[i].fProbability = 1.
272 - std::exp(-onsager_radius / reactants[i].fDistance);
276 reactants[i].fProbability = 1.;
283 if(results->GetSize() != 0 && reactants.empty())
289 if(reactants.empty())
return false;
297 if(reactants[0].fProbability > state->fSampleProba)
return true;
static double onsager_constant
static G4Electron_aq * Definition()
static G4ITFinder * Instance()
static const G4double eps
G4KDTreeResultHandle FindNearestInRange(const T *point, int key, G4double)
G4GLOB_DLL std::ostream G4cout
const std::vector< double > * GetDensityTableFor(const G4Material *) const
G4Molecule * GetMolecule(const G4Track &track)
static G4DNAMolecularMaterial * Instance()
double epsilon(double density, double temperature)