50 namespace Penetration {
54 { -4.06217193e-08, 3.06848412e-06, -9.93217814e-05,
55 1.80172797e-03, -2.01135480e-02, 1.42939448e-01,
56 -6.48348714e-01, 1.85227848e+00, -3.36450378e+00,
57 4.37785068e+00, -4.20557339e+00, 3.81679083e+00,
63 { 0.2, 0.5, 1, 2, 3, 4, 5, 6, 7,
94 for(int8_t i=12; i!=-1 ; --i){
95 r_mean+=
gCoeff[12-i]*std::pow(k_eV,i);
114 static constexpr
double convertRmean3DToSigma1D = 0.62665706865775006;
118 const double sigma1D = r_mean * convertRmean3DToSigma1D;
153 description <<
"Terrisol1990 is not tabulated for energies greater than 9eV";
160 size_t lowBin, upBin;
163 lowBin=std::floor(k_eV)+1;
164 upBin=
std::min(lowBin+1,
size_t(10));
180 double tanA = (lowS-upS)/(lowE-upE);
181 double sigma3D = lowS + (k_eV-lowE)*tanA;
188 static constexpr
double s2r=1.595769121605731;
190 double r_mean=sigma3D*s2r;
198 static constexpr
double factor = 2.20496999539;
200 double sigma1D = std::sqrt(std::pow(sigma3D, 2.)*factor);
214 G4String modelNamePrefix(
"DNAOneStepThermalizationModel_");
216 if(penetrationModel ==
"Terrisol1990")
220 else if(penetrationModel ==
"Meesungnoen2002")
224 else if(penetrationModel ==
"Ritchie1994")
231 description << penetrationModel +
" is not a valid model name.";
236 "Options are: Terrisol1990, Meesungnoen2002, Ritchie1994.");
249 return Create(
"Ritchie1994");
251 return Create(
"Terrisol1990");
254 return Create(
"Meesungnoen2002");
256 G4Exception(
"G4DNASolvationModelFactory::GetMacroDefinedModel",
259 "The solvation parameter stored in G4EmParameters is unknown. Supported types are: fRitchie1994eSolvation, fTerrisol1990eSolvation, fMeesungnoen2002eSolvation.");
static double Get3DStdDeviation(double energy)
G4DNAModelSubType DNAeSolvationSubType() const
static constexpr double nanometer
CLHEP::Hep3Vector G4ThreeVector
std::ostringstream G4ExceptionDescription
static const double gEnergies_T1990[11]
static constexpr double nm
G4ThreeVector G4RandomDirection()
static double GetRmean(double energy)
static constexpr double angstrom
void GetGaussianPenetrationFromRmean3D(G4double r_mean, G4ThreeVector &displacement)
static const double gStdDev_T1990[11]
static const double gCoeff[13]
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
static constexpr double eV
static G4VEmModel * Create(const G4String &penetrationModel)
ThreeVector shoot(const G4int Ap, const G4int Af)
static G4Electron * Definition()
static double GetRmean(double energy)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
static G4VEmModel * GetMacroDefinedModel()
One step thermalization model can be chosen via macro using /process/dna/e-SolvationSubType Ritchie19...
static G4EmParameters * Instance()
static void GetPenetration(G4double energy, G4ThreeVector &displacement)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments