Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/src/G4hZiegler1985p.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/electromagnetic/lowenergy/src/G4hZiegler1985p.cc (Version 11.3.0) and /processes/electromagnetic/lowenergy/src/G4hZiegler1985p.cc (Version 1.1)


  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