G4hICRU49He Class Reference

#include <G4hICRU49He.hh>

Inheritance diagram for G4hICRU49He:

G4VhElectronicStoppingPower

Public Member Functions

 G4hICRU49He ()
 ~G4hICRU49He ()
G4bool HasMaterial (const G4Material *material)
G4double StoppingPower (const G4Material *material, G4double kineticEnergy)
G4double ElectronicStoppingPower (G4double z, G4double kineticEnergy) const

Detailed Description

Definition at line 58 of file G4hICRU49He.hh.


Constructor & Destructor Documentation

G4hICRU49He::G4hICRU49He (  ) 

Definition at line 66 of file G4hICRU49He.cc.

00066                         :G4VhElectronicStoppingPower(), 
00067   rateMass(4.0026/1.007276),
00068   iMolecula(0)
00069 {;}

G4hICRU49He::~G4hICRU49He (  ) 

Definition at line 73 of file G4hICRU49He.cc.

00074 {;}


Member Function Documentation

G4double G4hICRU49He::ElectronicStoppingPower ( G4double  z,
G4double  kineticEnergy 
) const [virtual]

Implements G4VhElectronicStoppingPower.

Definition at line 202 of file G4hICRU49He.cc.

References G4VhElectronicStoppingPower::HeEffChargeSquare().

Referenced by StoppingPower().

