Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4EmCorrections.cc
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // $Id: G4EmCorrections.cc 76333 2013-11-08 14:31:50Z gcosmo $
27 //
28 // -------------------------------------------------------------------
29 //
30 // GEANT4 Class
31 //
32 // File name: G4EmCorrections
33 //
34 // Author: Vladimir Ivanchenko
35 //
36 // Creation date: 13.01.2005
37 //
38 // Modifications:
39 // 05.05.2005 V.Ivanchenko Fix misprint in Mott term
40 // 26.11.2005 V.Ivanchenko Fix effective charge for heavy ions using original paper
41 // 28.04.2006 V.Ivanchenko General cleanup, add finite size corrections
42 // 13.05.2006 V.Ivanchenko Add corrections for ion stopping
43 // 08.05.2007 V.Ivanchenko Use G4IonTable for ion mass instead of NistTable to avoid
44 // division by zero
45 // 29.02.2008 V.Ivanchenko use expantions for log and power function
46 // 21.04.2008 Updated computations for ions (V.Ivanchenko)
47 // 20.05.2008 Removed Finite Size correction (V.Ivanchenko)
48 // 19.04.2012 Fix reproducibility problem (A.Ribon)
49 //
50 //
51 // Class Description:
52 //
53 // This class provides calculation of EM corrections to ionisation
54 //
55 
56 // -------------------------------------------------------------------
57 //
58 
59 #include "G4EmCorrections.hh"
60 #include "Randomize.hh"
61 #include "G4PhysicalConstants.hh"
62 #include "G4SystemOfUnits.hh"
63 #include "G4ParticleTable.hh"
64 #include "G4IonTable.hh"
65 #include "G4VEmModel.hh"
66 #include "G4Proton.hh"
67 #include "G4GenericIon.hh"
68 #include "G4LPhysicsFreeVector.hh"
69 #include "G4PhysicsLogVector.hh"
70 #include "G4ProductionCutsTable.hh"
71 #include "G4MaterialCutsCouple.hh"
72 #include "G4AtomicShells.hh"
73 #include "G4LPhysicsFreeVector.hh"
74 
75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
76 
78 {
79  particle = 0;
80  curParticle= 0;
81  material = 0;
82  curMaterial= 0;
83  curVector = 0;
84  kinEnergy = 0.0;
85  ionLEModel = 0;
86  ionHEModel = 0;
87  nIons = 0;
88  verbose = 1;
89  ncouples = 0;
90  massFactor = 1.0;
91  eth = 2.0*MeV;
92  nbinCorr = 20;
93  eCorrMin = 25.*keV;
94  eCorrMax = 250.*MeV;
95  nist = G4NistManager::Instance();
97  BarkasCorr = ThetaK = ThetaL = 0;
98  Initialise();
99 }
100 
101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
102 
104 {
105  // for(G4int i=0; i<nIons; ++i) {delete stopData[i];}
106  // delete BarkasCorr;
107  // delete ThetaK;
108  // delete ThetaL;
109 }
110 
111 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
112 
114  const G4Material* mat,
115  G4double e, G4double)
116 {
117  // . Z^3 Barkas effect in the stopping power of matter for charged particles
118  // J.C Ashley and R.H.Ritchie
119  // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
120  // and ICRU49 report
121  // valid for kineticEnergy < 0.5 MeV
122  // Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
123 
124  SetupKinematics(p, mat, e);
125  if(tau <= 0.0) { return 0.0; }
126 
127  G4double Barkas = BarkasCorrection (p, mat, e);
128  G4double Bloch = BlochCorrection (p, mat, e);
129  G4double Mott = MottCorrection (p, mat, e);
130 
131  G4double sum = (2.0*(Barkas + Bloch) + Mott);
132 
133  if(verbose > 1) {
134  G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
135  << " Bloch= " << Bloch << " Mott= " << Mott
136  << " Sum= " << sum << " q2= " << q2 << G4endl;
137  G4cout << " ShellCorrection: " << ShellCorrection(p, mat, e)
138  << " Kshell= " << KShellCorrection(p, mat, e)
139  << " Lshell= " << LShellCorrection(p, mat, e)
140  << " " << mat->GetName() << G4endl;
141  }
142  sum *= material->GetElectronDensity() * q2 * twopi_mc2_rcl2 /beta2;
143  return sum;
144 }
145 
146 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
147 
149  const G4Material* mat,
150  G4double e)
151 {
152  // . Z^3 Barkas effect in the stopping power of matter for charged particles
153  // J.C Ashley and R.H.Ritchie
154  // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
155  // and ICRU49 report
156  // valid for kineticEnergy < 0.5 MeV
157 
158  SetupKinematics(p, mat, e);
159  G4double res = 0.0;
160  if(tau > 0.0)
161  res = 2.0*BarkasCorrection(p, mat, e)*
162  material->GetElectronDensity() * q2 * twopi_mc2_rcl2 /beta2;
163  return res;
164 }
165 
166 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
167 
169  const G4Material* mat,
170  G4double e)
171 {
172  // . Z^3 Barkas effect in the stopping power of matter for charged particles
173  // J.C Ashley and R.H.Ritchie
174  // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
175  // and ICRU49 report
176  // valid for kineticEnergy < 0.5 MeV
177  // Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
178  SetupKinematics(p, mat, e);
179  if(tau <= 0.0) { return 0.0; }
180 
181  G4double Barkas = BarkasCorrection (p, mat, e);
182  G4double Bloch = BlochCorrection (p, mat, e);
183  G4double Mott = MottCorrection (p, mat, e);
184 
185  G4double sum = 2.0*(Barkas*(charge - 1.0)/charge + Bloch) + Mott;
186 
187  if(verbose > 1) {
188  G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
189  << " Bloch= " << Bloch << " Mott= " << Mott
190  << " Sum= " << sum << G4endl;
191  }
192  sum *= material->GetElectronDensity() * q2 * twopi_mc2_rcl2 /beta2;
193 
194  if(verbose > 1) { G4cout << " Sum= " << sum << G4endl; }
195  return sum;
196 }
197 
198 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
199 
201  const G4MaterialCutsCouple* couple,
202  G4double e)
203 {
204 // . Z^3 Barkas effect in the stopping power of matter for charged particles
205 // J.C Ashley and R.H.Ritchie
206 // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
207 // and ICRU49 report
208 // valid for kineticEnergy < 0.5 MeV
209 // Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
210 
211  G4double sum = 0.0;
212 
213  if(ionHEModel) {
214  G4int Z = G4int(p->GetPDGCharge()/eplus + 0.5);
215  if(Z >= 100) Z = 99;
216  else if(Z < 1) Z = 1;
217 
218  G4double ethscaled = eth*p->GetPDGMass()/proton_mass_c2;
219  G4int ionPDG = p->GetPDGEncoding();
220  if(thcorr.find(ionPDG)==thcorr.end()) { // Not found: fill the map
221  std::vector<G4double> v;
222  for(size_t i=0; i<ncouples; ++i){
223  v.push_back(ethscaled*ComputeIonCorrections(p,currmat[i],ethscaled));
224  }
225  thcorr.insert(std::pair< G4int, std::vector<G4double> >(ionPDG,v));
226  }
227 
228  //G4cout << " map size=" << thcorr.size() << G4endl;
229  //for(std::map< G4int, std::vector<G4double> >::iterator
230  // it = thcorr.begin(); it != thcorr.end(); ++it){
231  // G4cout << "\t map element: first (key)=" << it->first
232  // << "\t second (vector): vec size=" << (it->second).size() << G4endl;
233  // for(size_t i=0; i<(it->second).size(); ++i){
234  // G4cout << "\t \t vec element: [" << i << "]=" << (it->second)[i] << G4endl;
235  // }
236  //}
237 
238  G4double rest = (thcorr.find(ionPDG)->second)[couple->GetIndex()];
239 
240  sum = ComputeIonCorrections(p,couple->GetMaterial(),e) - rest/e;
241 
242  if(verbose > 1) { G4cout << " Sum= " << sum << " dSum= " << rest/e << G4endl; }
243  }
244  return sum;
245 }
246 
247 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
248 
250  const G4Material* mat,
251  G4double e)
252 {
253  SetupKinematics(p, mat, e);
254  G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy();
255  G4double eexc2 = eexc*eexc;
256  G4double dedx = 0.5*std::log(2.0*electron_mass_c2*bg2*tmax/eexc2)-beta2;
257  return dedx;
258 }
259 
260 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
261 
263  const G4Material* mat,
264  G4double e)
265 {
266  SetupKinematics(p, mat, e);
267  G4double dedx = 0.5*tmax/(kinEnergy + mass);
268  return 0.5*dedx*dedx;
269 }
270 
271 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
272 
274  const G4Material* mat,
275  G4double e)
276 {
277  SetupKinematics(p, mat, e);
278  G4double term = 0.0;
279  for (G4int i = 0; i<numberOfElements; ++i) {
280 
281  G4double Z = (*theElementVector)[i]->GetZ();
282  G4int iz = G4int(Z);
283  G4double f = 1.0;
284  G4double Z2= (Z-0.3)*(Z-0.3);
285  if(1 == iz) {
286  f = 0.5;
287  Z2 = 1.0;
288  }
289  G4double eta = ba2/Z2;
290  G4double tet = Z2*(1. + Z2*0.25*alpha2);
291  if(11 < iz) { tet = ThetaK->Value(Z); }
292  term += f*atomDensity[i]*KShell(tet,eta)/Z;
293  }
294 
295  term /= material->GetTotNbOfAtomsPerVolume();
296 
297  return term;
298 }
299 
300 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
301 
303  const G4Material* mat,
304  G4double e)
305 {
306  SetupKinematics(p, mat, e);
307  G4double term = 0.0;
308  for (G4int i = 0; i<numberOfElements; ++i) {
309 
310  G4double Z = (*theElementVector)[i]->GetZ();
311  G4int iz = G4int(Z);
312  if(2 < iz) {
313  G4double Zeff = Z - ZD[10];
314  if(iz < 10) { Zeff = Z - ZD[iz]; }
315  G4double Z2= Zeff*Zeff;
316  G4double f = 0.125;
317  G4double eta = ba2/Z2;
318  G4double tet = ThetaL->Value(Z);
320  for(G4int j=1; j<nmax; ++j) {
322  if(15 >= iz) {
323  if(3 > j) { tet = 0.25*Z2*(1.0 + 5*Z2*alpha2/16.); }
324  else { tet = 0.25*Z2*(1.0 + Z2*alpha2/16.); }
325  }
326  //G4cout << " LShell: j= " << j << " ne= " << ne << " e(eV)= " << e/eV
327  // << " ThetaL= " << tet << G4endl;
328  term += f*ne*atomDensity[i]*LShell(tet,eta)/Z;
329  }
330  }
331  }
332 
333  term /= material->GetTotNbOfAtomsPerVolume();
334 
335  return term;
336 }
337 
338 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
339 
340 G4double G4EmCorrections::KShell(G4double tet, G4double eta)
341 {
342  G4double corr = 0.0;
343 
344  G4double x = tet;
345  G4int itet = 0;
346  G4int ieta = 0;
347  if(tet < TheK[0]) {
348  x = TheK[0];
349  } else if(tet > TheK[nK-1]) {
350  x = TheK[nK-1];
351  itet = nK-2;
352  } else {
353  itet = Index(x, TheK, nK);
354  }
355  // assimptotic case
356  if(eta >= Eta[nEtaK-1]) {
357  corr = (Value(x, TheK[itet], TheK[itet+1], UK[itet], UK[itet+1]) +
358  Value(x, TheK[itet], TheK[itet+1], VK[itet], VK[itet+1])/eta +
359  Value(x, TheK[itet], TheK[itet+1], ZK[itet], ZK[itet+1])/(eta*eta))/eta;
360  } else {
361  G4double y = eta;
362  if(eta < Eta[0]) {
363  y = Eta[0];
364  } else {
365  ieta = Index(y, Eta, nEtaK);
366  }
367  corr = Value2(x, y, TheK[itet], TheK[itet+1], Eta[ieta], Eta[ieta+1],
368  CK[itet][ieta], CK[itet+1][ieta],
369  CK[itet][ieta+1], CK[itet+1][ieta+1]);
370  //G4cout << " x= " <<x<<" y= "<<y<<" tet= " <<TheK[itet]
371  // <<" "<< TheK[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
372  // <<" CK= " << CK[itet][ieta]<<" "<< CK[itet+1][ieta]
373  // <<" "<< CK[itet][ieta+1]<<" "<< CK[itet+1][ieta+1]<<G4endl;
374  }
375  //G4cout << "Kshell: tet= " << tet << " eta= " << eta << " C= " << corr
376  // << " itet= " << itet << " ieta= " << ieta <<G4endl;
377  return corr;
378 }
379 
380 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
381 
382 G4double G4EmCorrections::LShell(G4double tet, G4double eta)
383 {
384  G4double corr = 0.0;
385 
386  G4double x = tet;
387  G4int itet = 0;
388  G4int ieta = 0;
389  if(tet < TheL[0]) {
390  x = TheL[0];
391  } else if(tet > TheL[nL-1]) {
392  x = TheL[nL-1];
393  itet = nL-2;
394  } else {
395  itet = Index(x, TheL, nL);
396  }
397 
398  // assimptotic case
399  if(eta >= Eta[nEtaL-1]) {
400  corr = (Value(x, TheL[itet], TheL[itet+1], UL[itet], UL[itet+1])
401  + Value(x, TheL[itet], TheL[itet+1], VL[itet], VL[itet+1])/eta
402  )/eta;
403  } else {
404  G4double y = eta;
405  if(eta < Eta[0]) {
406  y = Eta[0];
407  } else {
408  ieta = Index(y, Eta, nEtaL);
409  }
410  corr = Value2(x, y, TheL[itet], TheL[itet+1], Eta[ieta], Eta[ieta+1],
411  CL[itet][ieta], CL[itet+1][ieta],
412  CL[itet][ieta+1], CL[itet+1][ieta+1]);
413  //G4cout << " x= " <<x<<" y= "<<y<<" tet= " <<TheL[itet]
414  // <<" "<< TheL[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
415  // <<" CL= " << CL[itet][ieta]<<" "<< CL[itet+1][ieta]
416  // <<" "<< CL[itet][ieta+1]<<" "<< CL[itet+1][ieta+1]<<G4endl;
417  }
418  //G4cout<<"Lshell: tet= "<<tet<<" eta= "<<eta<<" itet= "<<itet
419  // <<" ieta= "<<ieta<<" Corr= "<<corr<<G4endl;
420  return corr;
421 }
422 
423 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
424 
426  const G4Material* mat,
427  G4double e)
428 {
429  SetupKinematics(p, mat, e);
430  G4double taulim= 8.0*MeV/mass;
431  G4double bg2lim= taulim * (taulim+2.0);
432 
433  G4double* shellCorrectionVector =
435  G4double sh = 0.0;
436  G4double x = 1.0;
437  G4double taul = material->GetIonisation()->GetTaul();
438 
439  if ( bg2 >= bg2lim ) {
440  for (G4int k=0; k<3; k++) {
441  x *= bg2 ;
442  sh += shellCorrectionVector[k]/x;
443  }
444 
445  } else {
446  for (G4int k=0; k<3; k++) {
447  x *= bg2lim ;
448  sh += shellCorrectionVector[k]/x;
449  }
450  sh *= std::log(tau/taul)/std::log(taulim/taul);
451  }
452  sh *= 0.5;
453  return sh;
454 }
455 
456 
457 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
458 
460  const G4Material* mat,
461  G4double ekin)
462 {
463  SetupKinematics(p, mat, ekin);
464 
465  G4double term = 0.0;
466  //G4cout << "### G4EmCorrections::ShellCorrection " << mat->GetName()
467  // << " " << ekin/MeV << " MeV " << G4endl;
468  for (G4int i = 0; i<numberOfElements; ++i) {
469 
470  G4double res = 0.0;
471  G4double res0 = 0.0;
472  G4double Z = (*theElementVector)[i]->GetZ();
473  G4int iz = G4int(Z);
474  G4double Z2= (Z-0.3)*(Z-0.3);
475  G4double f = 1.0;
476  if(1 == iz) {
477  f = 0.5;
478  Z2 = 1.0;
479  }
480  G4double eta = ba2/Z2;
481  G4double tet = Z2*(1. + Z2*0.25*alpha2);
482  if(11 < iz) { tet = ThetaK->Value(Z); }
483  res0 = f*KShell(tet,eta);
484  res += res0;
485  //G4cout << " Z= " << iz << " Shell 0" << " tet= " << tet
486  // << " eta= " << eta << " resK= " << res0 << G4endl;
487  if(2 < iz) {
488  G4double Zeff = Z - ZD[10];
489  if(iz < 10) { Zeff = Z - ZD[iz]; }
490  Z2= Zeff*Zeff;
491  eta = ba2/Z2;
492  f = 0.125;
493  tet = ThetaL->Value(Z);
495  G4int nmax = std::min(4, ntot);
496  G4double norm = 0.0;
497  G4double eshell = 0.0;
498  for(G4int j=1; j<nmax; ++j) {
500  if(15 >= iz) {
501  if(3 > j) { tet = 0.25*Z2*(1.0 + 5*Z2*alpha2/16.); }
502  else { tet = 0.25*Z2*(1.0 + Z2*alpha2/16.); }
503  }
504  norm += ne;
505  eshell += tet*ne;
506  res0 = f*ne*LShell(tet,eta);
507  res += res0;
508  //G4cout << " Z= " << iz << " Shell " << j << " Ne= " << ne
509  // << " tet= " << tet << " eta= " << eta
510  // << " resL= " << res0 << G4endl;
511  }
512  if(ntot > nmax) {
513  eshell /= norm;
514  // Add M-shell
515  if(28 > iz) {
516  res += f*(iz - 10)*LShell(eshell,HM[iz-11]*eta);
517  } else if(63 > iz) {
518  res += f*18*LShell(eshell,HM[iz-11]*eta);
519  } else {
520  res += f*18*LShell(eshell,HM[52]*eta);
521  }
522  // Add N-shell
523  if(32 < iz) {
524  if(60 > iz) {
525  res += f*(iz - 28)*LShell(eshell,HN[iz-33]*eta);
526  } else if(63 > iz) {
527  res += 4*LShell(eshell,HN[iz-33]*eta);
528  } else {
529  res += 4*LShell(eshell,HN[30]*eta);
530  }
531  // Add O-P-shells
532  if(60 < iz) {
533  res += f*(iz - 60)*LShell(eshell,150*eta);
534  }
535  }
536  }
537  }
538  term += res*atomDensity[i]/Z;
539  }
540 
541  term /= material->GetTotNbOfAtomsPerVolume();
542  //G4cout << "# Shell Correction= " << term << G4endl;
543  return term;
544 }
545 
546 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
547 
549  const G4Material* mat,
550  G4double e)
551 {
552  SetupKinematics(p, mat, e);
553 
554  G4double cden = material->GetIonisation()->GetCdensity();
555  G4double mden = material->GetIonisation()->GetMdensity();
556  G4double aden = material->GetIonisation()->GetAdensity();
557  G4double x0den = material->GetIonisation()->GetX0density();
558  G4double x1den = material->GetIonisation()->GetX1density();
559 
560  G4double twoln10 = 2.0*std::log(10.0);
561  G4double dedx = 0.0;
562 
563  // density correction
564  G4double x = std::log(bg2)/twoln10;
565  if ( x >= x0den ) {
566  dedx = twoln10*x - cden ;
567  if ( x < x1den ) dedx += aden*std::pow((x1den-x),mden) ;
568  }
569 
570  return dedx;
571 }
572 
573 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
574 
576  const G4Material* mat,
577  G4double e)
578 {
579  // . Z^3 Barkas effect in the stopping power of matter for charged particles
580  // J.C Ashley and R.H.Ritchie
581  // Physical review B Vol.5 No.7 1 April 1972 pp. 2393-2397
582  // valid for kineticEnergy > 0.5 MeV
583 
584  SetupKinematics(p, mat, e);
585  G4double BarkasTerm = 0.0;
586 
587  for (G4int i = 0; i<numberOfElements; ++i) {
588 
589  G4double Z = (*theElementVector)[i]->GetZ();
590  G4int iz = G4int(Z);
591  if(iz == 47) {
592  BarkasTerm += atomDensity[i]*0.006812*std::pow(beta,-0.9);
593  } else if(iz >= 64) {
594  BarkasTerm += atomDensity[i]*0.002833*std::pow(beta,-1.2);
595  } else {
596 
597  G4double X = ba2 / Z;
598  G4double b = 1.3;
599  if(1 == iz) {
600  if(material->GetName() == "G4_lH2") { b = 0.6; }
601  else { b = 1.8; }
602  }
603  else if(2 == iz) { b = 0.6; }
604  else if(10 >= iz) { b = 1.8; }
605  else if(17 >= iz) { b = 1.4; }
606  else if(18 == iz) { b = 1.8; }
607  else if(25 >= iz) { b = 1.4; }
608  else if(50 >= iz) { b = 1.35;}
609 
610  G4double W = b/std::sqrt(X);
611 
612  G4double val = BarkasCorr->Value(W);
613  if(W > BarkasCorr->Energy(46)) {
614  val *= BarkasCorr->Energy(46)/W;
615  }
616  // G4cout << "i= " << i << " b= " << b << " W= " << W
617  // << " Z= " << Z << " X= " << X << " val= " << val<< G4endl;
618  BarkasTerm += val*atomDensity[i] / (std::sqrt(Z*X)*X);
619  }
620  }
621 
622  BarkasTerm *= 1.29*charge/material->GetTotNbOfAtomsPerVolume();
623 
624  // temporary protection
625  //if(charge < -7.0 ) { BarkasTerm *= (-7.0/charge); }
626 
627  return BarkasTerm;
628 }
629 
630 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
631 
633  const G4Material* mat,
634  G4double e)
635 {
636  SetupKinematics(p, mat, e);
637 
638  G4double y2 = q2/ba2;
639 
640  G4double term = 1.0/(1.0 + y2);
641  G4double del;
642  G4double j = 1.0;
643  do {
644  j += 1.0;
645  del = 1.0/(j* (j*j + y2));
646  term += del;
647  } while (del > 0.01*term);
648 
649  G4double res = -y2*term;
650  // temporary protection
651  //if(q2 > 49. && res < -0.2) { res = -0.2; }
652 
653  return res;
654 }
655 
656 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
657 
659  const G4Material* mat,
660  G4double e)
661 {
662  SetupKinematics(p, mat, e);
663  G4double mterm = CLHEP::pi*fine_structure_const*beta*charge;
664  return mterm;
665 }
666 
667 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
668 
670  const G4Material* mat,
671  G4double e,
672  G4bool fluct)
673 {
674  G4double nloss = 0.0;
675  if(e <= 0.0) return nloss;
676  SetupKinematics(p, mat, e);
677 
678  lossFlucFlag = fluct;
679 
680  // Projectile nucleus
681  G4double z1 = std::fabs(particle->GetPDGCharge()/eplus);
682  G4double mass1 = mass/amu_c2;
683 
684  // loop for the elements in the material
685  for (G4int iel=0; iel<numberOfElements; iel++) {
686  const G4Element* element = (*theElementVector)[iel] ;
687  G4double z2 = element->GetZ();
688  G4double mass2 = element->GetA()*mole/g ;
689  nloss += (NuclearStoppingPower(kinEnergy, z1, z2, mass1, mass2))
690  * atomDensity[iel] ;
691  }
692  nloss *= theZieglerFactor;
693  return nloss;
694 }
695 
696 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
697 
698 G4double G4EmCorrections::NuclearStoppingPower(G4double kineticEnergy,
699  G4double z1, G4double z2,
700  G4double mass1, G4double mass2)
701 {
702  G4double energy = kineticEnergy/keV ; // energy in keV
703  G4double nloss = 0.0;
704 
705  G4double rm;
706  if(z1 > 1.5) rm = (mass1 + mass2) * ( Z23[G4int(z1)] + Z23[G4int(z2)] ) ;
707  else rm = (mass1 + mass2) * nist->GetZ13(G4int(z2));
708 
709  G4double er = 32.536 * mass2 * energy / ( z1 * z2 * rm ) ; // reduced energy
710 
711  if (er >= ed[0]) { nloss = a[0]; }
712  else {
713  // the table is inverse in energy
714  for (G4int i=102; i>=0; i--)
715  {
716  if (er <= ed[i]) {
717  nloss = (a[i] - a[i+1])*(er - ed[i+1])/(ed[i] - ed[i+1]) + a[i+1];
718  break;
719  }
720  }
721  }
722 
723  // Stragling
724  if(lossFlucFlag) {
725  // G4double sig = 4.0 * m1 * m2 / ((m1 + m2)*(m1 + m2)*
726  // (4.0 + 0.197*std::pow(er,-1.6991)+6.584*std::pow(er,-1.0494))) ;
727  G4double sig = 4.0 * mass1 * mass2 / ((mass1 + mass2)*(mass1 + mass2)*
728  (4.0 + 0.197/(er*er) + 6.584/er));
729 
730  nloss *= G4RandGauss::shoot(1.0,sig) ;
731  }
732 
733  nloss *= 8.462 * z1 * z2 * mass1 / rm ; // Return to [ev/(10^15 atoms/cm^2]
734 
735  if ( nloss < 0.0) nloss = 0.0 ;
736 
737  return nloss;
738 }
739 
740 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
741 
743  const G4Material* mat,
744  G4double ekin)
745 {
746  G4double factor = 1.0;
747  if(p->GetPDGCharge() <= 2.5*eplus || nIons <= 0) return factor;
748  /*
749  if(verbose > 1) {
750  G4cout << "EffectiveChargeCorrection: " << p->GetParticleName()
751  << " in " << mat->GetName()
752  << " ekin(MeV)= " << ekin/MeV << G4endl;
753  }
754  */
755  if(p != curParticle || mat != curMaterial) {
756  curParticle = p;
757  curMaterial = mat;
758  curVector = 0;
759  currentZ = p->GetAtomicNumber();
760  if(verbose > 1) {
761  G4cout << "G4EmCorrections::EffectiveChargeCorrection: Zion= "
762  << currentZ << " Aion= " << p->GetPDGMass()/amu_c2 << G4endl;
763  }
764  massFactor = proton_mass_c2/p->GetPDGMass();
765  idx = -1;
766 
767  for(G4int i=0; i<nIons; ++i) {
768  if(materialList[i] == mat && currentZ == Zion[i]) {
769  idx = i;
770  break;
771  }
772  }
773  // G4cout << " idx= " << idx << " dz= " << G4endl;
774  if(idx >= 0) {
775  if(!ionList[idx]) BuildCorrectionVector();
776  if(ionList[idx]) curVector = stopData[idx];
777  } else { return factor; }
778  }
779  if(curVector) {
780  factor = curVector->Value(ekin*massFactor);
781  if(verbose > 1) {
782  G4cout << "E= " << ekin << " factor= " << factor << " massfactor= "
783  << massFactor << G4endl;
784  }
785  }
786  return factor;
787 }
788 
789 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
790 
792  const G4String& mname,
793  G4PhysicsVector* dVector)
794 {
795  G4int i = 0;
796  for(; i<nIons; ++i) {
797  if(Z == Zion[i] && A == Aion[i] && mname == materialName[i]) break;
798  }
799  if(i == nIons) {
800  Zion.push_back(Z);
801  Aion.push_back(A);
802  materialName.push_back(mname);
803  materialList.push_back(0);
804  ionList.push_back(0);
805  stopData.push_back(dVector);
806  nIons++;
807  if(verbose>1) {
808  G4cout << "AddStoppingData Z= " << Z << " A= " << A << " " << mname
809  << " idx= " << i << G4endl;
810  }
811  }
812 }
813 
814 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
815 
816 void G4EmCorrections::BuildCorrectionVector()
817 {
818  if(!ionLEModel || !ionHEModel) {
819  return;
820  }
821 
822  const G4ParticleDefinition* ion = curParticle;
823  G4int Z = Zion[idx];
824  if(currentZ != Z) {
825  ion = ionTable->GetIon(Z, Aion[idx], 0);
826  }
827  //G4cout << "BuildCorrectionVector: idx= " << idx << " Z= " << Z
828  // << " curZ= " << currentZ << G4endl;
829 
830  // G4double A = nist->GetAtomicMassAmu(Z);
831  G4double A = G4double(ion->GetBaryonNumber());
832  G4PhysicsVector* v = stopData[idx];
833 
835  G4double massRatio = proton_mass_c2/ion->GetPDGMass();
836 
837  if(verbose>1) {
838  G4cout << "BuildCorrectionVector: Stopping for "
839  << curParticle->GetParticleName() << " in "
840  << materialName[idx] << " Ion Z= " << Z << " A= " << A
841  << " massRatio= " << massRatio << G4endl;
842  }
843 
844  G4PhysicsLogVector* vv =
845  new G4PhysicsLogVector(eCorrMin,eCorrMax,nbinCorr);
846  vv->SetSpline(true);
847  G4double e, eion, dedx, dedx1;
848  G4double eth0 = v->Energy(0);
849  G4double escal = eth/massRatio;
850  G4double qe =
851  effCharge.EffectiveChargeSquareRatio(ion, curMaterial, escal);
852  G4double dedxt =
853  ionLEModel->ComputeDEDXPerVolume(curMaterial, p, eth, eth)*qe;
854  G4double dedx1t =
855  ionHEModel->ComputeDEDXPerVolume(curMaterial, p, eth, eth)*qe
856  + ComputeIonCorrections(curParticle, curMaterial, escal);
857  G4double rest = escal*(dedxt - dedx1t);
858  //G4cout << "Escal(MeV)= "<<escal<<" dedxt0= " <<dedxt
859  // << " dedxt1= " << dedx1t << G4endl;
860 
861  for(G4int i=0; i<=nbinCorr; ++i) {
862  e = vv->Energy(i);
863  escal = e/massRatio;
864  eion = escal/A;
865  if(eion <= eth0) {
866  dedx = v->Value(eth0)*std::sqrt(eion/eth0);
867  } else {
868  dedx = v->Value(eion);
869  }
870  qe = effCharge.EffectiveChargeSquareRatio(curParticle,curMaterial,escal);
871  if(e <= eth) {
872  dedx1 = ionLEModel->ComputeDEDXPerVolume(curMaterial, p, e, e)*qe;
873  } else {
874  dedx1 = ionHEModel->ComputeDEDXPerVolume(curMaterial, p, e, e)*qe +
875  ComputeIonCorrections(curParticle, curMaterial, escal) + rest/escal;
876  }
877  vv->PutValue(i, dedx/dedx1);
878  if(verbose>1) {
879  G4cout << " E(meV)= " << e/MeV << " Correction= " << dedx/dedx1
880  << " " << dedx << " " << dedx1
881  << " massF= " << massFactor << G4endl;
882  }
883  }
884  delete v;
885  ionList[idx] = ion;
886  stopData[idx] = vv;
887  if(verbose>1) { G4cout << "End data set " << G4endl; }
888 }
889 
890 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
891 
893 {
895  ncouples = tb->GetTableSize();
896  if(currmat.size() != ncouples) {
897  currmat.resize(ncouples);
898  for(std::map< G4int, std::vector<G4double> >::iterator it =
899  thcorr.begin(); it != thcorr.end(); ++it){
900  (it->second).clear();
901  }
902  thcorr.clear();
903  for(size_t i=0; i<ncouples; ++i) {
904  currmat[i] = tb->GetMaterialCutsCouple(i)->GetMaterial();
905  G4String nam = currmat[i]->GetName();
906  for(G4int j=0; j<nIons; ++j) {
907  if(nam == materialName[j]) { materialList[j] = currmat[i]; }
908  }
909  }
910  }
911 }
912 
913 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
914 
915 void G4EmCorrections::Initialise()
916 {
917 // . Z^3 Barkas effect in the stopping power of matter for charged particles
918 // J.C Ashley and R.H.Ritchie
919 // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
920  G4int i, j;
921  const G4double fTable[47][2] = {
922  { 0.02, 21.5},
923  { 0.03, 20.0},
924  { 0.04, 18.0},
925  { 0.05, 15.6},
926  { 0.06, 15.0},
927  { 0.07, 14.0},
928  { 0.08, 13.5},
929  { 0.09, 13.},
930  { 0.1, 12.2},
931  { 0.2, 9.25},
932  { 0.3, 7.0},
933  { 0.4, 6.0},
934  { 0.5, 4.5},
935  { 0.6, 3.5},
936  { 0.7, 3.0},
937  { 0.8, 2.5},
938  { 0.9, 2.0},
939  { 1.0, 1.7},
940  { 1.2, 1.2},
941  { 1.3, 1.0},
942  { 1.4, 0.86},
943  { 1.5, 0.7},
944  { 1.6, 0.61},
945  { 1.7, 0.52},
946  { 1.8, 0.5},
947  { 1.9, 0.43},
948  { 2.0, 0.42},
949  { 2.1, 0.3},
950  { 2.4, 0.2},
951  { 3.0, 0.13},
952  { 3.08, 0.1},
953  { 3.1, 0.09},
954  { 3.3, 0.08},
955  { 3.5, 0.07},
956  { 3.8, 0.06},
957  { 4.0, 0.051},
958  { 4.1, 0.04},
959  { 4.8, 0.03},
960  { 5.0, 0.024},
961  { 5.1, 0.02},
962  { 6.0, 0.013},
963  { 6.5, 0.01},
964  { 7.0, 0.009},
965  { 7.1, 0.008},
966  { 8.0, 0.006},
967  { 9.0, 0.0032},
968  { 10.0, 0.0025} };
969 
970  BarkasCorr = new G4LPhysicsFreeVector(47, 0.02, 10.);
971  for(i=0; i<47; ++i) { BarkasCorr->PutValues(i, fTable[i][0], fTable[i][1]); }
972  BarkasCorr->SetSpline(true);
973 
974  const G4double nuca[104][2] = {
975  { 1.0E+8, 5.831E-8},
976  { 8.0E+7, 7.288E-8},
977  { 6.0E+7, 9.719E-8},
978  { 5.0E+7, 1.166E-7},
979  { 4.0E+7, 1.457E-7},
980  { 3.0E+7, 1.942E-7},
981  { 2.0E+7, 2.916E-7},
982  { 1.5E+7, 3.887E-7},
983 
984  { 1.0E+7, 5.833E-7},
985  { 8.0E+6, 7.287E-7},
986  { 6.0E+6, 9.712E-7},
987  { 5.0E+6, 1.166E-6},
988  { 4.0E+6, 1.457E-6},
989  { 3.0E+6, 1.941E-6},
990  { 2.0E+6, 2.911E-6},
991  { 1.5E+6, 3.878E-6},
992 
993  { 1.0E+6, 5.810E-6},
994  { 8.0E+5, 7.262E-6},
995  { 6.0E+5, 9.663E-6},
996  { 5.0E+5, 1.157E-5},
997  { 4.0E+5, 1.442E-5},
998  { 3.0E+5, 1.913E-5},
999  { 2.0E+5, 2.845E-5},
1000  { 1.5E+5, 3.762E-5},
1001 
1002  { 1.0E+5, 5.554E-5},
1003  { 8.0E+4, 6.866E-5},
1004  { 6.0E+4, 9.020E-5},
1005  { 5.0E+4, 1.070E-4},
1006  { 4.0E+4, 1.319E-4},
1007  { 3.0E+4, 1.722E-4},
1008  { 2.0E+4, 2.499E-4},
1009  { 1.5E+4, 3.248E-4},
1010 
1011  { 1.0E+4, 4.688E-4},
1012  { 8.0E+3, 5.729E-4},
1013  { 6.0E+3, 7.411E-4},
1014  { 5.0E+3, 8.718E-4},
1015  { 4.0E+3, 1.063E-3},
1016  { 3.0E+3, 1.370E-3},
1017  { 2.0E+3, 1.955E-3},
1018  { 1.5E+3, 2.511E-3},
1019 
1020  { 1.0E+3, 3.563E-3},
1021  { 8.0E+2, 4.314E-3},
1022  { 6.0E+2, 5.511E-3},
1023  { 5.0E+2, 6.430E-3},
1024  { 4.0E+2, 7.756E-3},
1025  { 3.0E+2, 9.855E-3},
1026  { 2.0E+2, 1.375E-2},
1027  { 1.5E+2, 1.736E-2},
1028 
1029  { 1.0E+2, 2.395E-2},
1030  { 8.0E+1, 2.850E-2},
1031  { 6.0E+1, 3.552E-2},
1032  { 5.0E+1, 4.073E-2},
1033  { 4.0E+1, 4.802E-2},
1034  { 3.0E+1, 5.904E-2},
1035  { 1.5E+1, 9.426E-2},
1036 
1037  { 1.0E+1, 1.210E-1},
1038  { 8.0E+0, 1.377E-1},
1039  { 6.0E+0, 1.611E-1},
1040  { 5.0E+0, 1.768E-1},
1041  { 4.0E+0, 1.968E-1},
1042  { 3.0E+0, 2.235E-1},
1043  { 2.0E+0, 2.613E-1},
1044  { 1.5E+0, 2.871E-1},
1045 
1046  { 1.0E+0, 3.199E-1},
1047  { 8.0E-1, 3.354E-1},
1048  { 6.0E-1, 3.523E-1},
1049  { 5.0E-1, 3.609E-1},
1050  { 4.0E-1, 3.693E-1},
1051  { 3.0E-1, 3.766E-1},
1052  { 2.0E-1, 3.803E-1},
1053  { 1.5E-1, 3.788E-1},
1054 
1055  { 1.0E-1, 3.711E-1},
1056  { 8.0E-2, 3.644E-1},
1057  { 6.0E-2, 3.530E-1},
1058  { 5.0E-2, 3.444E-1},
1059  { 4.0E-2, 3.323E-1},
1060  { 3.0E-2, 3.144E-1},
1061  { 2.0E-2, 2.854E-1},
1062  { 1.5E-2, 2.629E-1},
1063 
1064  { 1.0E-2, 2.298E-1},
1065  { 8.0E-3, 2.115E-1},
1066  { 6.0E-3, 1.883E-1},
1067  { 5.0E-3, 1.741E-1},
1068  { 4.0E-3, 1.574E-1},
1069  { 3.0E-3, 1.372E-1},
1070  { 2.0E-3, 1.116E-1},
1071  { 1.5E-3, 9.559E-2},
1072 
1073  { 1.0E-3, 7.601E-2},
1074  { 8.0E-4, 6.668E-2},
1075  { 6.0E-4, 5.605E-2},
1076  { 5.0E-4, 5.008E-2},
1077  { 4.0E-4, 4.352E-2},
1078  { 3.0E-4, 3.617E-2},
1079  { 2.0E-4, 2.768E-2},
1080  { 1.5E-4, 2.279E-2},
1081 
1082  { 1.0E-4, 1.723E-2},
1083  { 8.0E-5, 1.473E-2},
1084  { 6.0E-5, 1.200E-2},
1085  { 5.0E-5, 1.052E-2},
1086  { 4.0E-5, 8.950E-3},
1087  { 3.0E-5, 7.246E-3},
1088  { 2.0E-5, 5.358E-3},
1089  { 1.5E-5, 4.313E-3},
1090  { 0.0, 3.166E-3}
1091  };
1092 
1093  for(i=0; i<104; ++i) {
1094  ed[i] = nuca[i][0];
1095  a[i] = nuca[i][1];
1096  }
1097 
1098  // Constants
1099  theZieglerFactor = eV*cm2*1.0e-15 ;
1101  lossFlucFlag = true;
1102 
1103  // G.S. Khandelwal Nucl. Phys. A116(1968)97 - 111.
1104  // "Shell corrections for K- and L- electrons
1105 
1106  nK = 20;
1107  nL = 26;
1108  nEtaK = 29;
1109  nEtaL = 28;
1110 
1111  const G4double d[11] = {0., 0., 0., 1.72, 2.09, 2.48, 2.82, 3.16, 3.53, 3.84, 4.15};
1112  const G4double thek[20] = {0.64, 0.65, 0.66, 0.68, 0.70, 0.72, 0.74, 0.75, 0.76, 0.78,
1113  0.80, 0.82, 0.84, 0.85, 0.86, 0.88, 0.90, 0.92, 0.94, 0.95};
1114  const G4double sk[20] = {1.9477, 1.9232, 1.8996, 1.8550, 1.8137,
1115  1.7754, 1.7396, 1.7223, 1.7063, 1.6752,
1116  1.6461, 1.6189, 1.5933, 1.5811, 1.5693,
1117  1.5467, 1.5254, 1.5053, 1.4863, 1.4772};
1118  const G4double tk[20] = {2.5222, 2.5125, 2.5026, 2.4821, 2.4608,
1119  2.4388, 2.4163, 2.4044, 2.3933, 2.3701,
1120  2.3466, 2.3229, 2.2992, 2.2872, 2.2753,
1121  2.2515, 2.2277, 2.2040, 2.1804, 2.1686};
1122  const G4double uk[20] = {1.9999, 2.0134, 2.0258, 2.0478, 2.0662,
1123  2.0817, 2.0945, 2.0999, 2.1049, 2.1132,
1124  2.1197, 2.1246, 2.1280, 2.1292, 2.1301,
1125  2.1310, 2.1310, 2.1300, 2.1283, 2.1271};
1126  const G4double vk[20] = {8.3410, 8.3373, 8.3340, 8.3287, 8.3247,
1127  8.3219, 8.3201, 8.3194, 8.3191, 8.3188,
1128  8.3191, 8.3199, 8.3211, 8.3218, 8.3226,
1129  8.3244, 8.3264, 8.3285, 8.3308, 8.3320};
1130 
1131  for(i=0; i<11; ++i) { ZD[i] = d[i];}
1132 
1133  for(i=0; i<nK; ++i) {
1134  TheK[i] = thek[i];
1135  SK[i] = sk[i];
1136  TK[i] = tk[i];
1137  UK[i] = uk[i];
1138  VK[i] = vk[i];
1139  }
1140 
1141  const G4double thel[26] = {0.24, 0.26, 0.28, 0.30, 0.32, 0.34, 0.35, 0.36, 0.38, 0.40,
1142  0.42, 0.44, 0.45, 0.46, 0.48, 0.50, 0.52, 0.54, 0.55, 0.56,
1143  0.58, 0.60, 0.62, 0.64, 0.65, 0.66};
1144  const G4double sl[26] = {15.3343, 13.9389, 12.7909, 11.8343, 11.0283,
1145  10.3424, 10.0371, 9.7537, 9.2443, 8.8005,
1146  8.4114, 8.0683, 7.9117, 7.7641, 7.4931,
1147  7.2506, 7.0327, 6.8362, 6.7452, 6.6584,
1148  6.4969, 6.3498, 6.2154, 6.0923, 6.0345, 5.9792};
1149  const G4double tl[26] = {35.0669, 33.4344, 32.0073, 30.7466, 29.6226,
1150  28.6128, 28.1449, 27.6991, 26.8674, 26.1061,
1151  25.4058, 24.7587, 24.4531, 24.1583, 23.5992,
1152  23.0771, 22.5880, 22.1285, 21.9090, 21.6958,
1153  21.2872, 20.9006, 20.5341, 20.1859, 20.0183, 19.8546};
1154  const G4double ul[26] = {0.1215, 0.5265, 0.8411, 1.0878, 1.2828,
1155  1.4379, 1.5032, 1.5617, 1.6608, 1.7401,
1156  1.8036, 1.8543, 1.8756, 1.8945, 1.9262,
1157  1.9508, 1.9696, 1.9836, 1.9890, 1.9935,
1158  2.0001, 2.0039, 2.0053, 2.0049, 2.0040, 2.0028};
1159  for(i=0; i<nL; ++i) {
1160  TheL[i] = thel[i];
1161  SL[i] = sl[i];
1162  TL[i] = tl[i];
1163  UL[i] = ul[i];
1164  }
1165 
1166  const G4double eta[29] = {0.005, 0.007, 0.01, 0.015, 0.02,
1167  0.03, 0.04, 0.05, 0.06, 0.08,
1168  0.1, 0.15, 0.2, 0.3, 0.4,
1169  0.5, 0.6, 0.7, 0.8, 1.0,
1170  1.2, 1.4, 1.5, 1.7, 2.0, 3.0, 5.0, 7.0, 10.};
1171 
1172  const G4double bk1[29][11] = {
1173  {0.005, 1.34782E-8, 1.46132E-8, 1.72179E-8, 2.03521E-8, 2.41370E-8, 2.87247E-8, 3.13778E-8, 3.43072E-8, 4.11274E-8, 4.94946E-8},
1174  {0.007, 6.87555E-8, 7.44373E-8, 8.74397E-8, 1.03022E-7, 1.21760E-7, 1.44370E-7, 1.57398E-7, 1.71747E-7, 2.05023E-7, 2.45620E-7},
1175  {0.01, 3.78413E-7, 4.08831E-7, 4.78154E-7, 5.60760E-7, 6.59478E-7, 7.77847E-7, 8.45709E-7, 9.20187E-7, 1.09192E-6, 1.29981E-6},
1176  {0.015, 2.53200E-6, 2.72664E-6, 3.16738E-6, 3.68791E-6, 4.30423E-6, 5.03578E-6, 5.45200E-6, 5.90633E-6, 6.94501E-6, 8.18757E-6},
1177  {0.02, 9.43891E-6, 1.01339E-5, 1.16984E-5, 1.35313E-5, 1.56829E-5, 1.82138E-5, 1.96439E-5, 2.11973E-5, 2.47216E-5, 2.88935E-5},
1178  {0.03, 5.67088E-5, 6.05576E-5, 6.91311E-5, 7.90324E-5, 9.04832E-5, 1.03744E-4, 1.11147E-4, 1.19122E-4, 1.36980E-4, 1.57744E-4},
1179  {0.04, 1.91576E-4, 2.03626E-4, 2.30230E-4, 2.60584E-4, 2.95248E-4, 3.34870E-4, 3.56771E-4, 3.80200E-4, 4.32104E-4, 4.91584E-4},
1180  {0.05, 4.74226E-4, 5.02006E-4, 5.62872E-4, 6.31597E-4, 7.09244E-4, 7.97023E-4, 8.45134E-4, 8.96410E-4, 1.00867E-3, 1.13590E-3},
1181  {0.06, 9.67285E-4, 1.02029E-3, 1.13566E-3, 1.26476E-3, 1.46928E-3, 1.57113E-3, 1.65921E-3, 1.75244E-3, 1.95562E-3, 2.18336E-3},
1182  {0.08, 2.81537E-3, 2.95200E-3, 3.24599E-3, 3.57027E-3, 3.92793E-3, 4.32246E-3, 4.53473E-3, 4.75768E-3, 5.23785E-3, 5.76765E-3},
1183  {0.1, 6.14216E-3, 6.40864E-3, 6.97750E-3, 7.59781E-3, 8.27424E-3, 9.01187E-3, 9.40534E-3, 9.81623E-3, 1.06934E-2, 1.16498E-2},
1184  {0.15, 2.23096E-2, 2.30790E-2, 2.46978E-2, 2.64300E-2, 2.82832E-2, 3.02661E-2, 3.13090E-2, 3.23878E-2, 3.46580E-2, 3.70873E-2},
1185  {0.2, 5.04022E-2, 5.18492E-2, 5.48682E-2, 5.80617E-2, 6.14403E-2, 6.50152E-2, 6.68798E-2, 6.87981E-2, 7.28020E-2, 7.70407E-2},
1186  {0.3, 1.38018E-1, 1.41026E-1, 1.47244E-1, 1.53743E-1, 1.60536E-1, 1.67641E-1, 1.71315E-1, 1.75074E-1, 1.82852E-1, 1.90997E-1},
1187  {0.4, 2.56001E-1, 2.60576E-1, 2.69992E-1, 2.79776E-1, 2.89946E-1, 3.00525E-1, 3.05974E-1, 3.11533E-1, 3.22994E-1, 3.34935E-1},
1188  {0.5, 3.92181E-1, 3.98213E-1, 4.10597E-1, 4.23427E-1, 4.36726E-1, 4.50519E-1, 4.57610E-1, 4.64834E-1, 4.79700E-1, 4.95148E-1},
1189  {0.6, 5.37913E-1, 5.45268E-1, 5.60350E-1, 5.75948E-1, 5.92092E-1, 6.08811E-1, 6.17396E-1, 6.26136E-1, 6.44104E-1, 6.62752E-1},
1190  {0.7, 6.87470E-1, 6.96021E-1, 7.13543E-1, 7.31650E-1, 7.50373E-1, 7.69748E-1, 7.79591E-1, 7.89811E-1, 8.10602E-1, 8.32167E-1},
1191  {0.8, 8.37159E-1, 8.46790E-1, 8.66525E-1, 8.86910E-1, 9.07979E-1, 9.29772E-1, 9.40953E-1, 9.52331E-1, 9.75701E-1, 9.99934E-1},
1192  {1.0, 1.12850, 1.14002, 1.16362, 1.18799, 1.21317, 1.23921, 1.25257, 1.26616, 1.29408, 1.32303},
1193  {1.2, 1.40232, 1.41545, 1.44232, 1.47007, 1.49875, 1.52842, 1.54364, 1.55913, 1.59095, 1.62396},
1194  {1.4, 1.65584, 1.67034, 1.70004, 1.73072, 1.76244, 1.79526, 1.81210, 1.82925, 1.86448, 1.90104},
1195  {1.5, 1.77496, 1.79009, 1.82107, 1.85307, 1.88617, 1.92042, 1.93800, 1.95590, 1.99269, 2.03087},
1196  {1.7, 1.99863, 2.01490, 2.04822, 2.08265, 2.11827, 2.15555, 2.17409, 2.19337, 2.23302, 2.27419},
1197  {2.0, 2.29325, 2.31100, 2.34738, 2.38501, 2.42395, 2.46429, 2.48401, 2.50612, 2.54955, 2.59468},
1198  {3.0, 3.08887, 3.11036, 3.15445, 3.20013, 3.24748, 3.29664, 3.32192, 3.34770, 3.40081, 3.45611},
1199  {5.0, 4.07599, 4.10219, 4.15606, 4.21199, 4.27010, 4.33056, 4.36172, 4.39353, 4.45918, 4.52772},
1200  {7.0, 4.69647, 4.72577, 4.78608, 4.84877, 4.91402, 4.98200, 5.01707, 5.05290, 5.12695, 5.20436},
1201  {10.0, 5.32590, 5.35848, 5.42560, 5.49547, 5.56830, 5.64429, 5.68353, 5.72366, 5.80666, 5.89359}
1202  };
1203 
1204  const G4double bk2[29][11] = {
1205  {0.005, 5.98040E-8, 7.25636E-8, 8.00602E-8, 8.84294E-8, 1.08253E-7, 1.33148E-7, 1.64573E-7, 2.04459E-7, 2.28346E-7, 2.55370E-7},
1206  {0.007, 2.95345E-7, 3.56497E-7, 3.92247E-7, 4.32017E-7, 5.25688E-7, 6.42391E-7, 7.88464E-7, 9.72171E-7, 1.08140E-6, 1.20435E-6},
1207  {0.01, 1.55232E-6, 1.86011E-6, 2.03881E-6, 2.23662E-6, 2.69889E-6, 3.26860E-6, 3.26860E-6, 4.84882E-6, 5.36428E-6, 5.94048E-6},
1208  {0.015, 9.67802E-6, 1.14707E-5, 1.25008E-5, 1.36329E-5, 1.62480E-5, 1.94200E-5, 2.32783E-5, 2.79850E-5, 3.07181E-5, 3.37432E-5},
1209  {0.02, 3.38425E-5, 3.97259E-5, 4.30763E-5, 4.67351E-5, 5.51033E-5, 6.51154E-5, 7.71154E-5, 9.15431E-5, 9.98212E-5, 1.08909E-4},
1210  {0.03, 1.81920E-4, 2.10106E-4, 2.25918E-4, 2.43007E-4, 2.81460E-4, 3.26458E-4, 3.79175E-4, 4.41006E-4, 4.75845E-4, 5.13606E-4},
1211  {0.04, 5.59802E-4, 6.38103E-4, 6.81511E-4, 7.28042E-4, 8.31425E-4, 9.50341E-4, 1.08721E-3, 1.24485E-3, 1.33245E-3, 1.42650E-3},
1212  {0.05, 1.28002E-3, 1.44336E-3, 1.53305E-3, 1.62855E-3, 1.83861E-3, 2.07396E-3, 2.34750E-3, 2.65469E-3, 2.82358E-3, 3.00358E-3},
1213  {0.06, 2.42872E-3, 2.72510E-3, 2.88111E-3, 3.04636E-3, 3.40681E-3, 3.81132E-3, 4.26536E-3, 4.77507E-3, 5.05294E-3, 5.34739E-3},
1214  {0.08, 6.35222E-3, 6.99730E-3, 7.34446E-3, 7.70916E-3, 8.49478E-3, 9.36187E-3, 1.03189E-2, 1.13754E-2, 1.19441E-2, 1.25417E-2},
1215  {0.1, 1.26929E-2, 1.38803E-2, 1.44371E-2, 1.50707E-2, 1.64235E-2, 1.78989E-2, 1.95083E-2, 2.12640E-2, 2.22009E-2, 2.31795E-2},
1216  {0.15, 3.96872E-2, 4.24699E-2, 4.39340E-2, 4.54488E-2, 4.86383E-2, 5.20542E-2, 5.57135E-2, 5.96350E-2, 6.17003E-2, 6.38389E-2},
1217  {0.2, 8.15290E-2, 8.62830E-2, 8.87650E-2, 9.13200E-2, 9.66589E-2, 1.02320E-1, 1.08326E-1, 1.14701E-1, 1.18035E-1, 1.21472E-1},
1218  {0.3, 1.99528E-1, 2.08471E-1, 2.13103E-1, 2.17848E-1, 2.27689E-1, 2.38022E-1, 2.48882E-1, 2.60304E-1, 2.66239E-1, 2.72329E-1},
1219  {0.4, 3.47383E-1, 3.60369E-1, 3.67073E-1, 3.73925E-1, 3.88089E-1, 4.02900E-1, 4.18404E-1, 4.34647E-1, 4.43063E-1, 4.51685E-1},
1220  {0.5, 5.11214E-1, 5.27935E-1, 5.36554E-1, 5.45354E-1, 5.63515E-1, 5.82470E-1, 6.02273E-1, 6.22986E-1, 6.33705E-1, 6.44677E-1},
1221  {0.6, 6.82122E-1, 7.02260E-1, 7.12631E-1, 7.23214E-1, 7.45041E-1, 7.67800E-1, 7.91559E-1, 8.16391E-1, 8.29235E-1, 8.42380E-1},
1222  {0.7, 8.54544E-1, 8.77814E-1, 8.89791E-1, 9.02008E-1, 9.27198E-1, 9.53454E-1, 9.80856E-1, 1.00949, 1.02430, 1.03945},
1223  {0.8, 1.02508, 1.05121, 1.06466, 1.07838, 1.10667, 1.13615, 1.16692, 1.19907, 1.21570, 1.23272},
1224  {1.0, 1.35307, 1.38429, 1.40036, 1.41676, 1.45057, 1.48582, 1.52263, 1.56111, 1.58102, 1.60140},
1225  {1.2, 1.65823, 1.69385, 1.71220, 1.73092, 1.76954, 1.80983, 1.85192, 1.89596, 1.91876, 1.94211},
1226  {1.4, 1.93902, 1.97852, 1.99887, 2.01964, 2.06251, 2.10727, 2.15406, 2.20304, 2.22842, 2.25442},
1227  {1.5, 2.07055, 2.11182, 2.13309, 2.15480, 2.19963, 2.24644, 2.29539, 2.34666, 2.37323, 2.40045},
1228  {1.7, 2.31700, 2.36154, 2.38451, 2.40798, 2.45641, 2.50703, 2.56000, 2.61552, 2.64430, 2.67381},
1229  {2.0, 2.64162, 2.69053, 2.71576, 2.74154, 2.79481, 2.85052, 2.90887, 2.97009, 3.00185, 3.03442},
1230  {3.0, 3.51376, 3.57394, 3.60503, 3.63684, 3.70268, 3.77170, 3.84418, 3.92040, 3.96003, 4.00073},
1231  {5.0, 4.59935, 4.67433, 4.71316, 4.75293, 4.83543, 4.92217, 5.01353, 5.10992, 5.16014, 5.21181},
1232  {7.0, 5.28542, 5.37040, 5.41445, 5.45962, 5.55344, 5.65226, 5.79496, 5.90517, 5.96269, 6.02191},
1233  {10.0, 5.98474, 6.08046, 6.13015, 6.18112, 6.28715, 6.39903, 6.51728, 6.64249, 6.70792, 6.77535}
1234  };
1235 
1236  const G4double bls1[28][10] = {
1237  {0.005, 2.4111E-4, 2.5612E-4, 2.7202E-4, 3.0658E-4, 3.4511E-4, 3.8795E-4, 4.3542E-4, 4.6100E-4, 4.8786E-4},
1238  {0.007, 6.3947E-4, 6.7058E-4, 7.0295E-4, 7.7167E-4, 8.4592E-4, 9.2605E-4, 1.0125E-3, 1.0583E-3, 1.1058E-3},
1239  {0.01, 1.5469E-3, 1.6036E-3, 1.6622E-3, 1.7856E-3, 1.9181E-3, 2.1615E-3, 2.3178E-3, 2.4019E-3, 2.4904E-3},
1240  {0.015, 3.7221E-3, 3.8404E-3, 3.9650E-3, 4.2354E-3, 4.5396E-3, 4.8853E-3, 5.2820E-3, 5.5031E-3, 5.7414E-3},
1241  {0.02, 6.9449E-3, 7.1910E-3, 7.4535E-3, 8.0336E-3, 8.6984E-3, 9.4638E-3, 1.0348E-2, 1.0841E-2, 1.1372E-2},
1242  {0.03, 1.7411E-2, 1.8180E-2, 1.8997E-2, 2.0784E-2, 2.2797E-2, 2.5066E-2, 2.7622E-2, 2.9020E-2, 3.0503E-2},
1243  {0.04, 3.8474E-2, 4.0056E-2, 4.1718E-2, 4.5300E-2, 4.9254E-2, 5.3619E-2, 5.8436E-2, 6.1028E-2, 6.3752E-2},
1244  {0.05, 6.7371E-2, 6.9928E-2, 7.2596E-2, 7.8282E-2, 8.4470E-2, 9.1206E-2, 9.8538E-2, 1.0244E-1, 1.0652E-1},
1245  {0.06, 1.0418E-1, 1.0778E-1, 1.1152E-1, 1.1943E-1, 1.2796E-1, 1.3715E-1, 1.4706E-1, 1.5231E-1, 1.5776E-1},
1246  {0.08, 1.9647E-1, 2.0217E-1, 2.0805E-1, 2.2038E-1, 2.3351E-1, 2.4751E-1, 2.6244E-1, 2.7027E-1, 2.7837E-1},
1247  {0.1, 3.0594E-1, 3.1361E-1, 3.2150E-1, 3.3796E-1, 3.5537E-1, 3.7381E-1, 3.9336E-1, 4.0357E-1, 4.1410E-1},
1248  {0.15, 6.1411E-1, 6.2597E-1, 6.3811E-1, 6.6330E-1, 6.8974E-1, 7.1753E-1, 7.4678E-1, 7.6199E-1, 7.7761E-1},
1249  {0.2, 9.3100E-1, 9.5614E-1, 9.7162E-1, 1.0037, 1.0372, 1.0723, 1.1092, 1.1284, 1.1480},
1250  {0.3, 1.5172, 1.5372, 1.5576, 1.5998, 1.6438, 1.6899, 1.7382, 1.7632, 1.7889},
1251  {0.4, 2.0173, 2.0408, 2.0647, 2.1142, 2.1659, 2.2199, 2.2765, 2.3059, 2.3360},
1252  {0.5, 2.3932, 2.4193, 2.4460, 2.5011, 2.5587, 2.6190, 2.6821, 2.7148, 2.7484},
1253  {0.6, 2.7091, 2.7374, 2.7663, 2.8260, 2.8884, 2.9538, 3.0222, 3.0577, 3.0941},
1254  {0.7, 2.9742, 3.0044, 3.0352, 3.0988, 3.1652, 3.2349, 3.3079, 3.3457, 3.3845},
1255  {0.8, 3.2222, 3.2539, 3.2863, 3.3532, 3.4232, 3.4965, 3.5734, 3.6133, 3.6542},
1256  {1.0, 3.6690, 3.7033, 3.7384, 3.8108, 3.8866, 3.9661, 4.0495, 4.0928, 4.1371},
1257  {1.2, 3.9819, 4.0183, 4.0555, 4.1324, 4.2130, 4.2974, 4.3861, 4.4321, 4.4794},
1258  {1.4, 4.2745, 4.3127, 4.3517, 4.4324, 4.5170, 4.6056, 4.6988, 4.7471, 4.7968},
1259  {1.5, 4.4047, 4.4436, 4.4834, 4.5658, 4.6521, 4.7426, 4.8378, 4.8872, 4.9379},
1260  {1.7, 4.6383, 4.6787, 4.7200, 4.8054, 4.8949, 4.9888, 5.0876, 5.1388, 5.1915},
1261  {2.0, 4.9369, 4.9791, 5.0223, 5.1116, 5.2053, 5.3036, 5.4070, 5.4607, 5.5159},
1262  {3.0, 5.6514, 5.6981, 5.7459, 5.8450, 5.9489, 6.0581, 6.1730, 6.2328, 6.2943},
1263  {5.0, 6.4665, 6.5189, 6.5724, 6.6835, 6.8003, 6.9231, 7.0525, 7.1199, 7.1892},
1264  {7.0, 6.8634, 6.9194, 6.9767, 7.0957, 7.2208, 7.3526, 7.4915, 7.5639, 7.6384}
1265  };
1266 
1267 
1268  const G4double bls2[28][10] = {
1269  {0.005, 5.4561E-4, 6.0905E-4, 6.7863E-4, 7.5494E-4, 7.9587E-4, 8.3883E-4, 9.3160E-4, 1.0352E-3, 1.1529E-3},
1270  {0.007, 1.2068E-3, 1.3170E-3, 1.4377E-3, 1.5719E-3, 1.6451E-3, 1.7231E-3, 1.8969E-3, 2.1009E-3, 2.3459E-3},
1271  {0.01, 2.6832E-3, 2.9017E-3, 3.1534E-3, 3.4479E-3, 3.6149E-3, 3.7976E-3, 4.2187E-3, 4.7320E-3, 5.3636E-3},
1272  {0.015, 6.2775E-3, 6.9077E-3, 7.6525E-3, 8.5370E-2, 9.0407E-3, 9.5910E-3, 1.0850E-2, 1.2358E-2, 1.4165E-2},
1273  {0.02, 1.2561E-2, 1.3943E-2, 1.5553E-2, 1.7327E-2, 1.8478E-2, 1.9612E-2, 2.2160E-2, 2.5130E-2, 2.8594E-2},
1274  {0.03, 3.3750E-2, 3.7470E-2, 4.1528E-2, 4.6170E-2, 4.8708E-2, 5.1401E-2, 5.7297E-2, 6.3943E-2, 7.1441E-2},
1275  {0.04, 6.9619E-2, 7.6098E-2, 8.3249E-2, 9.1150E-2, 9.5406E-2, 9.9881E-2, 1.0954E-1, 1.2023E-1, 1.3208E-1},
1276  {0.05, 1.1522E-1, 1.2470E-1, 1.3504E-1, 1.4632E-1, 1.5234E-1, 1.5864E-1, 1.7211E-1, 1.8686E-1, 2.0304E-1},
1277  {0.06, 1.6931E-1, 1.8179E-1, 1.9530E-1, 2.0991E-1, 2.1767E-1, 2.2576E-1, 2.4295E-1, 2.6165E-1, 2.8201E-1},
1278  {0.08, 2.9540E-1, 3.1361E-1, 3.3312E-1, 3.5403E-1, 3.6506E-1, 3.7650E-1, 4.0067E-1, 4.2673E-1, 4.5488E-1},
1279  {0.1, 4.3613E-1, 4.5956E-1, 4.852E-1, 5.1115E-1, 5.2514E-1, 5.3961E-1, 5.7008E-1, 6.0277E-1, 6.3793E-1},
1280  {0.15, 8.1014E-1, 8.4453E-1, 8.8093E-1, 9.1954E-1, 9.3973E-1, 9.6056E-1, 1.0043, 1.0509, 1.1008},
1281  {0.2, 1.1888, 1.2319, 1.2774, 1.3255, 1.3506, 1.3765, 1.4308, 1.4886, 1.5504},
1282  {0.3, 1.8422, 1.8983, 1.9575, 2.0201, 2.0528, 2.0864, 2.1569, 2.2319, 2.3120},
1283  {0.4, 2.3984, 2.4642, 2.5336, 2.6070, 2.6452, 2.6847, 2.7674, 2.8554, 2.9494},
1284  {0.5, 2.8181, 2.8915, 2.9690, 3.0509, 3.0937, 3.1378, 3.2301, 3.3285, 3.4337},
1285  {0.6, 3.1698, 3.2494, 3.3336, 3.4226, 3.4691, 3.5171, 3.6175, 3.7246, 3.8391},
1286  {0.7, 3.4652, 3.5502, 3.6400, 3.7351, 3.7848, 3.8360, 3.9433, 4.0578, 4.1804},
1287  {0.8, 3.7392, 3.8289, 3.9236, 4.0239, 4.0764, 4.1304, 4.2438, 4.3648, 4.4944},
1288  {1.0, 4.2295, 4.3269, 4.4299, 4.5391, 4.5962, 4.6551, 4.7786, 4.9106, 5.0520},
1289  {1.2, 4.5777, 4.6814, 4.7912, 4.9076, 4.9685, 5.0314, 5.1633, 5.3043, 5.4555},
1290  {1.4, 4.9001, 5.0092, 5.1247, 5.2473, 5.3114, 5.3776, 5.5166, 5.6653, 5.8249},
1291  {1.5, 5.0434, 5.1550, 5.2731, 5.3984, 5.4640, 5.5317, 5.6739, 5.8260, 5.9893},
1292  {1.7, 5.3011, 5.4170, 5.5398, 5.6701, 5.7373, 5.8088, 5.9568, 6.1152, 6.2853},
1293  {2.0, 5.6308, 5.7523, 5.8811, 6.0174, 6.0896, 6.1636, 6.3192, 6.4857, 6.6647},
1294  {3.0, 6.4224, 6.5580, 6.7019, 6.8549, 6.9351, 7.0180, 7.1925, 7.3795, 7.5808},
1295  {5.0, 7.3338, 7.4872, 7.6500, 7.8235, 7.9146, 8.0087, 8.2071, 8.4200, 8.6496},
1296  {7.0, 7.7938, 7.9588, 8.1342, 8.3211, 8.4193, 8.5209, 8.7350, 8.9651, 9.2133}
1297  };
1298 
1299  const G4double bls3[28][9] = {
1300  {0.005, 1.2895E-3, 1.3670E-3, 1.4524E-3, 1.6524E-3, 1.9078E-3, 2.2414E-3, 2.6889E-3, 3.3006E-3},
1301  {0.007, 2.6467E-3, 2.8242E-3, 3.0238E-3, 3.5045E-3, 4.1260E-3, 4.9376E-3, 6.0050E-3, 7.4152E-3},
1302  {0.01, 6.1472E-3, 6.6086E-3, 7.1246E-3, 8.3491E-3, 9.8871E-3, 1.1822E-2, 1.4261E-2, 1.7335E-2},
1303  {0.015, 1.63316E-2, 1.7572E-2, 1.8932E-2, 2.2053E-2, 2.5803E-2, 3.0308E-2, 3.5728E-2, 4.2258E-2},
1304  {0.02, 3.2634E-2, 3.4900E-2, 3.7348E-2, 4.2850E-2, 4.9278E-2, 5.6798E-2, 6.5610E-2, 7.5963E-2},
1305  {0.03, 7.9907E-2, 8.4544E-2, 8.9486E-2, 1.0032E-1, 1.1260E-1, 1.2656E-1, 1.4248E-1, 1.6071E-1},
1306  {0.04, 1.4523E-1, 1.5237E-1, 1.5985E-1, 1.7614E-1, 1.9434E-1, 2.1473E-1, 2.3766E-1, 2.6357E-1},
1307  {0.05, 2.2082E-1, 2.3036E-1, 2.4038E-1, 2.6199E-1, 2.8590E-1, 3.1248E-1, 3.4212E-1, 3.7536E-1},
1308  {0.06, 3.0423E-1, 3.1611E-1, 3.2854E-1, 3.5522E-1, 3.8459E-1, 4.1704E-1, 4.5306E-1, 4.9326E-1},
1309  {0.08, 4.8536E-1, 5.0156E-1, 5.1846E-1, 5.5453E-1, 5.9397E-1, 6.3728E-1, 6.8507E-1, 7.3810E-1},
1310  {0.1, 6.7586E-1, 6.9596E-1, 7.1688E-1, 7.6141E-1, 8.0992E-1, 8.6301E-1, 9.2142E-1, 9.8604E-1},
1311  {0.15, 1.1544, 1.1828, 1.2122, 1.2746, 1.3424, 1.4163, 1.4974, 1.5868},
1312  {0.2, 1.6167, 1.6517, 1.6880, 1.7650, 1.8484, 1.9394, 2.0390, 2.1489},
1313  {0.3, 2.3979, 2.4432, 2.4902, 2.5899, 2.6980, 2.8159, 2.9451, 3.0876},
1314  {0.4, 3.0502, 3.1034, 3.1586, 3.2758, 3.4030, 3.5416, 3.6938, 3.8620},
1315  {0.5, 3.5466, 3.6062, 3.6681, 3.7994, 3.9421, 4.0978, 4.2688, 4.4580},
1316  {0.6, 3.9620, 4.0270, 4.0945, 4.2378, 4.3935, 4.5636, 4.7506, 4.9576},
1317  {0.7, 4.3020, 4.3715, 4.4438, 4.5974, 4.7644, 4.9470, 5.1478, 5.3703},
1318  {0.8, 4.6336, 4.7072, 4.7837, 4.9463, 5.1233, 5.3169, 5.5300, 5.7661},
1319  {1.0, 5.2041, 5.2845, 5.3682, 5.5462, 5.7400, 5.9523, 6.1863, 6.4458},
1320  {1.2, 5.6182, 5.7044, 5.7940, 5.9848, 6.1927, 6.4206, 6.6719, 6.9510},
1321  {1.4, 5.9967, 6.0876, 6.1823, 6.3839, 6.6038, 6.8451, 7.1113, 7.4071},
1322  {1.5, 6.1652, 6.2583, 6.3553, 6.5618, 6.7871, 7.0344, 7.3073, 7.6107},
1323  {1.7, 6.4686, 6.5657, 6.6668, 6.8823, 7.1175, 7.3757, 7.6609, 7.9782},
1324  {2.0, 6.8577, 6.9600, 7.0666, 7.2937, 7.5418, 7.8143, 8.1156, 8.4510},
1325  {3.0, 7.7981, 7.9134, 8.0336, 8.2901, 8.5708, 8.8796, 9.2214, 9.6027},
1326  {5.0, 8.8978, 9.0297, 9.1673, 9.4612, 9.7834, 10.1384, 10.5323, 10.9722},
1327  {7.0, 9.4819, 9.6248, 9.7739, 10.0926, 10.4423, 10.8282, 11.2565, 11.7356}
1328  };
1329 
1330  const G4double bll1[28][10] = {
1331  {0.005, 3.6324E-5, 4.0609E-5, 4.5430E-5, 5.6969E-5, 7.1625E-5, 9.0279E-5, 1.1407E-4, 1.2834E-4, 1.4447E-4},
1332  {0.007, 1.8110E-4, 2.0001E-4, 2.2099E-4, 2.7006E-4, 3.3049E-4, 4.0498E-4, 4.9688E-4, 5.5061E-4, 6.1032E-4},
1333  {0.01, 8.6524E-4, 9.4223E-4, 1.0262E-3, 1.2178E-3, 1.4459E-3, 1.7174E-3, 2.0405E-3, 2.2245E-3, 2.4252E-3},
1334  {0.015, 4.2293E-3, 4.5314E-3, 4.8551E-3, 5.5731E-3, 6.3968E-3, 7.3414E-3, 8.4242E-3, 9.0236E-3, 9.6652E-3},
1335  {0.02, 1.1485E-2, 1.2172E-2, 1.2900E-2, 1.4486E-2, 1.6264E-2, 1.8256E-2, 2.0487E-2, 2.1702E-2, 2.2989E-2},
1336  {0.03, 3.9471E-2, 4.1270E-2, 4.3149E-2, 4.7163E-2, 5.1543E-2, 5.6423E-2, 6.1540E-2, 6.4326E-2, 6.7237E-2},
1337  {0.04, 8.4454E-2, 8.7599E-2, 9.0860E-2, 9.7747E-2, 1.0516E-1, 1.1313E-1, 1.2171E-1, 1.2625E-1, 1.3096E-1},
1338  {0.05, 1.4339E-1, 1.4795E-1, 1.5266E-1, 1.6253E-1, 1.7306E-1, 1.8430E-1, 1.9630E-1, 2.0261E-1, 2.0924E-1},
1339  {0.06, 2.1304E-1, 2.1899E-1, 2.2512E-1, 2.3794E-1, 2.5153E-1, 2.6596E-1, 2.8130E-1, 2.8934E-1, 2.9763E-1},
1340  {0.08, 3.7382E-1, 3.8241E-1, 3.9122E-1, 4.0955E-1, 4.2888E-1, 4.4928E-1, 4.7086E-1, 4.8212E-1, 4.9371E-1},
1341  {0.1, 5.5056E-1, 5.6151E-1, 5.7273E-1, 5.9601E-1, 6.2049E-1, 6.4627E-1, 6.7346E-1, 6.8762E-1, 7.0218E-1},
1342  {0.15, 1.0066, 1.0224, 1.0386, 1.0721, 1.1073, 1.1443, 1.1832, 1.2035, 1.2243},
1343  {0.2, 1.4376, 1.4572, 1.4773, 1.5188, 1.5624, 1.6083, 1.6566, 1.6817, 1.7076},
1344  {0.3, 2.1712, 2.1964, 2.2223, 2.2758, 2.3322, 2.3915, 2.4542, 2.4869, 2.5205},
1345  {0.4, 2.7500, 2.7793, 2.8094, 2.8719, 2.9377, 3.0072, 3.0807, 3.1192, 3.1587},
1346  {0.5, 3.2033, 3.2359, 3.2693, 3.3389, 3.4122, 3.4898, 3.5721, 3.6151, 3.6595},
1347  {0.6, 3.6038, 3.6391, 3.6753, 3.7506, 3.8303, 3.9146, 4.0042, 4.0511, 4.0995},
1348  {0.7, 3.9106, 3.9482, 3.9867, 4.0670, 4.1520, 4.2421, 4.3380, 4.3882, 4.4401},
1349  {0.8, 4.1790, 4.2185, 4.2590, 4.3437, 4.4333, 4.5285, 4.6298, 4.6830, 4.7380},
1350  {1.0, 4.6344, 4.6772, 4.7212, 4.8131, 4.9106, 5.0144, 5.1250, 5.1831, 5.2432},
1351  {1.2, 4.9787, 5.0242, 5.0711, 5.1689, 5.2729, 5.3837, 5.5050, 5.5642, 5.6287},
1352  {1.4, 5.2688, 5.3166, 5.3658, 5.4687, 5.5782, 5.6950, 5.8198, 5.8855, 5.9554},
1353  {1.5, 5.3966, 5.4454, 5.4957, 5.6009, 5.7128, 5.8323, 5.9601, 6.0274, 6.0972},
1354  {1.7, 5.6255, 5.6762, 5.7284, 5.8377, 5.9541, 6.0785, 6.2116, 6.2818, 6.3546},
1355  {2.0, 5.9170, 5.9701, 6.0248, 6.1395, 6.2618, 6.3925, 6.5327, 6.6066, 6.6833},
1356  {3.0, 6.6210, 6.6801, 6.7411, 6.8692, 7.0062, 7.1529, 7.3107, 7.3941, 7.4807},
1357  {5.0, 7.4620, 7.5288, 7.5977, 7.7428, 7.8982, 8.0653, 8.2454, 8.3409, 8.4402},
1358  {7.0, 7.7362, 7.8079, 7.8821, 8.0383, 8.2061, 8.3866, 8.5816, 8.6850, 8.7927}
1359  };
1360 
1361  const G4double bll2[28][10] = {
1362  {0.005, 1.8339E-4, 2.3330E-4, 2.9738E-4, 3.7977E-4, 4.2945E-4, 4.8582E-4, 6.2244E-4, 7.9858E-4, 1.0258E-3},
1363  {0.007, 7.5042E-4, 9.2355E-4, 1.1375E-3, 1.4021E-3, 1.5570E-3, 1.7292E-3, 2.1335E-3, 2.6335E-3, 3.2515E-3},
1364  {0.01, 2.8829E-3, 3.4275E-3, 4.0758E-3, 4.8457E-3, 5.2839E-3, 5.7617E-3, 6.8504E-3, 8.1442E-3, 9.6816E-3},
1365  {0.015, 1.1087E-2, 1.2716E-2, 1.4581E-2, 1.6717E-2, 1.7898E-2, 1.9163E-2, 2.1964E-2, 2.5173E-2, 2.8851E-2},
1366  {0.02, 2.5786E-2, 2.8922E-2, 3.2435E-2, 3.6371E-2, 3.8514E-2, 4.0784E-2, 4.5733E-2, 5.1288E-2, 5.7531E-2},
1367  {0.03, 7.3461E-2, 8.0264E-2, 8.7705E-2, 9.5852E-2, 1.0021E-1, 1.0478E-1, 1.1458E-1, 1.2535E-1, 1.3721E-1},
1368  {0.04, 1.4094E-1, 1.5172E-1, 1.6336E-1, 1.7596E-1, 1.8265E-1, 1.8962E-1, 2.0445E-1, 2.2058E-1, 2.3818E-1},
1369  {0.05, 2.2289E-1, 2.3762E-1, 2.5344E-1, 2.7045E-1, 2.7944E-1, 2.8877E-1, 3.0855E-1, 3.2995E-1, 3.5318E-1},
1370  {0.06, 3.1503E-1, 3.3361E-1, 3.5346E-1, 3.7473E-1, 3.8594E-1, 3.9756E-1, 4.2212E-1, 4.4861E-1, 4.7727E-1},
1371  {0.08, 5.1793E-1, 5.4368E-1, 5.7109E-1, 6.0032E-1, 6.1569E-1, 6.3159E-1, 6.6512E-1, 7.0119E-1, 7.4012E-1},
1372  {0.1, 7.3258E-1, 7.6481E-1, 7.9907E-1, 8.3556E-1, 8.5472E-1, 8.7454E-1, 9.1630E-1, 9.6119E-1, 1.0096},
1373  {0.15, 1.2677, 1.3137, 1.3626, 1.4147, 1.4421, 1.4703, 1.5300, 1.5942, 1.6636},
1374  {0.2, 1.7615, 1.8188, 1.8797, 1.9446, 1.9788, 2.0142, 2.0889, 2.1694, 2.2567},
1375  {0.3, 2.5909, 2.6658, 2.7457, 2.8312, 2.8762, 2.9231, 3.0222, 3.1295, 3.2463},
1376  {0.4, 3.2417, 3.3302, 3.4249, 3.5266, 3.5803, 3.6361, 3.7546, 3.8835, 4.0242},
1377  {0.5, 3.7527, 3.8523, 3.9591, 4.0741, 4.1350, 4.1983, 4.3330, 4.4799, 4.6408},
1378  {0.6, 4.2013, 4.3103, 4.4274, 4.5537, 4.6206, 4.6904, 4.8390, 5.0013, 5.1796},
1379  {0.7, 4.5493, 4.6664, 4.7925, 4.9286, 5.0009, 5.0762, 5.2370, 5.4129, 5.6066},
1380  {0.8, 4.8537, 4.9780, 5.1119, 5.2568, 5.3338, 5.4141, 5.5857, 5.7738, 5.9811},
1381  {1.0, 5.3701, 5.5066, 5.6540, 5.8138, 5.8989, 5.9878, 6.1780, 6.3870, 6.6179},
1382  {1.2, 5.7648, 5.9114, 6.0701, 6.2424, 6.3343, 6.4303, 6.6361, 6.8626, 7.1137},
1383  {1.4, 6.0976, 6.2530, 6.4214, 6.6044, 6.7021, 6.8043, 7.0237, 7.2655, 7.5338},
1384  {1.5, 6.2447, 6.4041, 6.5768, 6.7647, 6.8650, 6.9700, 7.1954, 7.4442, 7.7203},
1385  {1.7, 6.5087, 6.6752, 6.8558, 7.0526, 7.1578, 7.2679, 7.5045, 7.7660, 8.0565},
1386  {2.0, 6.8458, 7.0218, 7.2129, 7.4213, 7.5328, 7.6496, 7.9010, 8.1791, 8.4886},
1387  {3.0, 7.6647, 7.8644, 8.0819, 8.3189, 8.4475, 8.5814, 8.8702, 9.1908, 9.5488},
1388  {5.0, 8.6515, 8.8816, 9.1330, 9.4090, 9.5572, 9.7132, 10.0504, 10.4259, 10.8466},
1389  {7.0, 9.0221, 9.2724, 9.5464, 9.8477, 10.0099, 10.1805, 10.5499, 10.9622, 11.4250}
1390  };
1391 
1392  const G4double bll3[28][9] = {
1393  {0.005, 1.3190E-3, 1.4961E-3, 1.6974E-3, 2.1858E-3, 2.8163E-3, 3.6302E-3, 4.6814E-3, 6.0395E-3},
1394  {0.007, 4.0158E-3, 4.4623E-3, 4.9592E-3, 6.1257E-3, 7.5675E-3, 9.3502E-3, 1.1556E-2, 1.4290E-2},
1395  {0.01, 1.1509E-2, 1.2548E-2, 1.3681E-2, 1.6263E-2, 1.9336E-2, 2.2999E-2, 2.7370E-2, 3.2603E-2},
1396  {0.015, 3.3070E-2, 3.5408E-2, 3.7914E-2, 4.3483E-2, 4.9898E-2, 5.7304E-2, 6.5884E-2, 7.5861E-2},
1397  {0.02, 6.4555E-2, 6.8394E-2, 7.2472E-2, 8.1413E-2, 9.1539E-2, 1.0304E-1, 1.1617E-1, 1.3121E-1},
1398  {0.03, 1.5030E-1, 1.5101E-1, 1.5844E-1, 1.7451E-1, 1.9244E-1, 2.1244E-1, 2.3496E-1, 2.6044E-1},
1399  {0.04, 2.5743E-1, 2.6774E-1, 2.7855E-1, 3.0180E-1, 3.2751E-1, 3.5608E-1, 3.8803E-1, 4.2401E-1},
1400  {0.05, 3.7846E-1, 3.9195E-1, 4.0607E-1, 4.3635E-1, 4.6973E-1, 5.0672E-1, 5.4798E-1, 5.9436E-1},
1401  {0.06, 5.0839E-1, 5.2497E-1, 5.4230E-1, 5.7943E-1, 6.2028E-1, 6.6549E-1, 7.1589E-1, 7.7252E-1},
1402  {0.08, 7.8230E-1, 8.0474E-1, 8.2818E-1, 8.7836E-1, 9.3355E-1, 9.9462E-1, 1.0627, 1.1394},
1403  {0.1, 1.0621, 1.0900, 1.1192, 1.1816, 1.2503, 1.3265, 1.4116, 1.5076},
1404  {0.15, 1.7389, 1.7790, 1.8210, 1.9112, 2.0108, 2.1217, 2.2462, 2.3876},
1405  {0.2, 2.3516, 2.4024, 2.4556, 2.5701, 2.6971, 2.8391, 2.9994, 3.1822},
1406  {0.3, 3.3741, 3.4427, 3.5148, 3.6706, 3.8445, 4.0404, 4.2631, 4.5193},
1407  {0.4, 4.1788, 4.2620, 4.3496, 4.5398, 4.7530, 4.9944, 5.2703, 5.5895},
1408  {0.5, 4.8180, 4.9137, 5.0146, 5.2341, 5.4811, 5.7618, 6.0840, 6.4583},
1409  {0.6, 5.3765, 5.4830, 5.5954, 5.8406, 6.1173, 6.4326, 6.7958, 7.2191},
1410  {0.7, 5.8208, 5.9369, 6.0596, 6.3275, 6.6306, 6.9769, 7.3767, 7.8440},
1411  {0.8, 6.2109, 6.3355, 6.4674, 6.7558, 7.0827, 7.4570, 7.8900, 8.3972},
1412  {1.0, 6.8747, 7.0142, 7.1621, 7.4861, 7.8546, 8.2778, 8.7690, 9.3464},
1413  {1.2, 7.3933, 7.5454, 7.7068, 8.0612, 8.4652, 8.9302, 9.4713, 10.1090},
1414  {1.4, 7.8331, 7.9967, 8.1694, 8.5502, 8.9851, 9.4866, 10.0713, 10.7619},
1415  {1.5, 8.0286, 8.1967, 8.3753, 8.7681, 9.2181, 9.7352, 10.3399, 11.0546},
1416  {1.7, 8.3813, 8.5585, 8.7469, 9.1618, 9.6367, 10.1856, 10.8270, 11.5863},
1417  {2.0, 8.8352, 9.0245, 9.2260, 9.6701, 10.1793, 10.7688, 11.4590, 12.2775},
1418  {3.0, 9.9511, 10.1714, 10.4062, 10.9254, 11.5229, 12.2172, 13.0332, 14.0048},
1419  {5.0, 11.3211, 11.5818, 11.8601, 12.4771, 13.1898, 14.0213, 15.0024, 16.1752},
1420  {7.0, 11.9480, 12.2357, 12.5432, 13.2260, 14.0164, 14.9404, 16.0330, 17.3420}
1421  };
1422 
1423  G4double b, bs;
1424  for(i=0; i<nEtaK; ++i) {
1425 
1426  G4double et = eta[i];
1427  G4double loget = std::log(et);
1428  Eta[i] = et;
1429  //G4cout << "### eta["<<i<<"]="<<et<<" KShell: tet= "<<TheK[0]<<" - "<<TheK[nK-1]<<G4endl;
1430 
1431  for(j=0; j<nK; ++j) {
1432 
1433  if(j < 10) { b = bk2[i][10-j]; }
1434  else { b = bk1[i][20-j]; }
1435 
1436  CK[j][i] = SK[j]*loget + TK[j] - b;
1437 
1438  if(i == nEtaK-1) {
1439  ZK[j] = et*(et*et*CK[j][i] - et*UK[j] - VK[j]);
1440  //G4cout << "i= " << i << " j= " << j
1441  // << " CK[j][i]= " << CK[j][i]
1442  // << " ZK[j]= " << ZK[j] << " b= " << b << G4endl;
1443  }
1444  }
1445  //G4cout << G4endl;
1446  if(i < nEtaL) {
1447  //G4cout << " LShell:" <<G4endl;
1448  for(j=0; j<nL; ++j) {
1449 
1450  if(j < 8) {
1451  bs = bls3[i][8-j];
1452  b = bll3[i][8-j];
1453  } else if(j < 17) {
1454  bs = bls2[i][17-j];
1455  b = bll2[i][17-j];
1456  } else {
1457  bs = bls1[i][26-j];
1458  b = bll1[i][26-j];
1459  }
1460  G4double c = SL[j]*loget + TL[j];
1461  CL[j][i] = c - bs - 3.0*b;
1462  if(i == nEtaL-1) {
1463  VL[j] = et*(et*CL[j][i] - UL[j]);
1464  //G4cout << "i= " << i << " j= " << j
1465  // << " CL[j][i]= " << CL[j][i]
1466  // << " VL[j]= " << VL[j] << " b= " << b << " bs= " << bs
1467  // << " et= " << et << G4endl;
1468  //" UL= " << UL[j] << " TL= " << TL[j] << " SL= " << SL[j] <<G4endl;
1469  }
1470  }
1471  //G4cout << G4endl;
1472  }
1473  }
1474  const G4double hm[53] = {
1475  12.0, 12.0, 12.0, 12.0, 11.9, 11.7, 11.5, 11.2, 10.8, 10.4,
1476  10.0, 9.51, 8.97, 8.52, 8.03, 7.46, 6.95, 6.53, 6.18, 5.87,
1477  5.61, 5.39, 5.19, 5.01, 4.86, 4.72, 4.62, 4.53, 4.44, 4.38,
1478  4.32, 4.26, 4.20, 4.15, 4.1, 4.04, 4.00, 3.95, 3.93, 3.91,
1479  3.90, 3.89, 3.89, 3.88, 3.88, 3.88, 3.88, 3.88, 3.89, 3.89,
1480  3.90, 3.92, 3.93 };
1481  const G4double hn[31] = {
1482  75.5, 61.9, 52.2, 45.1, 39.6, 35.4, 31.9, 29.1, 27.2, 25.8,
1483  24.5, 23.6, 22.7, 22.0, 21.4, 20.9, 20.5, 20.2, 19.9, 19.7,
1484  19.5, 19.3, 19.2, 19.1, 18.4, 18.8, 18.7, 18.6, 18.5, 18.4,
1485  18.2
1486  };
1487  for(i=0; i<53; ++i) {HM[i] = hm[i];}
1488  for(i=0; i<31; ++i) {HN[i] = hn[i];}
1489 
1490  const G4double xzk[34] = { 11.7711,
1491  13.3669, 15.5762, 17.1715, 18.7667, 20.8523, 23.0606, 24.901, 26.9861, 29.4394, 31.77,
1492  34.3457, 37.4119, 40.3555, 42.3177, 44.7705, 47.2234, 50.78, 53.8458, 56.4214, 58.3834,
1493  60.9586, 63.6567, 66.5998, 68.807, 71.8728, 74.5706, 77.3911, 81.8056, 85.7297, 89.8988,
1494  93.4549, 96.2753, 99.709};
1495  const G4double yzk[34] = { 0.70663,
1496  0.72033, 0.73651, 0.74647, 0.75518, 0.76388, 0.77258, 0.78129, 0.78625, 0.7937, 0.79991,
1497  0.80611, 0.8123, 0.8185, 0.82097, 0.82467, 0.82838, 0.83457, 0.83702, 0.84198, 0.8432,
1498  0.84565, 0.84936, 0.85181, 0.85303, 0.85548, 0.85794, 0.8604, 0.86283, 0.86527, 0.86646,
1499  0.86891, 0.87011, 0.87381};
1500 
1501  const G4double xzl[36] = { 15.5102,
1502  16.7347, 17.9592, 19.551, 21.0204, 22.6122, 24.9388, 27.3878, 29.5918, 31.3061, 32.898,
1503  34.4898, 36.2041, 38.4082, 40.3674, 42.5714, 44.898, 47.4694, 49.9184, 52.7347, 55.9184,
1504  59.3469, 61.9184, 64.6122, 67.4286, 71.4694, 75.2653, 78.3265, 81.2653, 85.551, 88.7347,
1505  91.551, 94.2449, 96.449, 98.4082, 99.7551};
1506  const G4double yzl[36] = { 0.29875,
1507  0.31746, 0.33368, 0.35239, 0.36985, 0.38732, 0.41102, 0.43472, 0.45343, 0.4659, 0.47713,
1508  0.4896, 0.50083, 0.51331, 0.52328, 0.53077, 0.54075, 0.54823, 0.55572, 0.56445, 0.57193,
1509  0.58191, 0.5869, 0.59189, 0.60062, 0.60686, 0.61435, 0.61809, 0.62183, 0.62931, 0.6343,
1510  0.6368, 0.64054, 0.64304, 0.64428, 0.64678};
1511 
1512  ThetaK = new G4LPhysicsFreeVector(34, xzk[0], xzk[33]);
1513  ThetaL = new G4LPhysicsFreeVector(36, xzl[0], xzl[35]);
1514  for(i=0; i<34; ++i) { ThetaK->PutValues(i, xzk[i], yzk[i]); }
1515  for(i=0; i<36; ++i) { ThetaL->PutValues(i, xzl[i], yzl[i]); }
1516  ThetaK->SetSpline(true);
1517  ThetaL->SetSpline(true);
1518 
1519  const G4double coseb[14] = {0.0,0.05,0.1,0.15,0.2,0.3,0.4,0.5,0.6,0.8,
1520  1.0,1.2,1.5,2.0};
1521  const G4double cosxi[14] = {1.0000, 0.9905, 0.9631, 0.9208, 0.8680,
1522  0.7478, 0.6303, 0.5290, 0.4471, 0.3323,
1523  0.2610, 0.2145, 0.1696, 0.1261};
1524  for(i=0; i<14; ++i) {
1525  COSEB[i] = coseb[i];
1526  COSXI[i] = cosxi[i];
1527  }
1528 
1529  for(i=1; i<100; ++i) {
1530  Z23[i] = std::pow(G4double(i),0.23);
1531  }
1532 }
1533 
1534 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
1535 
ThreeVector shoot(const G4int Ap, const G4int Af)
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:224
void PutValues(size_t binNumber, G4double binValue, G4double dataValue)
G4double HighOrderCorrections(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy, G4double cutEnergy)
G4double GetAdensity() const
G4double DensityCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
const char * p
Definition: xmltok.h:285
const G4String & GetName() const
Definition: G4Material.hh:176
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
Definition: G4IonTable.cc:449
G4double GetX1density() const
G4double GetZ() const
Definition: G4Element.hh:131
G4double GetZ13(G4double Z)
G4double EffectiveChargeSquareRatio(const G4ParticleDefinition *p, const G4Material *material, G4double kineticEnergy)
G4double MottCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetTaul() const
G4double EffectiveChargeCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double BlochCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetA() const
Definition: G4Element.hh:138
int G4int
Definition: G4Types.hh:78
static G4NistManager * Instance()
G4double SpinCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
const G4String & GetParticleName() const
G4int GetAtomicNumber() const
void AddStoppingData(G4int Z, G4int A, const G4String &materialName, G4PhysicsVector *dVector)
void SetSpline(G4bool)
function g(Y1, Y2, PT2)
Definition: hijing1.383.f:5205
double precision function energy(A, Z)
Definition: dpm25nuc6.f:4106
G4IonTable * GetIonTable() const
G4GLOB_DLL std::ostream G4cout
G4double GetElectronDensity() const
Definition: G4Material.hh:215
G4double NuclearDEDX(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy, G4bool fluct=true)
bool G4bool
Definition: G4Types.hh:79
G4double IonBarkasCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double iz
Definition: TRTMaterials.hh:39
void PutValue(size_t index, G4double theValue)
G4double BarkasCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double IonHighOrderCorrections(const G4ParticleDefinition *, const G4MaterialCutsCouple *, G4double kineticEnergy)
float proton_mass_c2
Definition: hepunit.py:275
const G4int nmax
float electron_mass_c2
Definition: hepunit.py:274
G4double Energy(size_t index) const
G4double Value(G4double theEnergy, size_t &lastidx) const
G4double GetTotNbOfAtomsPerVolume() const
Definition: G4Material.hh:207
G4double ShellCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
static G4ProductionCutsTable * GetProductionCutsTable()
static G4GenericIon * GenericIon()
Definition: G4GenericIon.cc:93
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
Definition: G4VEmModel.cc:236
G4double GetX0density() const
G4double GetPDGMass() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
static G4ParticleTable * GetParticleTable()
G4double GetCdensity() const
G4double * GetShellCorrectionVector() const
static G4int GetNumberOfElectrons(G4int Z, G4int SubshellNb)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double KShellCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double LShellCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetMeanExcitationEnergy() const
#define G4endl
Definition: G4ios.hh:61
G4double ComputeIonCorrections(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
double G4double
Definition: G4Types.hh:76
G4double ShellCorrectionSTD(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
float amu_c2
Definition: hepunit.py:277
G4double GetPDGCharge() const
G4double GetMdensity() const
virtual ~G4EmCorrections()
G4double Bethe(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
const G4Material * GetMaterial() const
static G4int GetNumberOfShells(G4int Z)