Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // ------------------------------------------- 28 // 29 // GEANT4 Class file 30 // 31 // 32 // File name: G4hZiegler1985p 33 // 34 // Author: V.Ivanchenko (Vladimir.Ivanc 35 // 36 // Creation date: 20 July 2000 37 // 38 // Modifications: 39 // 20/07/2000 V.Ivanchenko First implementati 40 // 18/09/2000 V.Ivanchenko clean up - all var 41 // 10/05/2001 V.Ivanchenko Clean up againist 42 // 43 // Class Description: 44 // 45 // Electronic stopping power parametrised acco 46 // J.F.Ziegler, J.P.Biersack, U.Littmark The S 47 // Range of Ions in Solids, Vol.1, Pergamon Pr 48 // 49 // Class Description: End 50 // 51 // ------------------------------------------- 52 // 53 //....oooOO0OOooo........oooOO0OOooo........oo 54 55 #include "G4hZiegler1985p.hh" 56 57 #include "globals.hh" 58 #include "G4SystemOfUnits.hh" 59 #include "G4UnitsTable.hh" 60 #include "G4Material.hh" 61 62 const G4double G4hZiegler1985p::a[92][8] = { 63 {0.0091827, 0.0053496, 0.69741, 0.48493, 31 64 {0.11393, 0.0051984, 1.0822, 0.39252, 10 65 {0.85837, 0.0050147, 1.6044, 0.38844, 13 66 {0.8781, 0.0051049, 5.4232, 0.2032 , 12 67 {1.4608, 0.0048836, 2.338, 0.44249, 18 68 {3.2579, 0.0049148, 2.7156, 0.36473, 20 69 {0.59674, 0.0050837, 4.2073, 0.30612, 23 70 {0.75253, 0.0050314, 4.0824, 0.30067, 24 71 {1.226, 0.0051385, 3.2246, 0.32703, 25 72 {1.0332, 0.0051645, 3.004, 0.33889, 23 73 74 {6.0972, 0.0044292, 3.1929, 0.45763, 13 75 {14.013, 0.0043646, 2.2641, 0.36326, 21 76 {0.039001, 0.0045415, 5.5463, 0.39562, 15 77 {2.072, 0.0044516, 3.5585, 0.53933, 15 78 {17.575, 0.0038346, 0.078694,1.2388, 28 79 {16.126, 0.0038315, 0.054164,1.3104, 28 80 {3.217, 0.0044579, 3.6696, 0.5091, 27 81 {2.0379, 0.0044775, 3.0743, 0.54773, 35 82 {0.74171, 0.0043051, 1.1515, 0.95083, 91 83 {9.1316, 0.0043809, 5.4611, 0.31327, 38 84 85 {7.2247, 0.0043718, 6.1017, 0.37511, 28 86 {0.147, 0.0048456, 6.3485, 0.41057, 21 87 {5.0611, 0.0039867, 2.6174, 0.57957, 22 88 {0.53267, 0.0042968, 0.39005, 1.2725, 18 89 {0.47697, 0.0043038, 0.31452, 1.3289, 19 90 {0.027426, 0.0035443, 0.031563,2.1755, 19 91 {0.16383, 0.0043042, 0.073454,1.8592, 19 92 {4.2562, 0.0043737, 1.5606, 0.72067, 15 93 {2.3508, 0.0043237, 2.882, 0.50113, 18 94 {3.1095, 0.0038455, 0.11477, 1.5037, 21 95 96 {15.322, 0.0040306, 0.65391, 0.67668, 30 97 {3.6932, 0.0044813, 8.608, 0.27638, 29 98 {7.1373, 0.0043134, 9.4247, 0.27937, 27 99 {4.8979, 0.0042937, 3.7793, 0.50004, 28 100 {1.3683, 0.0043024, 2.5679, 0.60822, 69 101 {1.8301, 0.0042983, 2.9057, 0.6038, 47 102 {0.42056, 0.0041169, 0.01695, 2.3616, 22 103 {30.78, 0.0037736, 0.55813, 0.76816, 71 104 {11.576, 0.0042119, 7.0244, 0.37764, 47 105 {6.2406, 0.0041916, 5.2701, 0.49453, 42 106 107 {0.33073, 0.0041243, 1.7246, 1.1062, 19 108 {0.017747, 0.0041715, 0.14586, 1.7305, 18 109 {3.7229, 0.0041768, 4.6286, 0.56769, 16 110 {0.13998, 0.0041329, 0.25573, 1.4241, 19 111 {0.2859, 0.0041386, 0.31301, 1.3424, 19 112 {0.76002, 0.0042179, 3.386, 0.76285, 18 113 {6.3957, 0.0041935, 5.4689, 0.41378, 17 114 {3.4717, 0.0041344, 3.2337, 0.63788, 11 115 {2.5265, 0.0042282, 4.532, 0.53562, 10 116 {7.3683, 0.0041007, 4.6791, 0.51428, 11 117 118 {7.7197, 0.004388, 3.242, 0.68434, 14 119 {16.78, 0.0041918, 9.3198, 0.29569, 33 120 {4.2132, 0.0042098, 4.6753, 0.57945, 35 121 {4.0818, 0.004214, 4.4425, 0.58393, 39 122 {0.18517, 0.0036215,0.00058788,3.5315, 29 123 {4.8248, 0.0041458, 6.0934, 0.57026, 23 124 {0.49857, 0.0041054, 1.9775, 0.95877, 78 125 {3.2754, 0.0042177, 5.768, 0.54054, 66 126 {2.9978, 0.0040901, 4.5299, 0.62025, 21 127 {2.8701, 0.004096, 4.2568, 0.6138, 21 128 129 {10.853, 0.0041149, 5.8906, 0.46834, 28 130 {3.6407, 0.0041782, 4.8742, 0.57861, 12 131 {17.645, 0.0040992, 6.5855, 0.32734, 39 132 {7.5309, 0.0040814, 4.9389, 0.50679, 25 133 {5.4742, 0.0040829, 4.897, 0.51113, 23 134 {4.2661, 0.0040667, 4.5032, 0.55257, 20 135 {6.8313, 0.0040486, 4.3987, 0.51675, 20 136 {1.2707, 0.0040553, 4.6295, 0.57428, 16 137 {5.7561, 0.0040491, 4.357, 0.52496, 22 138 {14.127, 0.0040596, 5.8304, 0.37755, 36 139 140 {6.6948, 0.0040603, 4.9361, 0.47961, 27 141 {3.0619, 0.0040511, 3.5803, 0.59082, 23 142 {10.811, 0.0033008, 1.3767, 0.76512, 20 143 {2.7101, 0.0040961, 1.2289, 0.98598, 12 144 {0.52345, 0.0040244, 1.4038, 0.8551, 14 145 {0.4616, 0.0040203, 1.3014, 0.87043, 14 146 {0.97814, 0.0040374, 2.0127, 0.7225, 18 147 {3.2086, 0.0040510, 3.6658, 0.53618, 30 148 {2.0035, 0.0040431, 7.4882, 0.3561, 44 149 {15.43, 0.0039432, 1.1237, 0.70703, 45 150 151 {3.1512, 0.0040524, 4.0996, 0.5425, 32 152 {7.1896, 0.0040588, 8.6927, 0.35842, 47 153 {9.3209, 0.0040540, 11.543, 0.32027, 48 154 {29.242, 0.0036195, 0.16864, 1.1226, 56 155 {1.8522, 0.0039973, 3.1556, 0.65096, 37 156 {3.222, 0.0040041, 5.9024, 0.52678, 40 157 {9.3412, 0.0039661, 7.921, 0.42977, 51 158 {36.183, 0.0036003, 0.58341, 0.86747, 69 159 {5.9284, 0.0039695, 6.4082, 0.52122, 46 160 {5.2454, 0.0039744, 6.7969, 0.48542, 45 161 162 {33.702, 0.0036901, 0.47257, 0.89235, 52 163 {2.7589, 0.0039806, 3.2092, 0.66122, 25 164 }; 165 166 //....oooOO0OOooo........oooOO0OOooo........oo 167 168 G4hZiegler1985p::G4hZiegler1985p():G4VhElectro 169 protonMassAMU(1.007276) 170 {;} 171 172 //....oooOO0OOooo........oooOO0OOooo........oo 173 174 G4hZiegler1985p::~G4hZiegler1985p() 175 {;} 176 177 //....oooOO0OOooo........oooOO0OOooo........oo 178 179 G4bool G4hZiegler1985p::HasMaterial(const G4Ma 180 { 181 if(1 == (material->GetNumberOfElements())) r 182 return false ; 183 } 184 185 //....oooOO0OOooo........oooOO0OOooo........oo 186 187 G4double G4hZiegler1985p::StoppingPower(const 188 189 { 190 G4double ionloss = 0.0 ; 191 192 // pure material (normally not the case for 193 if(1 == (material->GetNumberOfElements())) { 194 G4double z = material->GetZ() ; 195 ionloss = ElectronicStoppingPower( z, kine 196 } 197 198 return ionloss; 199 } 200 201 //....oooOO0OOooo........oooOO0OOooo........oo 202 203 G4double G4hZiegler1985p::ElectronicStoppingPo 204 205 { 206 G4double ionloss ; 207 G4int i = G4int(z) - 1 ; // index of atom 208 if(i < 0) i = 0 ; 209 if(i > 91) i = 91 ; 210 211 // The data and the fit from: 212 // J.F.Ziegler, J.P.Biersack, U.Littmark The 213 // Range of Ions in Solids, Vol.1, Pergamon 214 // Proton kinetic energy for parametrisation 215 216 G4double T = kineticEnergy/(keV*protonMassAM 217 218 219 220 G4double e = T ; 221 if ( T < 25.0 ) e = 25.0 ; 222 223 // universal approximation 224 G4double slow = a[i][0] * std::pow(e, a[i][ 225 G4double shigh = std::log( a[i][6]/e + a[i][ 226 ionloss = slow*shigh / (slow + shigh) ; 227 228 // low energy region 229 if ( T < 25.0 ) { 230 231 G4double sLocal = 0.45 ; 232 // light elements 233 if(6.5 > z) sLocal = 0.25 ; 234 // semiconductors 235 if(5 == i || 13 == i || 31 == i) sLocal = 236 237 ionloss *= std::pow(T/25.0, sLocal) ; 238 } 239 240 if ( ionloss < 0.0) ionloss = 0.0 ; 241 242 return ionloss; 243 } 244 245