00204 {
00205   G4double ionloss ;
00206   G4int i = G4int(z)-1 ;  // index of atom
00207   if(i < 0)  i = 0 ;
00208   if(i > 91) i = 91 ;
00209   
00210   // The data and the fit from: 
00211   // ICRU Report 49, 1993. Ziegler's type of parametrisations
00212   // Reduced kinetic energy  
00213 
00214   // He energy in internal units of parametrisation formula (MeV)
00215   G4double T = kineticEnergy*rateMass/MeV ;  
00216   
00217   static G4double a[92][5] = {
00218     {0.35485, 0.6456, 6.01525,  20.8933, 4.3515
00219    },{ 0.58,    0.59,   6.3,     130.0,   44.07
00220    },{ 1.42,    0.49,   12.25,    32.0,    9.161
00221    },{ 2.1895,  0.47183,7.2362,   134.30,  197.96
00222    },{ 3.691,   0.4128, 18.48,    50.72,   9.0
00223    },{ 3.83523, 0.42993,12.6125,  227.41,  188.97
00224    },{ 1.9259,  0.5550, 27.15125, 26.0665, 6.2768
00225    },{ 2.81015, 0.4759, 50.0253,  10.556,  1.0382
00226    },{ 1.533,   0.531,  40.44,    18.41,   2.718
00227    },{ 2.303,   0.4861, 37.01,    37.96,   5.092
00228    },{ 9.894,   0.3081, 23.65,    0.384,   92.93
00229    },{ 4.3,     0.47,   34.3,     3.3,     12.74
00230    },{ 2.5,     0.625,  45.7,     0.1,     4.359
00231    },{ 2.1,     0.65,   49.34,    1.788,   4.133
00232    },{ 1.729,   0.6562, 53.41,    2.405,   3.845
00233    },{ 1.402,   0.6791, 58.98,    3.528,   3.211
00234    },{ 1.117,   0.7044, 69.69,    3.705,    2.156
00235    },{ 2.291,   0.6284, 73.88,    4.478,    2.066
00236    },{ 8.554,   0.3817, 83.61,    11.84,    1.875
00237    },{ 6.297,   0.4622, 65.39,    10.14,    5.036
00238    },{ 5.307,   0.4918, 61.74,    12.4,    6.665
00239    },{ 4.71,    0.5087, 65.28,    8.806,    5.948
00240    },{ 6.151,   0.4524, 83.0,    18.31,    2.71
00241    },{ 6.57,    0.4322, 84.76,    15.53,    2.779
00242    },{ 5.738,   0.4492, 84.6,    14.18,    3.101
00243    },{ 5.013,   0.4707, 85.8,    16.55,    3.211
00244    },{ 4.32,    0.4947, 76.14,    10.85,    5.441
00245    },{ 4.652,   0.4571, 80.73,    22.0,    4.952
00246    },{ 3.114,   0.5236, 76.67,    7.62,    6.385
00247    },{ 3.114,   0.5236, 76.67,    7.62,    7.502
00248    },{ 3.114,   0.5236, 76.67,    7.62,    8.514
00249    },{ 5.746,   0.4662, 79.24,    1.185,    7.993
00250    },{ 2.792,   0.6346, 106.1,    0.2986,   2.331
00251    },{ 4.667,   0.5095, 124.3,    2.102,    1.667
00252    },{ 2.44,    0.6346, 105.0,    0.83,    2.851
00253    },{ 1.413,   0.7377, 147.9,    1.466,    1.016
00254    },{ 11.72,   0.3826, 102.8,    9.231,    4.371
00255    },{ 7.126,   0.4804, 119.3,    5.784,    2.454
00256    },{ 11.61,   0.3955, 146.7,    7.031,    1.423
00257    },{ 10.99,   0.41,   163.9,   7.1,      1.052
00258    },{ 9.241,   0.4275, 163.1,    7.954,    1.102
00259    },{ 9.276,   0.418,  157.1,   8.038,    1.29
00260    },{ 3.999,   0.6152, 97.6,    1.297,    5.792
00261    },{ 4.306,   0.5658, 97.99,    5.514,    5.754
00262    },{ 3.615,   0.6197, 86.26,    0.333,    8.689
00263    },{ 5.8,     0.49,   147.2,   6.903,    1.289
00264    },{ 5.6,     0.49,   130.0,   10.0,     2.844
00265    },{ 3.55,    0.6068, 124.7,    1.112,    3.119
00266    },{ 3.6,     0.62,   105.8,   0.1692,   6.026
00267    },{ 5.4,     0.53,   103.1,   3.931,    7.767
00268    },{ 3.97,    0.6459, 131.8,    0.2233,   2.723 
00269    },{ 3.65,    0.64,   126.8,   0.6834,   3.411
00270    },{ 3.118,   0.6519, 164.9,    1.208,    1.51
00271    },{ 3.949,   0.6209, 200.5,    1.878,    0.9126
00272    },{ 14.4,    0.3923, 152.5,    8.354,    2.597
00273    },{ 10.99,   0.4599, 138.4,    4.811,    3.726
00274    },{ 16.6,    0.3773, 224.1,    6.28,    0.9121 
00275    },{ 10.54,   0.4533, 159.3,   4.832,    2.529
00276    },{ 10.33,   0.4502, 162.0,   5.132,    2.444
00277    },{ 10.15,   0.4471, 165.6,   5.378,    2.328
00278    },{ 9.976,   0.4439, 168.0,   5.721,    2.258
00279    },{ 9.804,   0.4408, 176.2,   5.675,    1.997
00280    },{ 14.22,   0.363,  228.4,   7.024,    1.016
00281    },{ 9.952,   0.4318, 233.5,   5.065,    0.9244
00282    },{ 9.272,   0.4345, 210.0,   4.911,    1.258
00283    },{ 10.13,   0.4146, 225.7,   5.525,    1.055
00284    },{ 8.949,   0.4304, 213.3,   5.071,    1.221
00285    },{ 11.94,   0.3783, 247.2,   6.655,    0.849
00286    },{ 8.472,   0.4405, 195.5,   4.051,    1.604
00287    },{ 8.301,   0.4399, 203.7,   3.667,    1.459
00288    },{ 6.567,   0.4858, 193.0,   2.65,     1.66
00289    },{ 5.951,   0.5016, 196.1,   2.662,    1.589
00290    },{ 7.495,   0.4523, 251.4,   3.433,    0.8619
00291    },{ 6.335,   0.4825, 255.1,   2.834,    0.8228
00292    },{ 4.314,   0.5558, 214.8,   2.354,    1.263
00293    },{ 4.02,    0.5681, 219.9,   2.402,    1.191
00294    },{ 3.836,   0.5765, 210.2,   2.742,    1.305
00295    },{ 4.68,    0.5247, 244.7,   2.749,    0.8962
00296    },{ 3.223,   0.5883, 232.7,   2.954,    1.05
00297    },{ 2.892,   0.6204, 208.6,   2.415,    1.416
00298    },{ 4.728,   0.5522, 217.0,   3.091,    1.386
00299    },{ 6.18,    0.52,   170.0,   4.0,      3.224
00300    },{ 9.0,     0.47,   198.0,   3.8,      2.032
00301    },{ 2.324,   0.6997, 216.0,   1.599,    1.399
00302    },{ 1.961,   0.7286, 223.0,   1.621,    1.296
00303    },{ 1.75,    0.7427, 350.1,   0.9789,   0.5507
00304    },{ 10.31,   0.4613, 261.2,   4.738,    0.9899
00305    },{ 7.962,   0.519,  235.7,   4.347,    1.313
00306    },{ 6.227,   0.5645, 231.9,   3.961,    1.379
00307    },{ 5.246,   0.5947, 228.6,   4.027,    1.432
00308    },{ 5.408,   0.5811, 235.7,   3.961,    1.358
00309    },{ 5.218,   0.5828, 245.0,   3.838,    1.25}
00310   };
00311   
00312   // Free electron gas model
00313   if ( T < 0.001 ) {
00314     G4double slow  = a[i][0] ;
00315     G4double shigh = std::log( 1.0 + a[i][3]*1000.0 + a[i][4]*0.001 ) 
00316                    * a[i][2]*1000.0 ;
00317     ionloss  = slow*shigh / (slow + shigh) ; 
00318     ionloss *= std::sqrt(T*1000.0) ; 
00319     
00320   // Main parametrisation
00321   } else {
00322     G4double slow  = a[i][0] * std::pow((T*1000.0), a[i][1]) ;
00323     G4double shigh = std::log( 1.0 + a[i][3]/T + a[i][4]*T ) * a[i][2]/T ;
00324     ionloss = slow*shigh / (slow + shigh) ; 
00325     
00326   }
00327   if ( ionloss < 0.0) ionloss = 0.0 ;
00328 
00329   // He effective charge
00330   ionloss /= HeEffChargeSquare(z, kineticEnergy*rateMass) ; 
00331   
00332   return ionloss;
00333 }

