Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DNA::Penetration::Terrisol1990 Struct Reference

#include <G4DNAOneStepThermalizationModel.hh>

Static Public Member Functions

static void GetPenetration (G4double energy, G4ThreeVector &displacement)
 
static double GetRmean (double energy)
 
static double Get3DStdDeviation (double energy)
 

Static Public Attributes

static const double gEnergies_T1990 [11]
 
static const double gStdDev_T1990 [11]
 

Detailed Description

Definition at line 79 of file G4DNAOneStepThermalizationModel.hh.

Member Function Documentation

double DNA::Penetration::Terrisol1990::Get3DStdDeviation ( double  energy)
static

Definition at line 132 of file G4DNAOneStepThermalizationModel.cc.

132  {
133  G4double k_eV = energy/eV;
134  if(k_eV < 0.2) return 1e-3*CLHEP::nanometer;
135  // rare events:
136  // prevent H2O and secondary electron to be at the spot
137 
138  if(k_eV == 9.) return gStdDev_T1990[10];
139  // TODO if k_eV > 9
140 
141  size_t lowBin, upBin;
142 
143  if(k_eV >= 1.){
144  lowBin=floor(k_eV)+1;
145  upBin=std::min(lowBin+1, size_t(10));
146  }
147  else{
148  auto it=std::lower_bound(&gEnergies_T1990[0],
149  &gEnergies_T1990[2],
150  k_eV);
151  lowBin = it-&gEnergies_T1990[0];
152  upBin = lowBin+1;
153  }
154 
155  double lowE = gEnergies_T1990[lowBin];
156  double upE = gEnergies_T1990[upBin];
157 
158  // G4cout << lowE << " " << upE << G4endl;
159 
160  double lowS = gStdDev_T1990[lowBin];
161  double upS = gStdDev_T1990[upBin];
162 
163  double tanA = (lowS-upS)/(lowE-upE);
164  double sigma3D = lowS + (k_eV-lowE)*tanA;
165  return sigma3D;
166  }
static constexpr double eV
Definition: G4SIunits.hh:215
G4double energy(const ThreeVector &p, const G4double m)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
static constexpr double nanometer
Definition: SystemOfUnits.h:81
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

void DNA::Penetration::Terrisol1990::GetPenetration ( G4double  energy,
G4ThreeVector displacement 
)
static

Definition at line 178 of file G4DNAOneStepThermalizationModel.cc.

179  {
180  double sigma3D=Get3DStdDeviation(energy);
181  // G4cout << "sigma3D = " << sigma3D/CLHEP::nanometer << G4endl;
182 
183  static constexpr double factor = 2.20496999539;
184  // 1./(3. - 8./CLHEP::pi);
185 
186  double sigma1D = sqrt(pow(sigma3D, 2.)*factor);
187 
188  // G4cout << "sigma1D = " << sigma1D/CLHEP::nanometer << G4endl;
189 
190  double x = G4RandGauss::shoot(0.,sigma1D);
191  double y = G4RandGauss::shoot(0.,sigma1D);
192  double z = G4RandGauss::shoot(0.,sigma1D);
193  displacement=G4ThreeVector(x,y,z);
194  // G4cout << "displacement[nm]: "
195  // << displacement.mag()/CLHEP::nanometer << G4endl;
196  }
ThreeVector shoot(const G4int Ap, const G4int Af)
CLHEP::Hep3Vector G4ThreeVector
G4double energy(const ThreeVector &p, const G4double m)
static double Get3DStdDeviation(double energy)

Here is the call graph for this function:

double DNA::Penetration::Terrisol1990::GetRmean ( double  energy)
static

Definition at line 168 of file G4DNAOneStepThermalizationModel.cc.

168  {
169  double sigma3D=Get3DStdDeviation(energy);
170 
171  static constexpr double s2r=1.595769121605731;
172  // pow(2,3./2.)/sqrt(CLHEP::pi)
173 
174  double r_mean=sigma3D*s2r;
175  return r_mean;
176  }
G4double energy(const ThreeVector &p, const G4double m)
static double Get3DStdDeviation(double energy)

Here is the call graph for this function:

Member Data Documentation

const double DNA::Penetration::Terrisol1990::gEnergies_T1990
static
Initial value:
=
{ 0.2, 0.5, 1, 2, 3, 4, 5, 6, 7,
8, 9}

Definition at line 86 of file G4DNAOneStepThermalizationModel.hh.

const double DNA::Penetration::Terrisol1990::gStdDev_T1990
static
Initial value:

Definition at line 87 of file G4DNAOneStepThermalizationModel.hh.


The documentation for this struct was generated from the following files: