G4hZiegler1977He.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // -------------------------------------------------------------------
00028 //
00029 // GEANT4 Class file
00030 //
00031 //
00032 // File name:     G4hZiegler1977He
00033 //
00034 // Author:        V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
00035 // 
00036 // Creation date: 20 July 2000
00037 //
00038 // Modifications: 
00039 // 20/07/2000  V.Ivanchenko First implementation
00040 // 10/05/2001  V.Ivanchenko Clean up againist Linux compilation with -Wall
00041 // 26/08/2004  V.Ivanchenko Fix a problem of effective charge
00042 //
00043 // Class Description: 
00044 //
00045 // Electronic stopping power parametrised according to
00046 // J.F.Ziegler, Helium Stopping Powers and
00047 // Ranges in All Elemental Matter, Vol.4, Pergamon Press, 1977
00048 //
00049 // Class Description: End 
00050 //
00051 // -------------------------------------------------------------------
00052 //
00053 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00054 
00055 #include "G4hZiegler1977He.hh"
00056 
00057 #include "globals.hh"
00058 #include "G4SystemOfUnits.hh"
00059 #include "G4UnitsTable.hh"
00060 #include "G4Material.hh"
00061 
00062 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00063 
00064 G4hZiegler1977He::G4hZiegler1977He():G4VhElectronicStoppingPower(), 
00065   rateMass(4.0026/1.007276)
00066 {;}
00067 
00068 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00069 
00070 G4hZiegler1977He::~G4hZiegler1977He() 
00071 {;}
00072 
00073 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00074 
00075 G4bool G4hZiegler1977He::HasMaterial(const G4Material* material) 
00076 {
00077   if(1 == (material->GetNumberOfElements())) return true;
00078   return false ;
00079 }
00080 
00081 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00082 
00083 G4double G4hZiegler1977He::StoppingPower(const G4Material* material,
00084                                                G4double kineticEnergy) 
00085 {
00086   G4double ionloss = 0.0 ;
00087 
00088   // pure material (normally not the case for this function)
00089   if(1 == (material->GetNumberOfElements())) {
00090     G4double z = material->GetZ() ;
00091     ionloss = ElectronicStoppingPower( z, kineticEnergy ) ;  
00092 
00093   }
00094 
00095   return ionloss ;
00096 }
00097 
00098 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00099 
00100 G4double G4hZiegler1977He::ElectronicStoppingPower(G4double z,
00101                                           G4double kineticEnergy) const
00102 {
00103   G4double ionloss ;
00104   G4int i = G4int(z)-1 ;  // index of atom
00105   if(i < 0)  i = 0 ;
00106   if(i > 91) i = 91 ;
00107 
00108   // The He4 data and the fit from: 
00109   // J.F.Ziegler, Helium Stopping Powers and
00110   // Ranges in All Elemental Matter, Vol.4, Pergamon Press, 1977
00111   
00112   G4double energy = kineticEnergy*rateMass/keV ;  // reduced He energy in keV
00113   
00114   static G4double a[92][9] = {
00115     //H-Solid 0.9661,0.4126,6.92,8.831,2.582,2.371,0.5462,-0.07932,-0.006853,
00116    {0.39,0.63,  4.17, 85.55,  19.55, 2.371, 0.5462,   -0.07932,-0.006853},
00117     //He-Solid 2.027,0.2931,26.34,6.66,0.3409,2.809,0.4847,-0.08756,-0.007281,
00118    {0.58, 0.59, 6.3, 130.0,   44.07, 2.809, 0.4847,   -0.08756,-0.007281},
00119    {1.42,  0.49,   12.25,32.,     9.161, 3.095, 0.4434,   -0.09259,-0.007459},
00120    {2.206, 0.51,   15.32, 0.25,   8.995, 3.28,  0.4188,   -0.09564,-0.007604},
00121    {3.691, 0.4128, 18.48,50.72,   9.,    3.426, 0.4,      -0.09796,-0.007715},
00122    {4.232, 0.3877, 22.99,35.,     7.993, 3.588, 0.3921,   -0.09935,-0.007804},
00123     //N-solid 2.51,0.4752,38.26,13.02,1.892,3.759,0.4094,-0.09646,-0.007661,
00124    {2.0,  0.548, 29.82,18.11,   4.37, 3.759, 0.4094,   -0.09646,-0.007661},
00125     //O-solid 1.766,0.5261,37.11,15.24,2.804,3.782,0.3734,-0.1011,-0.007874,
00126    {2.717, 0.4858, 32.88, 25.88, 4.336, 3.782, 0.3734,   -0.1011, -0.007874},
00127    {1.533, 0.531,  40.44,18.41,   2.718, 3.816, 0.3504,   -0.1046, -0.008074},
00128     //Ne-solid 1.183,0.55,39.83,17.49,4.001,3.863,0.3342,-0.1072,-0.008231,
00129    {2.303, 0.4861,   37.01, 37.96,   5.092, 3.863, 0.3342,-0.1072, -0.008231},
00130    {9.894, 0.3081, 23.65, 0.384, 92.93,  3.898, 0.3191,   -0.1086, -0.008271},
00131    {4.3,   0.47,   34.3,  3.3,   12.74,  3.961, 0.314,    -0.1091, -0.008297},
00132    {2.5,   0.625,  45.7,  0.1,    4.359, 4.024, 0.3113,   -0.1093, -0.008306},
00133    {2.1,   0.65,   49.34, 1.788,  4.133, 4.077, 0.3074,   -0.1089, -0.008219},
00134    {1.729, 0.6562, 53.41, 2.405,  3.845, 4.124, 0.3023,   -0.1094, -0.00824},
00135    {1.402, 0.6791, 58.98, 3.528,  3.211, 4.164, 0.2964,   -0.1101, -0.008267},
00136    {1.117, 0.7044, 69.69, 3.705,  2.156, 4.21,  0.2936,   -0.1103, -0.00827},
00137    {0.9172,0.724,  79.44, 3.648,  1.646, 4.261, 0.2994,   -0.1085, -0.008145},
00138    {8.554, 0.3817, 83.61,11.84,   1.875, 4.3,   0.2903,   -0.1103, -0.008259},
00139    {6.297, 0.4622, 65.39,10.14,   5.036, 4.334, 0.2897,   -0.1102, -0.008245},
00140    {5.307, 0.4918, 61.74,12.4,    6.665, 4.327, 0.2707,   -0.1127, -0.00837},
00141    {4.71,  0.5087, 65.28, 8.806,  5.948, 4.34,  0.2618,   -0.1138, -0.00842},
00142    {6.151, 0.4524, 83.,  18.31,   2.71,  4.361, 0.2559,   -0.1145, -0.008447},
00143    {6.57,  0.4322, 84.76,15.53,   2.779, 4.349, 0.24,     -0.1166, -0.00855},
00144    {5.738, 0.4492, 84.61,14.18,   3.101, 4.362, 0.2327,   -0.1174, -0.008588},
00145    {5.013, 0.4707, 85.58,16.55,   3.211, 4.375, 0.2253,   -0.1185, -0.008648},
00146    {4.32,  0.4947, 76.14,10.85,   5.441, 4.362, 0.2069,   -0.1214, -0.008815},
00147    {4.652, 0.4571, 80.73,22.,     4.952, 4.346, 0.1857,   -0.1249, -0.009021},
00148    {3.114, 0.5236, 76.67, 7.62,   6.385, 4.355, 0.18,     -0.1255, -0.009045},
00149    {3.114, 0.5236, 76.67, 7.62,   7.502, 4.389, 0.1806,   -0.1253, -0.009028},
00150    {3.114, 0.5236, 76.67, 7.62,   8.514, 4.407, 0.1759,   -0.1258, -0.009054},
00151    {5.746, 0.4662, 79.24, 1.185,  7.993, 4.419, 0.1694,   -0.1267, -0.009094},
00152    {2.792, 0.6346,106.1,  0.2986, 2.331, 4.412, 0.1545,   -0.1289, -0.009202},
00153    {4.667, 0.5095,124.3,  2.102,  1.667, 4.419, 0.1448,   -0.1303, -0.009269},
00154    {2.44,  0.6346,105.,   0.83,   2.851, 4.436, 0.1443,   -0.1299, -0.009229},
00155    {1.491, 0.7118,120.6,  1.101,  1.877, 4.478, 0.1608,   -0.1262, -0.008983},
00156    {11.72, 0.3826,102.8,  9.231,  4.371, 4.489, 0.1517,   -0.1278, -0.009078},
00157    {7.126, 0.4804,119.3,  5.784,  2.454, 4.514, 0.1551,   -0.1268, -0.009005},
00158    {11.61, 0.3955,146.7,  7.031,  1.423, 4.533, 0.1568,   -0.1261, -0.008945},
00159    {10.99, 0.41,  163.9,  7.1,    1.052, 4.548, 0.1572,   -0.1256, -0.008901},
00160    {9.241, 0.4275,163.1,  7.954,  1.102, 4.553, 0.1544,   -0.1255, -0.008883},
00161    {9.276, 0.418, 157.1,  8.038,  1.29,  4.548, 0.1485,   -0.1259, -0.008889},
00162    {3.999, 0.6152, 97.6,  1.297,  5.792, 4.489, 0.1128,   -0.1309, -0.009107},
00163    {4.306, 0.5658, 97.99, 5.514,  5.754, 4.402, 0.06656,  -0.1375, -0.009421},
00164    {3.615, 0.6197, 86.26, 0.333,  8.689, 4.292, 0.01012,  -0.1459, -0.009835},
00165    {5.8,   0.49,  147.2,  6.903,  1.289, 4.187,-0.04539,  -0.1542, -0.01025},
00166    {5.6,   0.49,  130.,  10.,     2.844, 4.577, 0.13,     -0.1285, -0.009067},
00167    {3.55,  0.6068,124.7,  1.112,  3.119, 4.583, 0.1253,   -0.1291, -0.009084},
00168    {3.6,   0.62,  105.8,  0.1692, 6.026, 4.58,  0.1174,   -0.1301, -0.009129},
00169    {5.4,   0.53,  103.1,  3.931,  7.767, 4.581, 0.111,    -0.1309, -0.009161},
00170    {3.97,  0.6459,131.8,  0.2233, 2.723, 4.582, 0.1046,   -0.1317, -0.009193},
00171    {3.65,  0.64,  126.8,  0.6834, 3.411, 4.6,   0.1052,   -0.1315, -0.009178},
00172    {3.118, 0.6519,164.9,  1.208,  1.51,  4.614, 0.1043,   -0.1315, -0.009175},
00173    {2.031, 0.7181,153.1,  1.362,  1.958, 4.619, 0.09769,  -0.1325, -0.009231},
00174    {14.4,  0.3923,152.5,  8.354,  2.597, 4.671, 0.1136,   -0.1298, -0.009078},
00175    {10.99, 0.4599,138.4,  4.811,  3.726, 4.706, 0.1206,   -0.1287, -0.009009},
00176    {16.6,  0.3773,224.1,  6.28,   0.9121,4.732, 0.1244,   -0.128,  -0.008968},
00177    {10.54, 0.4533,159.3,  4.832,  2.529, 4.722, 0.1156,   -0.1292, -0.00903},
00178    {10.33, 0.4502,162.,   5.132,  2.444, 4.71,  0.106,    -0.1305, -0.0091}, 
00179    {10.15, 0.4471,165.6,  5.378,  2.328, 4.698, 0.09647,  -0.1319, -0.009169},
00180    {9.976, 0.4439,168.,   5.721,  2.258, 4.681, 0.08536,  -0.1335, -0.009252},
00181    {9.804, 0.4408,176.2,  5.675,  1.997, 4.676, 0.07819,  -0.1345, -0.009302},
00182    {14.22, 0.363, 228.4,  7.024,  1.016, 4.663, 0.06867,  -0.1358, -0.009373},
00183    {9.952, 0.4318,233.5,  5.065,  0.9244,4.676, 0.06861,  -0.1357, -0.009363},
00184    {9.272, 0.4345,210.,   4.911,  1.258, 4.649, 0.05362,  -0.1379, -0.00948},
00185    {10.13, 0.4146,225.7,  5.525,  1.055, 4.634, 0.04335,  -0.1394, -0.009558},
00186    {8.949, 0.4304,213.3,  5.071,  1.221, 4.603, 0.02679,  -0.1418, -0.00969},
00187    {11.94, 0.3783,247.2,  6.655,  0.849, 4.584, 0.01494,  -0.1436, -0.009783},
00188    {8.472, 0.4405,195.5,  4.051,  1.604, 4.576, 0.007043, -0.1447, -0.009841},
00189    {8.301, 0.4399,203.7,  3.667,  1.459, 4.571, 0.0007046,-0.1456, -0.009886},
00190    {6.567, 0.4858,193.,   2.65,   1.66,  4.566,-0.005626, -0.1464, -0.00993},
00191    {5.951, 0.5016,196.1,  2.662,  1.589, 4.561,-0.01197,  -0.1473, -0.009975},
00192    {7.495, 0.4523,251.4,  3.433,  0.8619,4.572,-0.012,    -0.1472, -0.009965},
00193    {6.335, 0.4825,255.1,  2.834,  0.8228,4.569,-0.01755,  -0.148,  -0.01},   
00194    {4.314, 0.5558,214.8,  2.354,  1.263, 4.573,-0.01992,  -0.1482, -0.01001},
00195    {4.02,  0.5681,219.9,  2.402,  1.191, 4.57, -0.02547,  -0.149,  -0.01005},
00196    {3.836, 0.5765,210.2,  2.742,  1.305, 4.528,-0.04613,  -0.1521, -0.01022},
00197    {4.68,  0.5247,244.7,  2.749,  0.8962,4.494,-0.0637,   -0.1548, -0.01037},
00198    {3.223, 0.5883,232.7,  2.954,  1.05,  4.564,-0.027,    -0.1471, -0.009852},
00199    {2.892, 0.6204,208.6,  2.415,  1.416, 4.546,-0.04963,  -0.1523, -0.01022},
00200    {4.728, 0.5522,217.,   3.091,  1.386, 4.594,-0.03339,  -0.1496, -0.01006},
00201    {6.18,  0.52,  170.,   4.,     3.224, 4.608,-0.02886,  -0.1485, -0.00999},
00202    {9.,    0.47,  198.,   3.8,    2.032, 4.624,-0.02639,  -0.1481, -0.009971},
00203    {2.324, 0.6997,216.,   1.599,  1.399, 4.636,-0.02422,  -0.1477, -0.009939},
00204    {1.961, 0.7286,223.,   1.621,  1.296, 4.648,-0.02172,  -0.1471, -0.009903},
00205    {1.75,  0.7427,350.1,  0.9789, 0.5507,4.662,-0.1192,   -0.1752, -0.01196},
00206    {10.31, 0.4613,261.2,  4.738,  0.9899,4.69, -0.009867, -0.1449, -0.009771},
00207    {7.962, 0.519, 235.7,  4.347,  1.313, 4.715,-0.002113, -0.1435, -0.009689},
00208    {6.227, 0.5645,231.9,  3.961,  1.379, 4.729, 0.001392, -0.1428, -0.009644},
00209    {5.246, 0.5947,228.6,  4.027,  1.423, 4.729,-0.0005983,-0.143,  -0.009647},
00210    {5.408, 0.5811,235.7,  3.961,  1.358, 4.738, 0.001075, -0.1425, -0.009618},
00211    {5.218, 0.5828,245.,   3.838,  1.25,  4.751, 0.004244, -0.1419, -0.009576}
00212   };
00213 
00214   if ( energy < 1.0 ) {
00215     G4double slow  = a[i][0] ;
00216     G4double shigh = std::log( 1.0 + a[i][3]*1000.0 + a[i][4]*0.001 ) 
00217       * a[i][2]*1000.0 ;
00218     ionloss = slow*shigh / (slow + shigh) ; 
00219     ionloss *= std::sqrt(energy) ; 
00220     
00221   } else if ( energy < 10000.0 ) {
00222     G4double slow  = a[i][0] * std::pow(energy, a[i][1]) ;
00223     G4double e = energy/1000.0 ;
00224     G4double shigh = std::log( 1.0 + a[i][3]/e + a[i][4]*e ) * a[i][2]/e ;
00225     ionloss = slow*shigh / (slow + shigh) ; 
00226     
00227   } else {
00228     G4double le = std::log(1000.0/energy) ;
00229     ionloss = std::exp( a[i][5] + a[i][6]*le + a[i][7]*le*le + a[i][8]*le*le*le) ;
00230   }
00231 
00232   if ( ionloss < 0.0) ionloss = 0.0 ;
00233 
00234   ionloss /= HeEffChargeSquare(z, kineticEnergy*rateMass); 
00235   
00236   return ionloss;
00237 }
00238 

Generated on Mon May 27 17:48:33 2013 for Geant4 by  doxygen 1.4.7