G4bool G4hICRU49He::HasMaterial ( const G4Material material  )  [virtual]

Implements G4VhElectronicStoppingPower.

Definition at line 78 of file G4hICRU49He.cc.

References G4Material::GetChemicalFormula(), G4Material::GetNumberOfElements(), G4Material::GetState(), and kStateGas.

00079 {
00080   G4String chFormula = material->GetChemicalFormula() ;
00081   G4String myFormula = G4String(" ");
00082 
00083   if (myFormula == chFormula ) {
00084     if(1 == (material->GetNumberOfElements())) {return true;}
00085     return false ;
00086   }
00087 
00088   // ICRU Report N49, 1993. Power's model for He.
00089   const size_t numberOfMolecula = 30 ;    
00090   static G4String name[numberOfMolecula] = {
00091     "H_2", "Be-Solid", "C-Solid", "Graphite", "N_2",
00092     "O_2", "Al-Solid", "Si-Solid", "Ar-Solid", "Cu-Solid",
00093     "Ge", "W-Solid", "Au-Solid", "Pb-Solid", "C_2H_2",
00094     "CO_2", "Cellulose-Nitrat", "C_2H_4", "LiF",
00095     "CH_4", "Nylon", "Polycarbonate", "(CH_2)_N-Polyetilene", "PMMA",
00096     "(C_8H_8)_N", "SiO_2", "CsI", "H_2O", "H_2O-Gas"} ;      
00097   
00098   // Special treatment for water in gas state
00099   
00100   myFormula = G4String("H_2O") ;
00101   const G4State theState = material->GetState() ;
00102   if( theState == kStateGas && myFormula == chFormula) {
00103     chFormula = G4String("H_2O-Gas");
00104   }
00105 
00106   // Search for the material in the table
00107   for (size_t i=0; i<numberOfMolecula; i++) {
00108       if (chFormula == name[i]) {
00109         SetMoleculaNumber(i) ;
00110         return true ;
00111       }
00112   }
00113   return false ;
00114 }

G4double G4hICRU49He::StoppingPower ( const G4Material material,
G4double  kineticEnergy 
) [virtual]

Implements G4VhElectronicStoppingPower.

Definition at line 118 of file G4hICRU49He.cc.

References ElectronicStoppingPower(), G4Material::GetNumberOfElements(), G4Material::GetTotNbOfAtomsPerVolume(), G4Material::GetTotNbOfElectPerVolume(), G4Material::GetZ(), and G4VhElectronicStoppingPower::HeEffChargeSquare().

00120 {
00121   G4double ionloss = 0.0 ;
00122 
00123   // pure material (normally not the case for this function)
00124   if(1 == (material->GetNumberOfElements())) {
00125     G4double z = material->GetZ() ;
00126     ionloss = ElectronicStoppingPower( z, kineticEnergy ) ;  
00127 
00128   // The data and the fit from: 
00129   // ICRU Report N49, 1993. Power's model for He.
00130   } else if ( iMolecula < 30 ) {
00131 
00132     // Reduced kinetic energy  
00133     // in internal units of parametrisation formula (MeV)
00134     G4double T = kineticEnergy*rateMass/MeV ;  
00135   
00136     static G4double c[30][7] = {
00137       {8.0080,  3.6287,  23.0700,  14.9900,  0.8507, 0.60, 2.0
00138    },{ 13.3100,  3.7432,  39.4130,  12.1990,  1.0950, 0.38, 1.4
00139    },{ 22.7240,  3.6040,  47.1810,  17.5490,  0.9040, 0.40, 1.4
00140    },{ 24.4040,  2.4032,  48.9440,  27.9730,  1.2933, 0.40, 1.6
00141    },{ 58.4719,  1.5115,  77.6421,  102.490,  1.5811, 0.50, 2.0
00142    },{ 60.5408,  1.6297,  91.7601,  94.1260,  1.3662, 0.50, 2.0
00143    },{ 48.4480,  6.4323,  59.2890,  18.3810,  0.4937, 0.48, 1.6
00144    },{ 59.0346,  5.1305,  47.0866,  30.0857,  0.3500, 0.60, 2.0
00145    },{ 71.8691,  2.8250,  51.1658,  57.1235,  0.4477, 0.60, 2.0
00146    },{ 78.3520,  4.0961,  136.731,  28.4470,  1.0621, 0.52, 1.2
00147    },{ 120.553,  1.5374,  49.8740,  82.2980,  0.8733, 0.45, 1.6
00148    },{ 249.896,  0.6996,  -37.274,  248.592,  1.1052, 0.50, 1.5
00149    },{ 246.698,  0.6219,  -58.391,  292.921,  0.8186, 0.56, 1.8
00150    },{ 248.563,  0.6235,  -36.8968, 306.960,  1.3214, 0.50, 2.0
00151    },{ 25.5860,  1.7125,  154.723,  118.620,  2.2580, 0.50, 2.0
00152    },{ 138.294,  25.6413, 231.873,  17.3780,  0.3218, 0.58, 1.3
00153    },{ 83.2091,  1.1294,  135.7457, 190.865,  2.3461, 0.50, 2.0
00154    },{ 263.542,  1.4754,  1541.446, 781.898,  1.9209, 0.40, 2.0
00155    },{ 59.5545,  1.5354,  132.1523, 153.3537, 2.0262, 0.50, 2.0
00156    },{ 31.7380,  19.820,  125.2100, 6.8910,   0.7242, 0.50, 1.1
00157    },{ 31.7549,  1.5682,  97.4777,  106.0774, 2.3204, 0.50, 2.0
00158    },{ 230.465,  4.8967,  1845.320, 358.641,  1.0774, 0.46, 1.2
00159    },{ 423.444,  5.3761,  1189.114, 319.030,  0.7652, 0.48, 1.5
00160    },{ 86.3410,  3.3322,  91.0433,  73.1091,  0.4650, 0.50, 2.0
00161    },{ 146.105,  9.4344,  515.1500, 82.8860,  0.6239, 0.55, 1.5
00162    },{ 238.050,  5.6901,  372.3575, 146.1835, 0.3992, 0.50, 2.0
00163    },{ 124.2338, 2.6730,  133.8175, 99.4109,  0.7776, 0.50, 2.0
00164    },{ 221.723,  1.5415,  87.7315,  192.5266, 1.0742, 0.50, 2.0
00165    },{ 26.7537,  1.3717,  90.8007,  77.1587,  2.3264, 0.50, 2.0
00166    },{ 37.6121,  1.8052,  73.0250,  66.2070,  1.4038, 0.50, 2.0} };
00167 
00168     G4double a1,a2 ;
00169 
00170   // Free electron gas model
00171     if ( T < 0.001 ) {
00172       G4double T0 = 0.001 ;
00173       a1 = 1.0 - std::exp(-c[iMolecula][1]*std::pow(T0,-2.0+c[iMolecula][5])) ;
00174       a2 = (c[iMolecula][0]*std::log(T0)/T0 + c[iMolecula][2]/T0) *
00175             std::exp(-c[iMolecula][4]*std::pow(T0,-c[iMolecula][6])) +
00176             c[iMolecula][3]/(T0*T0) ;
00177 
00178       ionloss *= std::sqrt(T/T0) ; 
00179   
00180   // Main parametrisation
00181     } else {
00182       a1 = 1.0 - std::exp(-c[iMolecula][1]*std::pow(T,-2.0+c[iMolecula][5])) ;
00183       a2 = (c[iMolecula][0]*std::log(T)/T + c[iMolecula][2]/T) *
00184             std::exp(-c[iMolecula][4]*std::pow(T,-c[iMolecula][6])) +
00185             c[iMolecula][3]/(T*T) ;
00186     }
00187 
00188   // He effective charge
00189     G4double z = (material->GetTotNbOfElectPerVolume()) / 
00190                  (material->GetTotNbOfAtomsPerVolume()) ;
00191 
00192     ionloss     = a1*a2 / HeEffChargeSquare(z, kineticEnergy*rateMass) ; 
00193 
00194     if ( ionloss < 0.0) ionloss = 0.0 ;
00195   }
00196 
00197   return ionloss ;
00198 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:13 2013 for Geant4 by  doxygen 1.4.7