source: trunk/source/processes/electromagnetic/utils/src/G4EmCorrections.cc @ 961

Last change on this file since 961 was 961, checked in by garnier, 15 years ago

update processes

File size: 61.5 KB
Line 
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,v 1.51 2008/12/18 13:01:44 gunter Exp $
27// GEANT4 tag $Name: geant4-09-02-ref-02 $
28//
29// -------------------------------------------------------------------
30//
31// GEANT4 Class
32//
33// File name:     G4EmCorrections
34//
35// Author:        Vladimir Ivanchenko
36//
37// Creation date: 13.01.2005
38//
39// Modifications:
40// 05.05.2005 V.Ivanchenko Fix misprint in Mott term
41// 26.11.2005 V.Ivanchenko Fix effective charge for heavy ions using original paper
42// 28.04.2006 V.Ivanchenko General cleanup, add finite size corrections
43// 13.05.2006 V.Ivanchenko Add corrections for ion stopping
44// 08.05.2007 V.Ivanchenko Use G4IonTable for ion mass instead of NistTable to avoid
45//                         division by zero
46// 29.02.2008 V.Ivanchenko use expantions for log and power function
47// 21.04.2008 Updated computations for ions (V.Ivanchenko)
48// 20.05.2008 Removed Finite Size correction (V.Ivanchenko)
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 "G4ParticleTable.hh"
62#include "G4IonTable.hh"
63#include "G4VEmModel.hh"
64#include "G4Proton.hh"
65#include "G4GenericIon.hh"
66#include "G4LPhysicsFreeVector.hh"
67#include "G4PhysicsLogVector.hh"
68#include "G4ProductionCutsTable.hh"
69#include "G4MaterialCutsCouple.hh"
70
71//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
72
73G4EmCorrections::G4EmCorrections()
74{
75  particle   = 0;
76  curParticle= 0;
77  material   = 0;
78  curMaterial= 0;
79  curVector  = 0;
80  kinEnergy  = 0.0;
81  ionLEModel = 0;
82  ionHEModel = 0;
83  nIons      = 0;
84  verbose    = 1;
85  ncouples   = 0;
86  massFactor = 1.0;
87  eth        = 2.0*MeV;
88  nbinCorr   = 20;
89  eCorrMin   = 25.*keV;
90  eCorrMax   = 250.*MeV;
91  nist = G4NistManager::Instance();
92  ionTable = G4ParticleTable::GetParticleTable()->GetIonTable();
93  Initialise();
94}
95
96//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
97
98G4EmCorrections::~G4EmCorrections()
99{
100  for(G4int i=0; i<nIons; i++) {delete stopData[i];}
101}
102
103//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
104
105G4double G4EmCorrections::HighOrderCorrections(const G4ParticleDefinition* p,
106                                               const G4Material* mat,
107                                               G4double e, G4double)
108{
109// . Z^3 Barkas effect in the stopping power of matter for charged particles
110//   J.C Ashley and R.H.Ritchie
111//   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
112//   and ICRU49 report
113//   valid for kineticEnergy < 0.5 MeV
114//   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
115
116  SetupKinematics(p, mat, e);
117  if(tau <= 0.0) return 0.0;
118
119  G4double Barkas = BarkasCorrection (p, mat, e);
120  G4double Bloch  = BlochCorrection (p, mat, e);
121  G4double Mott   = MottCorrection (p, mat, e);
122
123  G4double sum = (2.0*(Barkas + Bloch) + Mott);
124
125  if(verbose > 1)
126    G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
127           << " Bloch= " << Bloch << " Mott= " << Mott
128           << " Sum= " << sum << G4endl; 
129
130  sum *= material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
131  return sum;
132}
133
134//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
135
136G4double G4EmCorrections::IonBarkasCorrection(const G4ParticleDefinition* p,
137                                              const G4Material* mat,
138                                              G4double e)
139{
140// . Z^3 Barkas effect in the stopping power of matter for charged particles
141//   J.C Ashley and R.H.Ritchie
142//   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
143//   and ICRU49 report
144//   valid for kineticEnergy < 0.5 MeV
145
146  SetupKinematics(p, mat, e);
147  G4double res = 0.0;
148  if(tau > 0.0) 
149    res = 2.0*BarkasCorrection(p, mat, e)*
150      material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
151  return res;
152}
153
154//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
155
156G4double G4EmCorrections::ComputeIonCorrections(const G4ParticleDefinition* p,
157                                                const G4Material* mat,
158                                                G4double e)
159{
160// . Z^3 Barkas effect in the stopping power of matter for charged particles
161//   J.C Ashley and R.H.Ritchie
162//   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
163//   and ICRU49 report
164//   valid for kineticEnergy < 0.5 MeV
165//   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
166  SetupKinematics(p, mat, e);
167  if(tau <= 0.0) return 0.0;
168
169  G4double Barkas = BarkasCorrection (p, mat, e);
170  G4double Bloch  = BlochCorrection (p, mat, e);
171  G4double Mott   = MottCorrection (p, mat, e);
172
173  G4double sum = 2.0*(Barkas*(charge - 1.0)/charge + Bloch) + Mott;
174
175  if(verbose > 1) {
176    G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
177           << " Bloch= " << Bloch << " Mott= " << Mott
178           << " Sum= " << sum << G4endl; 
179  }
180  sum *= material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
181
182  if(verbose > 1) G4cout << " Sum= " << sum << G4endl; 
183  return sum;
184}
185
186//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
187
188G4double G4EmCorrections::IonHighOrderCorrections(const G4ParticleDefinition* p,
189                                                  const G4MaterialCutsCouple* couple,
190                                                  G4double e)
191{
192// . Z^3 Barkas effect in the stopping power of matter for charged particles
193//   J.C Ashley and R.H.Ritchie
194//   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
195//   and ICRU49 report
196//   valid for kineticEnergy < 0.5 MeV
197//   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
198
199  G4double sum = 0.0;
200
201  if(ionHEModel) {
202    G4int Z = G4int(p->GetPDGCharge()/eplus + 0.5);
203    if(Z >= 100)   Z = 99;
204    else if(Z < 1) Z = 1;
205
206    // fill vector
207    if(thcorr[Z].size() == 0) {
208      thcorr[Z].resize(ncouples);
209      G4double ethscaled = eth*p->GetPDGMass()/proton_mass_c2;
210
211      for(size_t i=0; i<ncouples; i++) {
212        (thcorr[Z])[i] = ethscaled*ComputeIonCorrections(p, currmat[i], ethscaled);
213        //G4cout << i << ". ethscaled= " << ethscaled
214        //<< " corr= " << (thcorr[Z])[i]/ethscaled << G4endl;
215      } 
216    } 
217    G4double rest = (thcorr[Z])[couple->GetIndex()];
218
219    sum = ComputeIonCorrections(p,couple->GetMaterial(),e) - rest/e;
220
221    if(verbose > 1) G4cout << " Sum= " << sum << " dSum= " << rest/e << G4endl; 
222  }
223  return sum;
224}
225
226//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
227
228G4double G4EmCorrections::Bethe(const G4ParticleDefinition* p,
229                                const G4Material* mat, 
230                                G4double e)
231{
232  SetupKinematics(p, mat, e);
233  G4double eexc  = material->GetIonisation()->GetMeanExcitationEnergy();
234  G4double eexc2 = eexc*eexc;
235  G4double dedx = 0.5*std::log(2.0*electron_mass_c2*bg2*tmax/eexc2)-beta2;
236  return dedx;
237}
238
239//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
240
241G4double G4EmCorrections::SpinCorrection(const G4ParticleDefinition* p,
242                                         const G4Material* mat,
243                                         G4double e)
244{
245  SetupKinematics(p, mat, e);
246  G4double dedx  = 0.5*tmax/(kinEnergy + mass);
247  return 0.5*dedx*dedx;
248}
249
250//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
251
252G4double G4EmCorrections:: KShellCorrection(const G4ParticleDefinition* p,
253                                            const G4Material* mat, 
254                                            G4double e)
255{
256  SetupKinematics(p, mat, e);
257  G4double term = 0.0;
258  for (G4int i = 0; i<numberOfElements; i++) {
259
260    G4double Z = (*theElementVector)[i]->GetZ();
261    G4int   iz = G4int(Z);
262    G4double f = 1.0;
263    G4double Z2= (Z-0.3)*(Z-0.3);
264    if(1 == iz) {
265      f  = 0.5;
266      Z2 = 1.0;
267    }
268    G4double e0= 13.6*eV*Z2;
269    term += f*atomDensity[i]*KShell(shells.GetBindingEnergy(iz,0)/e0,ba2/Z2)/Z;
270  }
271
272  term /= material->GetTotNbOfAtomsPerVolume();
273
274  return term;
275}
276
277//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
278
279G4double G4EmCorrections:: LShellCorrection(const G4ParticleDefinition* p,
280                                            const G4Material* mat, 
281                                            G4double e)
282{
283  SetupKinematics(p, mat, e);
284  G4double term = 0.0;
285  for (G4int i = 0; i<numberOfElements; i++) {
286
287    G4double Z = (*theElementVector)[i]->GetZ();
288    G4int   iz = G4int(Z);
289    if(2 < iz) {
290      G4double Zeff = Z - ZD[10];
291      if(iz < 10) Zeff = Z - ZD[iz];
292      G4double Z2= Zeff*Zeff;
293      G4double e0= 13.6*eV*Z2*0.25;
294      G4double f = 0.125;
295      G4int nmax = std::min(4,shells.GetNumberOfShells(iz));
296      for(G4int j=1; j<nmax; j++) {
297        G4double ne = G4double(shells.GetNumberOfElectrons(iz,j));
298        G4double e1 = shells.GetBindingEnergy(iz,j);
299        //   G4cout << "LShell: j= " << j << " ne= " << ne << " e(eV)= " << e/eV
300        //  << " e0(eV)= " << e0/eV << G4endl;
301        term += f*ne*atomDensity[i]*LShell(e1/e0,ba2/Z2)/Z;
302      }
303    }
304  }
305
306  term /= material->GetTotNbOfAtomsPerVolume();
307
308  return term;
309}
310
311//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
312
313G4double G4EmCorrections::KShell(G4double tet, G4double eta)
314{
315  G4double corr = 0.0;
316
317  G4double x = tet;
318  if(tet < TheK[0]) x =  TheK[0]; 
319  G4int itet = Index(x, TheK, nK);
320
321  // assimptotic case
322  if(eta >= Eta[nEtaK-1]) {
323    corr = (Value(x, TheK[itet], TheK[itet+1], UK[itet], UK[itet+1]) + 
324            Value(x, TheK[itet], TheK[itet+1], VK[itet], VK[itet+1])/eta +
325            Value(x, TheK[itet], TheK[itet+1], ZK[itet], ZK[itet+1])/(eta*eta))/eta;
326  } else {
327    G4double y = eta;
328    if(eta < Eta[0])  y =  Eta[0];
329    G4int ieta = Index(y, Eta, nEtaK);
330    corr = Value2(x, y, TheK[itet], TheK[itet+1], Eta[ieta], Eta[ieta+1],
331                  CK[itet][ieta], CK[itet+1][ieta], 
332                  CK[itet][ieta+1], CK[itet+1][ieta+1]);
333    //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheK[itet]
334    //<<" "<< TheK[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
335    //       <<" CK= " << CK[itet][ieta]<<" "<< CK[itet+1][ieta]
336    //<<" "<< CK[itet][ieta+1]<<" "<< CK[itet+1][ieta+1]<<G4endl;
337  }
338  //G4cout << "Kshell:  tet= " << tet << " eta= " << eta << "  C= " << corr
339  //<< " itet,ieta= " << itet <<G4endl;
340  return corr;
341}
342
343//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
344
345G4double G4EmCorrections::LShell(G4double tet, G4double eta)
346{
347  G4double corr = 0.0;
348
349  G4double x = tet;
350  if(tet < TheL[0]) x =  TheL[0];
351  G4int itet = Index(x, TheL, nL);
352
353  // assimptotic case
354  if(eta >= Eta[nEtaL-1]) {
355    corr = (Value(x, TheL[itet], TheL[itet+1], UL[itet], UL[itet+1])
356          + Value(x, TheL[itet], TheL[itet+1], VL[itet], VL[itet+1])/eta
357           )/eta;
358  } else {
359    G4double y = eta;
360    if(eta < Eta[0])  y =  Eta[0];
361    G4int ieta = Index(y, Eta, nEtaL);
362    corr = Value2(x, y, TheL[itet], TheL[itet+1], Eta[ieta], Eta[ieta+1],
363               CL[itet][ieta], CL[itet+1][ieta], CL[itet][ieta+1], CL[itet+1][ieta+1]);
364    //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheL[itet]
365    //<<" "<< TheL[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
366    //       <<" CL= " << CL[itet][ieta]<<" "<< CL[itet+1][ieta]
367    //<<" "<< CL[itet][ieta+1]<<" "<< CL[itet+1][ieta+1]<<G4endl;
368  }
369  //  G4cout << "Lshell:  tet= " << tet << " eta= " << eta << "  C= " << corr << " itet= " << itet <<G4endl;
370  return corr;
371}
372
373//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
374
375G4double G4EmCorrections::ShellCorrectionSTD(const G4ParticleDefinition* p,
376                                             const G4Material* mat, 
377                                             G4double e)
378{
379  SetupKinematics(p, mat, e);
380  G4double taulim= 8.0*MeV/mass;
381  G4double bg2lim= taulim * (taulim+2.0);
382
383  G4double* shellCorrectionVector =
384            material->GetIonisation()->GetShellCorrectionVector();
385  G4double sh = 0.0;
386  G4double x  = 1.0;
387  G4double taul  = material->GetIonisation()->GetTaul();
388
389  if ( bg2 >= bg2lim ) {
390    for (G4int k=0; k<3; k++) {
391        x *= bg2 ;
392        sh += shellCorrectionVector[k]/x;
393    }
394
395  } else {
396    for (G4int k=0; k<3; k++) {
397        x *= bg2lim ;
398        sh += shellCorrectionVector[k]/x;
399    }
400    sh *= std::log(tau/taul)/std::log(taulim/taul);
401  }
402  sh *= 0.5;
403  return sh;
404}
405
406
407//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
408
409G4double G4EmCorrections::ShellCorrection(const G4ParticleDefinition* p,
410                                          const G4Material* mat,
411                                          G4double e)
412{
413  SetupKinematics(p, mat, e);
414
415  G4double term = 0.0;
416
417  for (G4int i = 0; i<numberOfElements; i++) {
418
419    G4double Z = (*theElementVector)[i]->GetZ();
420    G4int   iz = G4int(Z);
421    G4double Z2= (Z-0.3)*(Z-0.3);
422    G4double f = 1.0;
423    if(1 == iz) {
424      f  = 0.5;
425      Z2 = 1.0;
426    }
427    G4double e0= 13.6*eV*Z2;
428    term += f*atomDensity[i]*KShell(shells.GetBindingEnergy(iz,0)/e0,ba2/Z2)/Z;
429    if(2 < iz) {
430      G4double Zeff = Z - ZD[10];
431      if(iz < 10) Zeff = Z - ZD[iz];
432      Z2= Zeff*Zeff;
433      e0= 13.6*eV*Z2*0.25;
434      f = 0.125;
435      G4double eta = ba2/Z2;
436      G4int ntot = shells.GetNumberOfShells(iz);
437      G4int nmax = std::min(4, ntot);
438      G4double norm   = 0.0;
439      G4double eshell = 0.0;
440      for(G4int j=1; j<nmax; j++) {
441        G4double x = G4double(shells.GetNumberOfElectrons(iz,j));
442        G4double e1 = shells.GetBindingEnergy(iz,j);
443        norm   += x;
444        eshell += e1*x;
445        term += f*x*atomDensity[i]*LShell(e1/e0,eta)/Z;
446      }
447      if(10 < iz) {
448        eshell /= norm;
449        G4double eeff = eshell*eta;
450        for(G4int k=nmax; k<ntot; k++) {
451          G4double x = G4double(shells.GetNumberOfElectrons(iz,k));
452          G4double e1 = shells.GetBindingEnergy(iz,k);
453          term += f*x*atomDensity[i]*LShell(e1/e0,eeff/e1)/Z;
454          //          term += f*x*atomDensity[i]*LShell(eshell/e0,eeff/e1)/Z;
455        }
456        /*
457        if(28 >= iz) {
458          term += f*(Z - 10.)*atomDensity[i]*LShell(eshell,HM[iz-11]*eta)/Z;
459        } else if(32 >= iz) {
460          term += f*18.0*atomDensity[i]*LShell(eshell,HM[iz-11]*eta)/Z;
461        } else if(60 >= iz) {
462          term += f*18.0*atomDensity[i]*LShell(eshell,HM[iz-11]*eta)/Z;
463          term += f*(Z - 28.)*atomDensity[i]*LShell(eshell,HN[iz-33]*eta)/Z;
464        } else {
465          term += f*18.0*atomDensity[i]*LShell(eshell,HM[53]*eta)/Z;
466          term += f*32.0*atomDensity[i]*LShell(eshell,HN[30]*eta)/Z;
467          term += f*(Z - 60.)*atomDensity[i]*LShell(eshell,150.*eta)/Z;
468        }
469        */
470      }
471    }
472    //term += atomDensity[i]*MSH[iz]/(ba2*ba2);
473  }
474
475  term /= material->GetTotNbOfAtomsPerVolume();
476  return term;
477}
478
479//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
480
481G4double G4EmCorrections::DensityCorrection(const G4ParticleDefinition* p,
482                                            const G4Material* mat,
483                                            G4double e)
484{
485  SetupKinematics(p, mat, e);
486
487  G4double cden  = material->GetIonisation()->GetCdensity();
488  G4double mden  = material->GetIonisation()->GetMdensity();
489  G4double aden  = material->GetIonisation()->GetAdensity();
490  G4double x0den = material->GetIonisation()->GetX0density();
491  G4double x1den = material->GetIonisation()->GetX1density();
492
493  G4double twoln10 = 2.0*std::log(10.0);
494  G4double dedx = 0.0;
495
496  // density correction
497  G4double x = std::log(bg2)/twoln10;
498  if ( x >= x0den ) {
499    dedx = twoln10*x - cden ;
500    if ( x < x1den ) dedx += aden*std::pow((x1den-x),mden) ;
501  }
502
503  return dedx;
504}
505
506//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
507
508G4double G4EmCorrections::BarkasCorrection(const G4ParticleDefinition* p,
509                                           const G4Material* mat, 
510                                           G4double e)
511{
512// . Z^3 Barkas effect in the stopping power of matter for charged particles
513//   J.C Ashley and R.H.Ritchie
514//   Physical review B Vol.5 No.7 1 April 1972 pp. 2393-2397
515//   valid for kineticEnergy > 0.5 MeV
516
517  SetupKinematics(p, mat, e);
518  G4double BarkasTerm = 0.0;
519
520  for (G4int i = 0; i<numberOfElements; i++) {
521
522    G4double Z = (*theElementVector)[i]->GetZ();
523    G4int iz = G4int(Z);
524
525    G4double X = ba2 / Z;
526    G4double b = 1.3;
527    if(1 == iz) {
528      if(material->GetName() == "G4_lH2") b = 0.6;
529      else                                b = 1.8;
530    }
531    else if(2 == iz)  b = 0.6;
532    else if(10 >= iz) b = 1.8;
533    else if(17 >= iz) b = 1.4;
534    else if(18 == iz) b = 1.8;
535    else if(25 >= iz) b = 1.4;
536    else if(50 >= iz) b = 1.35;
537
538    G4double W = b/std::sqrt(X);
539
540    G4double val;
541    if(W <= engBarkas[0])       val =  corBarkas[0];
542    else if(W >= engBarkas[46]) val =  corBarkas[46]*engBarkas[46]/W;
543    else {
544      G4int iw = Index(W, engBarkas, 47);
545      val = Value(W, engBarkas[iw], engBarkas[iw+1], 
546                  corBarkas[iw], corBarkas[iw+1]);
547    }
548    //    G4cout << "i= " << i << " b= " << b << " W= " << W
549    // << " Z= " << Z << " X= " << X << " val= " << val<< G4endl;
550    BarkasTerm += val*atomDensity[i] / (std::sqrt(Z*X)*X);
551  }
552
553  BarkasTerm *= 1.29*charge/material->GetTotNbOfAtomsPerVolume();
554  return BarkasTerm;
555}
556
557//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
558
559G4double G4EmCorrections::BlochCorrection(const G4ParticleDefinition* p,
560                                          const G4Material* mat,
561                                          G4double e)
562{
563  SetupKinematics(p, mat, e);
564
565  G4double y2 = q2/ba2;
566
567  G4double term = 1.0/(1.0 + y2);
568  G4double del;
569  G4double j = 1.0;
570  do {
571    j += 1.0;
572    del = 1.0/(j* (j*j + y2));
573    term += del;
574  } while (del > 0.01*term);
575
576  return -y2*term;
577}
578
579//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
580
581G4double G4EmCorrections::MottCorrection(const G4ParticleDefinition* p,
582                                         const G4Material* mat, 
583                                         G4double e)
584{
585  SetupKinematics(p, mat, e);
586  G4double mterm = CLHEP::pi*fine_structure_const*beta*charge;
587  return mterm;
588}
589
590//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
591
592G4double G4EmCorrections::NuclearDEDX(const G4ParticleDefinition* p,
593                                      const G4Material* mat,
594                                      G4double e,
595                                      G4bool fluct)
596{
597  G4double nloss = 0.0;
598  if(e <= 0.0) return nloss; 
599  SetupKinematics(p, mat, e);
600
601  lossFlucFlag = fluct;
602
603  // Projectile nucleus
604  G4double z1 = std::abs(particle->GetPDGCharge()/eplus);
605  G4double m1 = mass/amu_c2;
606
607  //  loop for the elements in the material
608  for (G4int iel=0; iel<numberOfElements; iel++) {
609    const G4Element* element = (*theElementVector)[iel] ;
610    G4double z2 = element->GetZ();
611    G4double m2 = element->GetA()*mole/g ;
612    nloss += (NuclearStoppingPower(kinEnergy, z1, z2, m1, m2))
613           * atomDensity[iel] ;
614  }
615  nloss *= theZieglerFactor;
616  return nloss;
617}
618
619//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
620
621G4double G4EmCorrections::NuclearStoppingPower(G4double kineticEnergy,
622                                               G4double z1, G4double z2,
623                                               G4double m1, G4double m2)
624{
625  G4double energy = kineticEnergy/keV ;  // energy in keV
626  G4double nloss = 0.0;
627 
628  G4double rm;
629  if(z1 > 1.5) rm = (m1 + m2) * ( Z23[G4int(z1)] + Z23[G4int(z2)] ) ;
630  else         rm = (m1 + m2) * nist->GetZ13(G4int(z2));
631
632  G4double er = 32.536 * m2 * energy / ( z1 * z2 * rm ) ;  // reduced energy
633
634  if (er >= ed[0])       nloss = a[0];
635  else {
636    // the table is inverse in energy
637    for (G4int i=102; i>=0; i--)
638    {
639      if (er <= ed[i]) {
640        nloss = (a[i] - a[i+1])*(er - ed[i+1])/(ed[i] - ed[i+1]) + a[i+1];
641        break;
642      }
643    }
644  }
645
646  // Stragling
647  if(lossFlucFlag) {
648    //    G4double sig = 4.0 * m1 * m2 / ((m1 + m2)*(m1 + m2)*
649    //              (4.0 + 0.197*std::pow(er,-1.6991)+6.584*std::pow(er,-1.0494))) ;
650    G4double sig = 4.0 * m1 * m2 / ((m1 + m2)*(m1 + m2)*
651                                    (4.0 + 0.197/(er*er) + 6.584/er));
652
653    nloss *= G4RandGauss::shoot(1.0,sig) ;
654  }
655   
656  nloss *= 8.462 * z1 * z2 * m1 / rm ; // Return to [ev/(10^15 atoms/cm^2]
657
658  if ( nloss < 0.0) nloss = 0.0 ;
659
660  return nloss;
661}
662
663//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
664
665G4double G4EmCorrections::EffectiveChargeCorrection(const G4ParticleDefinition* p,
666                                                    const G4Material* mat,
667                                                    G4double ekin)
668{
669  G4double factor = 1.0;
670  if(p->GetPDGCharge() <= 2.5*eplus || nIons <= 0) return factor;
671  /*
672  if(verbose > 1) {
673    G4cout << "EffectiveChargeCorrection: " << p->GetParticleName()
674           << " in " << mat->GetName()
675           << " ekin(MeV)= " << ekin/MeV << G4endl;
676  }
677  */
678  if(p != curParticle || mat != curMaterial) {
679    curParticle = p;
680    curMaterial = mat;
681    curVector   = 0;
682    currentZ = p->GetAtomicNumber();
683    if(verbose > 1) {
684      G4cout << "G4EmCorrections::EffectiveChargeCorrection: Zion= " 
685             << currentZ << " Aion= " << p->GetPDGMass()/amu_c2 << G4endl;
686    }
687    massFactor = proton_mass_c2/p->GetPDGMass();
688    idx = -1;
689    G4int dz = 1000;
690
691    for(G4int i=0; i<nIons; i++) {
692      if(materialList[i] == mat) {
693        G4int delz = currentZ - Zion[i];
694        if(delz < 0) delz = -delz;
695        if(delz < dz) {
696          idx = i;
697          dz = delz;
698          if(0 == delz) break;
699        }
700      }
701    }
702    //    G4cout << " idx= " << idx << " dz= " << dz << G4endl;
703    if(idx > 0) {
704      if(!ionList[idx]) BuildCorrectionVector(); 
705      if(ionList[idx])  curVector = stopData[idx];
706    }
707  }
708  if(curVector) {
709    G4bool b;
710    factor = curVector->GetValue(ekin*massFactor,b);
711    if(verbose > 1) {
712      G4cout << "E= " << ekin << " factor= " << factor << " massfactor= " 
713             << massFactor << G4endl;
714    }
715  }
716  return factor;
717}
718
719//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
720
721void G4EmCorrections::AddStoppingData(G4int Z, G4int A,
722                                      const G4String& mname,
723                                      G4PhysicsVector* dVector)
724{
725  G4int i = 0;
726  for(; i<nIons; i++) {
727    if(Z == Zion[i] && A == Aion[i] && mname == materialName[i]) break;
728  }
729  if(i == nIons) {
730    Zion.push_back(Z);
731    Aion.push_back(A);
732    materialName.push_back(mname);
733    materialList.push_back(0);
734    ionList.push_back(0);
735    stopData.push_back(dVector);
736    nIons++;
737    if(verbose>1) {
738      G4cout << "AddStoppingData Z= " << Z << " A= " << A << " " << mname
739             << "  idx= " << i << G4endl;
740    }
741  }
742}
743
744//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
745
746void G4EmCorrections::BuildCorrectionVector()
747{
748  if(!ionLEModel || !ionHEModel) {
749    return;
750  }
751
752  const G4ParticleDefinition* ion = curParticle;
753  G4int Z = Zion[idx];
754  if(currentZ != Z) {
755    ion = G4ParticleTable::GetParticleTable()->FindIon(Z, Aion[idx], 0, Z);
756  }
757  //G4cout << "BuildCorrectionVector: idx= " << idx << " Z= " << Z
758  //     << " curZ= " << currentZ << G4endl;
759
760  // G4double A = nist->GetAtomicMassAmu(Z);
761  G4double A = G4double(ion->GetBaryonNumber());
762  G4PhysicsVector* v = stopData[idx];
763   
764  const G4ParticleDefinition* p = G4GenericIon::GenericIon();
765  G4double massRatio = proton_mass_c2/ion->GetPDGMass();
766
767  if(verbose>1) {
768    G4cout << "BuildCorrectionVector: Stopping for "
769           << curParticle->GetParticleName() << " in " 
770           << materialName[idx] << " Ion Z= " << Z << " A= " << A
771           << " massRatio= " << massRatio << G4endl;
772  }
773  G4bool b;
774
775  G4PhysicsLogVector* vv = 
776    new G4PhysicsLogVector(eCorrMin,eCorrMax,nbinCorr);
777  vv->SetSpline(true);
778  G4double e, eion, dedx, dedx1;
779  G4double eth0 = v->GetLowEdgeEnergy(0);
780  G4double escal = eth/massRatio;
781  G4double qe = 
782    effCharge.EffectiveChargeSquareRatio(ion, curMaterial, escal); 
783  G4double dedxt = 
784    ionLEModel->ComputeDEDXPerVolume(curMaterial, p, eth, eth)*qe;
785  G4double dedx1t = 
786    ionHEModel->ComputeDEDXPerVolume(curMaterial, p, eth, eth)*qe
787    + ComputeIonCorrections(curParticle, curMaterial, escal);
788  G4double rest = escal*(dedxt - dedx1t);
789  //G4cout << "Escal(MeV)= "<<escal<<" dedxt0= " <<dedxt
790  //     << " dedxt1= " << dedx1t << G4endl;   
791
792  for(G4int i=0; i<nbinCorr; i++) {
793    e = vv->GetLowEdgeEnergy(i);
794    escal = e/massRatio;
795    eion  = escal/A;
796    if(eion <= eth0) {
797      dedx = v->GetValue(eth0, b)*std::sqrt(eion/eth0);
798    } else {
799      dedx = v->GetValue(eion, b);
800    }
801    qe = effCharge.EffectiveChargeSquareRatio(curParticle,curMaterial,escal); 
802    if(e <= eth) {
803      dedx1 = ionLEModel->ComputeDEDXPerVolume(curMaterial, p, e, e)*qe;
804    } else {
805      dedx1 = ionHEModel->ComputeDEDXPerVolume(curMaterial, p, e, e)*qe +
806        ComputeIonCorrections(curParticle, curMaterial, escal) + rest/escal;
807    }
808    vv->PutValue(i, dedx/dedx1);
809    if(verbose>1) {
810      G4cout << "  E(meV)= " << e/MeV << "   Correction= " << dedx/dedx1
811             << "   "  << dedx << " " << dedx1
812             << "  massF= " << massFactor << G4endl;
813    }
814  }
815  delete v;
816  ionList[idx]  = ion;
817  stopData[idx] = vv;
818  if(verbose>1) G4cout << "End data set " << G4endl;
819}
820
821//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
822
823void G4EmCorrections::InitialiseForNewRun()
824{
825  G4ProductionCutsTable* tb = G4ProductionCutsTable::GetProductionCutsTable();
826  ncouples = tb->GetTableSize();
827  if(currmat.size() != ncouples) {
828    currmat.resize(ncouples);
829    size_t i;
830    for(i=0; i<100; i++) {thcorr[i].clear();}
831    for(i=0; i<ncouples; i++) {
832      currmat[i] = tb->GetMaterialCutsCouple(i)->GetMaterial();
833      G4String nam = currmat[i]->GetName();
834      for(G4int j=0; j<nIons; j++) {
835        if(nam == materialName[j]) { materialList[j] = currmat[i]; }
836      }
837    }
838  }
839}
840
841//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
842
843void G4EmCorrections::Initialise()
844{
845// . Z^3 Barkas effect in the stopping power of matter for charged particles
846//   J.C Ashley and R.H.Ritchie
847//   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
848  G4int i, j;
849  const G4double fTable[47][2] = {
850   { 0.02, 21.5},
851   { 0.03, 20.0},
852   { 0.04, 18.0},
853   { 0.05, 15.6},
854   { 0.06, 15.0},
855   { 0.07, 14.0},
856   { 0.08, 13.5},
857   { 0.09, 13.},
858   { 0.1,  12.2},
859   { 0.2,  9.25},
860   { 0.3,  7.0},
861   { 0.4,  6.0},
862   { 0.5,  4.5},
863   { 0.6,  3.5},
864   { 0.7,  3.0},
865   { 0.8,  2.5},
866   { 0.9,  2.0},
867   { 1.0,  1.7},
868   { 1.2,  1.2},
869   { 1.3,  1.0},
870   { 1.4,  0.86},
871   { 1.5,  0.7},
872   { 1.6,  0.61},
873   { 1.7,  0.52},
874   { 1.8,  0.5},
875   { 1.9,  0.43},
876   { 2.0,  0.42},
877   { 2.1,  0.3},
878   { 2.4,  0.2},
879   { 3.0,  0.13},
880   { 3.08, 0.1},
881   { 3.1,  0.09},
882   { 3.3,  0.08},
883   { 3.5,  0.07},
884   { 3.8,  0.06},
885   { 4.0,  0.051},
886   { 4.1,  0.04},
887   { 4.8,  0.03},
888   { 5.0,  0.024},
889   { 5.1,  0.02},
890   { 6.0,  0.013},
891   { 6.5,  0.01},
892   { 7.0,  0.009},
893   { 7.1,  0.008},
894   { 8.0,  0.006},
895   { 9.0,  0.0032},
896   { 10.0, 0.0025} };
897
898  for(i=0; i<47; i++) {
899    engBarkas[i] = fTable[i][0];
900    corBarkas[i] = fTable[i][1];
901  }
902
903  const G4double nuca[104][2] = {
904  { 1.0E+8, 5.831E-8},
905  { 8.0E+7, 7.288E-8},
906  { 6.0E+7, 9.719E-8},
907  { 5.0E+7, 1.166E-7},
908  { 4.0E+7, 1.457E-7},
909  { 3.0E+7, 1.942E-7},
910  { 2.0E+7, 2.916E-7},
911  { 1.5E+7, 3.887E-7},
912
913  { 1.0E+7, 5.833E-7},
914  { 8.0E+6, 7.287E-7},
915  { 6.0E+6, 9.712E-7},
916  { 5.0E+6, 1.166E-6},
917  { 4.0E+6, 1.457E-6},
918  { 3.0E+6, 1.941E-6},
919  { 2.0E+6, 2.911E-6},
920  { 1.5E+6, 3.878E-6},
921
922  { 1.0E+6, 5.810E-6},
923  { 8.0E+5, 7.262E-6},
924  { 6.0E+5, 9.663E-6},
925  { 5.0E+5, 1.157E-5},
926  { 4.0E+5, 1.442E-5},
927  { 3.0E+5, 1.913E-5},
928  { 2.0E+5, 2.845E-5},
929  { 1.5E+5, 3.762E-5},
930
931  { 1.0E+5, 5.554E-5},
932  { 8.0E+4, 6.866E-5},
933  { 6.0E+4, 9.020E-5},
934  { 5.0E+4, 1.070E-4},
935  { 4.0E+4, 1.319E-4},
936  { 3.0E+4, 1.722E-4},
937  { 2.0E+4, 2.499E-4},
938  { 1.5E+4, 3.248E-4},
939
940  { 1.0E+4, 4.688E-4},
941  { 8.0E+3, 5.729E-4},
942  { 6.0E+3, 7.411E-4},
943  { 5.0E+3, 8.718E-4},
944  { 4.0E+3, 1.063E-3},
945  { 3.0E+3, 1.370E-3},
946  { 2.0E+3, 1.955E-3},
947  { 1.5E+3, 2.511E-3},
948
949  { 1.0E+3, 3.563E-3},
950  { 8.0E+2, 4.314E-3},
951  { 6.0E+2, 5.511E-3},
952  { 5.0E+2, 6.430E-3},
953  { 4.0E+2, 7.756E-3},
954  { 3.0E+2, 9.855E-3},
955  { 2.0E+2, 1.375E-2},
956  { 1.5E+2, 1.736E-2},
957
958  { 1.0E+2, 2.395E-2},
959  { 8.0E+1, 2.850E-2},
960  { 6.0E+1, 3.552E-2},
961  { 5.0E+1, 4.073E-2},
962  { 4.0E+1, 4.802E-2},
963  { 3.0E+1, 5.904E-2},
964  { 1.5E+1, 9.426E-2},
965
966  { 1.0E+1, 1.210E-1},
967  { 8.0E+0, 1.377E-1},
968  { 6.0E+0, 1.611E-1},
969  { 5.0E+0, 1.768E-1},
970  { 4.0E+0, 1.968E-1},
971  { 3.0E+0, 2.235E-1},
972  { 2.0E+0, 2.613E-1},
973  { 1.5E+0, 2.871E-1},
974
975  { 1.0E+0, 3.199E-1},
976  { 8.0E-1, 3.354E-1},
977  { 6.0E-1, 3.523E-1},
978  { 5.0E-1, 3.609E-1},
979  { 4.0E-1, 3.693E-1},
980  { 3.0E-1, 3.766E-1},
981  { 2.0E-1, 3.803E-1},
982  { 1.5E-1, 3.788E-1},
983
984  { 1.0E-1, 3.711E-1},
985  { 8.0E-2, 3.644E-1},
986  { 6.0E-2, 3.530E-1},
987  { 5.0E-2, 3.444E-1},
988  { 4.0E-2, 3.323E-1},
989  { 3.0E-2, 3.144E-1},
990  { 2.0E-2, 2.854E-1},
991  { 1.5E-2, 2.629E-1},
992
993  { 1.0E-2, 2.298E-1},
994  { 8.0E-3, 2.115E-1},
995  { 6.0E-3, 1.883E-1},
996  { 5.0E-3, 1.741E-1},
997  { 4.0E-3, 1.574E-1},
998  { 3.0E-3, 1.372E-1},
999  { 2.0E-3, 1.116E-1},
1000  { 1.5E-3, 9.559E-2},
1001
1002  { 1.0E-3, 7.601E-2},
1003  { 8.0E-4, 6.668E-2},
1004  { 6.0E-4, 5.605E-2},
1005  { 5.0E-4, 5.008E-2},
1006  { 4.0E-4, 4.352E-2},
1007  { 3.0E-4, 3.617E-2},
1008  { 2.0E-4, 2.768E-2},
1009  { 1.5E-4, 2.279E-2},
1010
1011  { 1.0E-4, 1.723E-2},
1012  { 8.0E-5, 1.473E-2},
1013  { 6.0E-5, 1.200E-2},
1014  { 5.0E-5, 1.052E-2},
1015  { 4.0E-5, 8.950E-3},
1016  { 3.0E-5, 7.246E-3},
1017  { 2.0E-5, 5.358E-3},
1018  { 1.5E-5, 4.313E-3},
1019  { 0.0, 3.166E-3}
1020  };
1021
1022  for(i=0; i<104; i++) {
1023    ed[i] = nuca[i][0];
1024    a[i] = nuca[i][1];
1025  }
1026
1027  // Constants
1028  theZieglerFactor = eV*cm2*1.0e-15 ; 
1029  alpha2           = fine_structure_const*fine_structure_const;
1030  lossFlucFlag     = true;
1031
1032  // G.S. Khandelwal Nucl. Phys. A116(1968)97 - 111.
1033  // "Shell corrections for K- and L- electrons
1034  nK = 20;
1035  nL = 26;
1036  nEtaK = 29;
1037  nEtaL = 28;
1038
1039  const G4double d[11] = {0., 0., 0., 1.72, 2.09, 2.48, 2.82, 3.16, 3.53, 3.84, 4.15};
1040  const G4double thek[20] = {0.64, 0.65, 0.66, 0.68, 0.70, 0.72, 0.74, 0.75, 0.76, 0.78,
1041                             0.80, 0.82, 0.84, 0.85, 0.86, 0.88, 0.90, 0.92, 0.94, 0.95};
1042  const G4double sk[20] = {1.9477, 1.9232, 1.8996, 1.8550, 1.8137,
1043                           1.7754, 1.7396, 1.7223, 1.7063, 1.6752,
1044                           1.6461, 1.6189, 1.5933, 1.5811, 1.5693,
1045                           1.5467, 1.5254, 1.5053, 1.4863, 1.4772};
1046  const G4double tk[20] = {2.5222, 2.5125, 2.5026, 2.4821, 2.4608,
1047                           2.4388, 2.4163, 2.4044, 2.3933, 2.3701,
1048                           2.3466, 2.3229, 2.2992, 2.2872, 2.2753,
1049                           2.2515, 2.2277, 2.2040, 2.1804, 2.1686};
1050  const G4double uk[20] = {1.9999, 2.0134, 2.0258, 2.0478, 2.0662,
1051                           2.0817, 2.0945, 2.0999, 2.1049, 2.1132,
1052                           2.1197, 2.1246, 2.1280, 2.1292, 2.1301,
1053                           2.1310, 2.1310, 2.1300, 2.1283, 2.1271};
1054  const G4double vk[20] = {8.3410, 8.3373, 8.3340, 8.3287, 8.3247,
1055                           8.3219, 8.3201, 8.3194, 8.3191, 8.3188,
1056                           8.3191, 8.3199, 8.3211, 8.3218, 8.3226,
1057                           8.3244, 8.3264, 8.3285, 8.3308, 8.3320};
1058
1059  for(i=0; i<11; i++) { ZD[i] = d[i];}
1060
1061  for(i=0; i<nK; i++) {
1062    TheK[i] = thek[i];
1063    SK[i]   = sk[i];
1064    TK[i]   = tk[i];
1065    UK[i]   = uk[i];
1066    VK[i]   = vk[i];
1067  }
1068
1069  const G4double thel[26] = {0.24, 0.26, 0.28, 0.30, 0.32,   0.34, 0.35, 0.36, 0.38, 0.40,
1070                             0.42, 0.44, 0.45, 0.46, 0.48,   0.50, 0.52, 0.54, 0.55, 0.56,
1071                             0.58, 0.60, 0.62, 0.64, 0.65,   0.66};
1072  const G4double sl[26] = {15.3343, 13.9389, 12.7909, 11.8343, 11.0283,
1073                           10.3424, 10.0371,  9.7537,  9.2443,  8.8005,
1074                           8.4114,  8.0683,   7.9117, 7.7641, 7.4931,
1075                           7.2506,  7.0327,   6.8362, 6.7452, 6.6584,
1076                           6.4969,  6.3498,   6.2154, 6.0923, 6.0345, 5.9792};
1077  const G4double tl[26] = {35.0669, 33.4344, 32.0073, 30.7466, 29.6226,
1078                           28.6128, 28.4149, 27.6991, 26.8674, 26.1061,
1079                           25.4058, 24.7587, 24.4531, 24.1583, 23.5992,
1080                           23.0771, 22.5880, 22.1285, 21.9090, 21.6958,
1081                           21.2872, 20.9006, 20.5341, 20.1859, 20.0183, 19.8546};
1082  const G4double ul[26] = {0.1215, 0.5265, 0.8411, 1.0878, 1.2828,
1083                           1.4379, 1.5032, 1.5617, 1.6608, 1.7401,
1084                           1.8036, 1.8543, 1.8756, 1.8945, 1.9262,
1085                           1.9508, 1.9696, 1.9836, 1.9890, 1.9935,
1086                           2.0001, 2.0039, 2.0053, 2.0049, 2.0040, 2.0028}; 
1087  for(i=0; i<nL; i++) {
1088    TheL[i] = thel[i];
1089    SL[i]   = sl[i];
1090    TL[i]   = tl[i];
1091    UL[i]   = ul[i];
1092  }
1093
1094  const G4double eta[29] = {0.005, 0.007, 0.01, 0.015, 0.02,
1095                              0.03,  0.04,  0.05, 0.06,  0.08,
1096                              0.1,   0.15,  0.2,  0.3,   0.4,
1097                              0.5,   0.6,   0.7,  0.8,   1.0,
1098                              1.2,   1.4,   1.5,  1.7,   2.0, 3.0, 5.0, 7.0, 10.};
1099
1100  const G4double bk1[29][11] = { 
1101  {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}, 
1102  {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}, 
1103  {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}, 
1104  {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}, 
1105  {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}, 
1106  {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}, 
1107  {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}, 
1108  {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}, 
1109  {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}, 
1110  {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}, 
1111  {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}, 
1112  {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}, 
1113  {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}, 
1114  {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}, 
1115  {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}, 
1116  {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}, 
1117  {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}, 
1118  {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}, 
1119  {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}, 
1120  {1.0, 1.12850, 1.14002, 1.16362, 1.18799, 1.21317, 1.23921, 1.25257, 1.26616, 1.29408, 1.32303}, 
1121  {1.2, 1.40232, 1.41545, 1.44232, 1.47007, 1.49875, 1.52842, 1.54364, 1.55913, 1.59095, 1.62396}, 
1122  {1.4, 1.65584, 1.67034, 1.70004, 1.73072, 1.76244, 1.79526, 1.81210, 1.82925, 1.86448, 1.90104}, 
1123  {1.5, 1.77496, 1.79009, 1.82107, 1.85307, 1.88617, 1.92042, 1.93800, 1.95590, 1.99269, 2.03087}, 
1124  {1.7, 1.99863, 2.01490, 2.04822, 2.08265, 2.11827, 2.15555, 2.17409, 2.19337, 2.23302, 2.27419}, 
1125  {2.0, 2.29325, 2.31100, 2.34738, 2.38501, 2.42395, 2.46429, 2.48401, 2.50612, 2.54955, 2.59468}, 
1126  {3.0, 3.08887, 3.11036, 3.15445, 3.20013, 3.24748, 3.29664, 3.32192, 3.34770, 3.40081, 3.45611}, 
1127  {5.0, 4.07599, 4.10219, 4.15606, 4.21199, 4.27010, 4.33056, 4.36172, 4.39353, 4.45918, 4.52772}, 
1128  {7.0, 4.69647, 4.72577, 4.78608, 4.84877, 4.91402, 4.98200, 5.01707, 5.05290, 5.12695, 5.20436}, 
1129  {10.0, 5.32590, 5.35848, 5.42560, 5.49547, 5.56830, 5.64429, 5.68353, 5.72366, 5.80666, 5.89359}
1130  }; 
1131
1132  const G4double bk2[29][11] = { 
1133  {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}, 
1134  {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}, 
1135  {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}, 
1136  {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}, 
1137  {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}, 
1138  {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}, 
1139  {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}, 
1140  {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}, 
1141  {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}, 
1142  {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}, 
1143  {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}, 
1144  {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}, 
1145  {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}, 
1146  {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}, 
1147  {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}, 
1148  {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}, 
1149  {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}, 
1150  {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}, 
1151  {0.8, 1.02508, 1.05121, 1.06466, 1.07838, 1.10667, 1.13615, 1.16692, 1.19907, 1.21570, 1.23272}, 
1152  {1.0, 1.35307, 1.38429, 1.40036, 1.41676, 1.45057, 1.48582, 1.52263, 1.56111, 1.58102, 1.60140}, 
1153  {1.2, 1.65823, 1.69385, 1.71220, 1.73092, 1.76954, 1.80983, 1.85192, 1.89596, 1.91876, 1.94211}, 
1154  {1.4, 1.93902, 1.97852, 1.99887, 2.01964, 2.06251, 2.10727, 2.15406, 2.20304, 2.22842, 2.25442}, 
1155  {1.5, 2.07055, 2.11182, 2.13309, 2.15480, 2.19963, 2.24644, 2.29539, 2.34666, 2.37323, 2.40045}, 
1156  {1.7, 2.31700, 2.36154, 2.38451, 2.40798, 2.45641, 2.50703, 2.56000, 2.61552, 2.64430, 2.67381}, 
1157  {2.0, 2.64162, 2.69053, 2.71576, 2.74154, 2.79481, 2.85052, 2.90887, 2.97009, 3.00185, 3.03442}, 
1158  {3.0, 3.51376, 3.57394, 3.60503, 3.63684, 3.70268, 3.77170, 3.84418, 3.92040, 3.96003, 4.00073}, 
1159  {5.0, 4.59935, 4.67433, 4.71316, 4.75293, 4.83543, 4.92217, 5.01353, 5.10992, 5.16014, 5.21181}, 
1160  {7.0, 5.28542, 5.37040, 5.41445, 5.45962, 5.55344, 5.65226, 5.79496, 5.90517, 5.96269, 6.02191}, 
1161  {10.0, 5.98474, 6.08046, 6.13015, 6.18112, 6.28715, 6.39903, 6.51728, 6.64249, 6.70792, 6.77535}
1162  }; 
1163
1164  const G4double bls1[28][10] = { 
1165  {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}, 
1166  {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}, 
1167  {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}, 
1168  {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}, 
1169  {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}, 
1170  {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}, 
1171  {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}, 
1172  {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}, 
1173  {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}, 
1174  {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}, 
1175  {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}, 
1176  {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}, 
1177  {0.2, 9.3100E-1, 9.5614E-1, 9.7162E-1, 1.0037, 1.0372, 1.0723, 1.1092, 1.1284, 1.1480}, 
1178  {0.3, 1.5172, 1.5372, 1.5576, 1.5998, 1.6438, 1.6899, 1.7382, 1.7632, 1.7889}, 
1179  {0.4, 2.0173, 2.0408, 2.0647, 2.1142, 2.1659, 2.2199, 2.2765, 2.3059, 2.3360}, 
1180  {0.5, 2.3932, 2.4193, 2.4460, 2.5011, 2.5587, 2.6190, 2.6821, 2.7148, 2.7484}, 
1181  {0.6, 2.7091, 2.7374, 2.7663, 2.8260, 2.8884, 2.9538, 3.0222, 3.0577, 3.0941}, 
1182  {0.7, 2.9742, 3.0044, 3.0352, 3.0988, 3.1652, 3.2349, 3.3079, 3.3457, 3.3845}, 
1183  {0.8, 3.2222, 3.2539, 3.2863, 3.3532, 3.4232, 3.4965, 3.5734, 3.6133, 3.6542}, 
1184  {1.0, 3.6690, 3.7033, 3.7384, 3.8108, 3.8866, 3.9661, 4.0495, 4.0928, 4.1371}, 
1185  {1.2, 3.9819, 4.0183, 4.0555, 4.1324, 4.2130, 4.2974, 4.3861, 4.4321, 4.4794}, 
1186  {1.4, 4.2745, 4.3127, 4.3517, 4.4324, 4.5170, 4.6056, 4.6988, 4.7471, 4.7968}, 
1187  {1.5, 4.4047, 4.4436, 4.4834, 4.5658, 4.6521, 4.7426, 4.8378, 4.8872, 4.9379}, 
1188  {1.7, 4.6383, 4.6787, 4.7200, 4.8054, 4.8949, 4.9888, 5.0876, 5.1388, 5.1915}, 
1189  {2.0, 4.9369, 4.9791, 5.0223, 5.1116, 5.2053, 5.3036, 5.4070, 5.4607, 5.5159}, 
1190  {3.0, 5.6514, 5.6981, 5.7459, 5.8450, 5.9489, 6.0581, 6.1730, 6.2328, 6.2943}, 
1191  {5.0, 6.4665, 6.5189, 6.5724, 6.6835, 6.8003, 6.9231, 7.0525, 7.1199, 7.1892}, 
1192  {7.0, 6.8634, 6.9194, 6.9767, 7.0957, 7.2208, 7.3526, 7.4915, 7.5639, 7.6384}
1193  };
1194 
1195
1196  const G4double bls2[28][10] = { 
1197  {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}, 
1198  {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}, 
1199  {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}, 
1200  {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}, 
1201  {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}, 
1202  {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}, 
1203  {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}, 
1204  {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}, 
1205  {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}, 
1206  {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}, 
1207  {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}, 
1208  {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}, 
1209  {0.2, 1.1888, 1.2319, 1.2774, 1.3255, 1.3506, 1.3765, 1.4308, 1.4886, 1.5504}, 
1210  {0.3, 1.8422, 1.8983, 1.9575, 2.0201, 2.0528, 2.0864, 2.1569, 2.2319, 2.3120}, 
1211  {0.4, 2.3984, 2.4642, 2.5336, 2.6070, 2.6452, 2.6847, 2.7674, 2.8554, 2.9494}, 
1212  {0.5, 2.8181, 2.8915, 2.9690, 3.0509, 3.0937, 3.1378, 3.2301, 3.3285, 3.4337}, 
1213  {0.6, 3.1698, 3.2494, 3.3336, 3.4226, 3.4691, 3.5171, 3.6175, 3.7246, 3.8391}, 
1214  {0.7, 3.4652, 3.5502, 3.6400, 3.7351, 3.7848, 3.8360, 3.9433, 4.0578, 4.1804}, 
1215  {0.8, 3.7392, 3.8289, 3.9236, 4.0239, 4.0764, 4.1304, 4.2438, 4.3648, 4.4944}, 
1216  {1.0, 4.2295, 4.3269, 4.4299, 4.5391, 4.5962, 4.6551, 4.7786, 4.9106, 5.0520}, 
1217  {1.2, 4.5777, 4.6814, 4.7912, 4.9076, 4.9685, 5.0314, 5.1633, 5.3043, 5.4555}, 
1218  {1.4, 4.9001, 5.0092, 5.1247, 5.2473, 5.3114, 5.3776, 5.5166, 5.6653, 5.8249}, 
1219  {1.5, 5.0434, 5.1550, 5.2731, 5.3984, 5.4640, 5.5317, 5.6739, 5.8260, 5.9893}, 
1220  {1.7, 5.3011, 5.4170, 5.5398, 5.6701, 5.7373, 5.8088, 5.9568, 6.1152, 6.2853}, 
1221  {2.0, 5.6308, 5.7523, 5.8811, 6.0174, 6.0896, 6.1636, 6.3192, 6.4857, 6.6647}, 
1222  {3.0, 6.4224, 6.5580, 6.7019, 6.8549, 6.9351, 7.0180, 7.1925, 7.3795, 7.5808}, 
1223  {5.0, 7.3338, 7.4872, 7.6500, 7.8235, 7.9146, 8.0087, 8.2071, 8.4200, 8.6496}, 
1224  {7.0, 7.7938, 7.9588, 8.1342, 8.3211, 8.4193, 8.5209, 8.7350, 8.9651, 9.2133}
1225  }; 
1226 
1227  const G4double bls3[28][9] = { 
1228  {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}, 
1229  {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}, 
1230  {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}, 
1231  {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}, 
1232  {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}, 
1233  {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}, 
1234  {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}, 
1235  {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}, 
1236  {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}, 
1237  {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}, 
1238  {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}, 
1239  {0.15, 1.1544, 1.1828, 1.2122, 1.2746, 1.3424, 1.4163, 1.4974, 1.5868}, 
1240  {0.2, 1.6167, 1.6517, 1.6880, 1.7650, 1.8484, 1.9394, 2.0390, 2.1489}, 
1241  {0.3, 2.3979, 2.4432, 2.4902, 2.5899, 2.6980, 2.8159, 2.9451, 3.0876}, 
1242  {0.4, 3.0502, 3.1034, 3.1586, 3.2758, 3.4030, 3.5416, 3.6938, 3.8620}, 
1243  {0.5, 3.5466, 3.6062, 3.6681, 3.7994, 3.9421, 4.0978, 4.2688, 4.4580}, 
1244  {0.6, 3.9620, 4.0270, 4.0945, 4.2378, 4.3935, 4.5636, 4.7506, 4.9576}, 
1245  {0.7, 4.3020, 4.3715, 4.4438, 4.5974, 4.7644, 4.9470, 5.1478, 5.3703}, 
1246  {0.8, 4.6336, 4.7072, 4.7837, 4.9463, 5.1233, 5.3169, 5.5300, 5.7661}, 
1247  {1.0, 5.2041, 5.2845, 5.3682, 5.5462, 5.7400, 5.9523, 6.1863, 6.4458}, 
1248  {1.2, 5.6182, 5.7044, 5.7940, 5.9848, 6.1927, 6.4206, 6.6719, 6.9510}, 
1249  {1.4, 5.9967, 6.0876, 6.1823, 6.3839, 6.6038, 6.8451, 7.1113, 7.4071}, 
1250  {1.5, 6.1652, 6.2583, 6.3553, 6.5618, 6.7871, 7.0344, 7.3073, 7.6107}, 
1251  {1.7, 6.4686, 6.5657, 6.6668, 6.8823, 7.1175, 7.3757, 7.6609, 7.9782}, 
1252  {2.0, 6.8577, 6.9600, 7.0666, 7.2937, 7.5418, 7.8143, 8.1156, 8.4510}, 
1253  {3.0, 7.7981, 7.9134, 8.0336, 8.2901, 8.5708, 8.8796, 9.2214, 9.6027}, 
1254  {5.0, 8.8978, 9.0297, 9.1673, 9.4612, 9.7834, 10.1384, 10.5323, 10.9722}, 
1255  {7.0, 9.4819, 9.6248, 9.7739, 10.0926, 10.4423, 10.8282, 11.2565, 11.7356}
1256  }; 
1257
1258  const G4double bll1[28][10] = { 
1259  {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}, 
1260  {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}, 
1261  {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}, 
1262  {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}, 
1263  {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}, 
1264  {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}, 
1265  {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}, 
1266  {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}, 
1267  {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}, 
1268  {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}, 
1269  {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}, 
1270  {0.15, 1.0066, 1.0224, 1.0386, 1.0721, 1.1073, 1.1443, 1.1832, 1.2035, 1.2243}, 
1271  {0.2, 1.4376, 1.4572, 1.4773, 1.5188, 1.5624, 1.6083, 1.6566, 1.6817, 1.7076}, 
1272  {0.3, 2.1712, 2.1964, 2.2223, 2.2758, 2.3322, 2.3915, 2.4542, 2.4869, 2.5205}, 
1273  {0.4, 2.7500, 2.7793, 2.8094, 2.8719, 2.9377, 3.0072, 3.0807, 3.1192, 3.1587}, 
1274  {0.5, 3.2033, 3.2359, 3.2693, 3.3389, 3.4122, 3.4898, 3.5721, 3.6151, 3.6595}, 
1275  {0.6, 3.6038, 3.6391, 3.6753, 3.7506, 3.8303, 3.9146, 4.0042, 4.0511, 4.0995}, 
1276  {0.7, 3.9106, 3.9482, 3.9867, 4.0670, 4.1520, 4.2421, 4.3380, 4.3882, 4.4401}, 
1277  {0.8, 4.1790, 4.2185, 4.2590, 4.3437, 4.4333, 4.5285, 4.6298, 4.6830, 4.7380}, 
1278  {1.0, 4.6344, 4.6772, 4.7212, 4.8131, 4.9106, 5.0144, 5.1250, 5.1831, 5.2432}, 
1279  {1.2, 4.9787, 5.0242, 5.0711, 5.1689, 5.2729, 5.3837, 5.5050, 5.5642, 5.6287}, 
1280  {1.4, 5.2688, 5.3166, 5.3658, 5.4687, 5.5782, 5.6950, 5.8198, 5.8855, 5.9554}, 
1281  {1.5, 5.3966, 5.4454, 5.4957, 5.6009, 5.7128, 5.8323, 5.9601, 6.0274, 6.0972}, 
1282  {1.7, 5.6255, 5.6762, 5.7284, 5.8377, 5.9541, 6.0785, 6.2116, 6.2818, 6.3546}, 
1283  {2.0, 5.9170, 5.9701, 6.0248, 6.1395, 6.2618, 6.3925, 6.5327, 6.6066, 6.6833}, 
1284  {3.0, 6.6210, 6.6801, 6.7411, 6.8692, 7.0062, 7.1529, 7.3107, 7.3941, 7.4807}, 
1285  {5.0, 7.4620, 7.5288, 7.5977, 7.7428, 7.8982, 8.0653, 8.2454, 8.3409, 8.4402}, 
1286  {7.0, 7.7362, 7.8079, 7.8821, 8.0383, 8.2061, 8.3866, 8.5816, 8.6850, 8.7927}
1287  }; 
1288
1289  const G4double bll2[28][10] = { 
1290  {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}, 
1291  {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}, 
1292  {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}, 
1293  {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}, 
1294  {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}, 
1295  {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}, 
1296  {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}, 
1297  {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}, 
1298  {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}, 
1299  {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}, 
1300  {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}, 
1301  {0.15, 1.2677, 1.3137, 1.3626, 1.4147, 1.4421, 1.4703, 1.5300, 1.5942, 1.6636}, 
1302  {0.2, 1.7615, 1.8188, 1.8797, 1.9446, 1.9788, 2.0142, 2.0889, 2.1694, 2.2567}, 
1303  {0.3, 2.5909, 2.6658, 2.7457, 2.8312, 2.8762, 2.9231, 3.0222, 3.1295, 3.2463}, 
1304  {0.4, 3.2417, 3.3302, 3.4249, 3.5266, 3.5803, 3.6361, 3.7546, 3.8835, 4.0242}, 
1305  {0.5, 3.7527, 3.8523, 3.9591, 4.0741, 4.1350, 4.1983, 4.3330, 4.4799, 4.6408}, 
1306  {0.6, 4.2013, 4.3103, 4.4274, 4.5537, 4.6206, 4.6904, 4.8390, 5.0013, 5.1796}, 
1307  {0.7, 4.5493, 4.6664, 4.7925, 4.9286, 5.0009, 5.0762, 5.2370, 5.4129, 5.6066}, 
1308  {0.8, 4.8537, 4.9780, 5.1119, 5.2568, 5.3338, 5.4141, 5.5857, 5.7738, 5.9811}, 
1309  {1.0, 5.3701, 5.5066, 5.6540, 5.8138, 5.8989, 5.9878, 6.1780, 6.3870, 6.6179}, 
1310  {1.2, 5.7648, 5.9114, 6.0701, 6.2424, 6.3343, 6.4303, 6.6361, 6.8626, 7.1137}, 
1311  {1.4, 6.0976, 6.2530, 6.4214, 6.6044, 6.7021, 6.8043, 7.0237, 7.2655, 7.5338}, 
1312  {1.5, 6.2447, 6.4041, 6.5768, 6.7647, 6.8650, 6.9700, 7.1954, 7.4442, 7.7203}, 
1313  {1.7, 6.5087, 6.6752, 6.8558, 7.0526, 7.1578, 7.2679, 7.5045, 7.7660, 8.0565}, 
1314  {2.0, 6.8458, 7.0218, 7.2129, 7.4213, 7.5328, 7.6496, 7.9010, 8.1791, 8.4886}, 
1315  {3.0, 7.6647, 7.8644, 8.0819, 8.3189, 8.4475, 8.5814, 8.8702, 9.1908, 9.5488}, 
1316  {5.0, 8.6515, 8.8816, 9.1330, 9.4090, 9.5572, 9.7132, 10.0504, 10.4259, 10.8466}, 
1317  {7.0, 9.0221, 9.2724, 9.5464, 9.8477, 10.0099, 10.1805, 10.5499, 10.9622, 11.4250}
1318  }; 
1319
1320  const G4double bll3[28][9] = { 
1321  {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}, 
1322  {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}, 
1323  {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}, 
1324  {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}, 
1325  {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}, 
1326  {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}, 
1327  {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}, 
1328  {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}, 
1329  {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}, 
1330  {0.08, 7.8230E-1, 8.0474E-1, 8.2818E-1, 8.7836E-1, 9.3355E-1, 9.9462E-1, 1.0627, 1.1394}, 
1331  {0.1, 1.0621, 1.0900, 1.1192, 1.1816, 1.2503, 1.3265, 1.4116, 1.5076}, 
1332  {0.15, 1.7389, 1.7790, 1.8210, 1.9112, 2.0108, 2.1217, 2.2462, 2.3876}, 
1333  {0.2, 2.3516, 2.4024, 2.4556, 2.5701, 2.6971, 2.8391, 2.9994, 3.1822}, 
1334  {0.3, 3.3741, 3.4427, 3.5148, 3.6706, 3.8445, 4.0404, 4.2631, 4.5193}, 
1335  {0.4, 4.1788, 4.2620, 4.3496, 4.5398, 4.7530, 4.9944, 5.2703, 5.5895}, 
1336  {0.5, 4.8180, 4.9137, 5.0146, 5.2341, 5.4811, 5.7618, 6.0840, 6.4583}, 
1337  {0.6, 5.3765, 5.4830, 5.5954, 5.8406, 6.1173, 6.4326, 6.7958, 7.2191}, 
1338  {0.7, 5.8208, 5.9369, 6.0596, 6.3275, 6.6306, 6.9769, 7.3767, 7.8440}, 
1339  {0.8, 6.2109, 6.3355, 6.4674, 6.7558, 7.0827, 7.4570, 7.8900, 8.3972}, 
1340  {1.0, 6.8747, 7.0142, 7.1621, 7.4861, 7.8546, 8.2778, 8.7690, 9.3464}, 
1341  {1.2, 7.3933, 7.5454, 7.7068, 8.0612, 8.4652, 8.9302, 9.4713, 10.1090}, 
1342  {1.4, 7.8331, 7.9967, 8.1694, 8.5502, 8.9851, 9.4866, 10.0713, 10.7619}, 
1343  {1.5, 8.0286, 8.1967, 8.3753, 8.7681, 9.2181, 9.7352, 10.3399, 11.0546}, 
1344  {1.7, 8.3813, 8.5585, 8.7469, 9.1618, 9.6367, 10.1856, 10.8270, 11.5863}, 
1345  {2.0, 8.8352, 9.0245, 9.2260, 9.6701, 10.1793, 10.7688, 11.4590, 12.2775}, 
1346  {3.0, 9.9511, 10.1714, 10.4062, 10.9254, 11.5229, 12.2172, 13.0332, 14.0048}, 
1347  {5.0, 11.3211, 11.5818, 11.8601, 12.4771, 13.1898, 14.0213, 15.0024, 16.1752}, 
1348  {7.0, 11.9480, 12.2357, 12.5432, 13.2260, 14.0164, 14.9404, 16.0330, 17.3420}
1349  };
1350
1351                             
1352  G4double b, bs; 
1353  for(i=0; i<nEtaK; i++) {
1354
1355    G4double et = eta[i];
1356    G4double loget = std::log(et);
1357    Eta[i] = et;
1358    // G4cout << "### eta[" << i << "]= " << et << "  KShell: tet= " << TheK[0]<<" - " <<TheK[nK-1]<< G4endl;
1359
1360    for(j=0; j<nK; j++) {
1361
1362      if(j < 10) b = bk2[i][10-j];
1363      else       b = bk1[i][20-j];
1364
1365      CK[j][i] = SK[j]*loget + TK[j] - b;
1366      //G4cout << " " << CK[j][i];
1367      if(i == nEtaK-1) ZK[j] = et*(et*et*CK[j][i] - et*UK[j] - VK[j]); 
1368    }
1369    //G4cout << G4endl;
1370    if(i < nEtaL) {
1371      //G4cout << "  LShell:" <<G4endl;
1372      for(j=0; j<nL; j++) {
1373
1374        if(j < 8) {
1375          bs = bls3[i][8-j];
1376          b  = bll3[i][8-j];
1377        } else if(j < 17) {
1378          bs = bls2[i][17-j];
1379          b  = bll2[i][17-j];
1380        } else {
1381          bs = bls1[i][26-j];
1382          b  = bll1[i][26-j];
1383        }
1384        G4double c = SL[j]*loget + TL[j]; 
1385        CL[j][i] = c - bs - 3.0*b;
1386        //G4cout << " " << CL[j][i];
1387        if(i == nEtaL-1) VL[j] = et*(et*CL[j][i] - UL[j]); 
1388      }
1389      //G4cout << G4endl;
1390    }
1391  }
1392  const G4double hm[53] = {
1393    12.0, 12.0, 12.0, 12.0, 11.9, 11.7, 11.5, 11.2, 10.8, 10.4,
1394    10.0,  9.51, 8.97, 8.52, 8.03, 7.46, 6.95, 6.53, 6.18, 5.87, 
1395    5.61,  5.39, 5.19, 5.01, 4.86, 4.72, 4.62, 4.53, 4.44, 4.38, 
1396    4.32,  4.26, 4.20, 4.15, 4.1,  4.04, 4.00, 3.95, 3.93, 3.91, 
1397    3.90,  3.89, 3.89, 3.88, 3.88, 3.88, 3.88, 3.88, 3.89, 3.89, 
1398    3.90, 3.92, 3.93 };
1399  const G4double hn[31] = {
1400    75.5, 61.9, 52.2, 45.1, 39.6, 35.4, 31.9, 29.1, 27.2, 25.8, 
1401    24.5, 23.6, 22.7, 22.0, 21.4, 20.9, 20.5, 20.2, 19.9, 19.7, 
1402    19.5, 19.3, 19.2, 19.1, 18.4, 18.8, 18.7, 18.6, 18.5, 18.4, 
1403    18.2
1404  };
1405  for(i=0; i<53; i++) {HM[i] = hm[i];}
1406  for(i=0; i<31; i++) {HN[i] = hn[i];}
1407
1408  const G4double mm[93] = {
1409     0.0,
1410     /*
1411 -0.0001577, 5.396e-05, 0.0004194, -0.0001969, -0.0003447, -0.0001904, 9.612e-05, 4.16e-05, 0.0001899, 0.0001322,
1412 0.0001485, 4.698e-05, -7.726e-05, -6.448e-05, 3.269e-05, -0.0001293, 0.0001483, -8.559e-05, 4.018e-05, 6.239e-05,
1413 4.447e-05, 2.212e-05, -5.568e-06, 3.782e-05, 4.398e-05, 8.942e-05, 0.0002202, 0.0001357, 0.0001195, 0.0001812,
1414 0.0002365, 4.508e-05, 0.0001629, 7.75e-05, 0.0001886, 0.0001601, 0.00015, 5.679e-05, 5.956e-06, -7.309e-05,
1415 -0.0001144, -8.585e-05, -0.0001051, -8.209e-05, -5.871e-05, -3.744e-05, -6.707e-05, -9.199e-06, 1.181e-05, 2.252e-05,
1416 1.051e-05, 7.63e-05, 1.71e-05, 1.705e-05, 1.561e-05, 8.987e-06, 4.957e-06, -1.473e-05, -1.902e-05, -1.491e-05,
1417 -9.891e-08, 2.584e-05, 3.696e-05, 8.651e-06, -3.601e-06, 1.647e-05, 4.536e-05, 9.954e-05, 8.922e-05, 0.0001026,
1418 4.094e-05, 3.788e-05, 1.578e-05, 2.731e-05, -6.035e-05, -9.112e-05, -8.846e-05, -0.0001361, -0.0001959, -0.0001883,
1419 -0.0002854, -0.0004129, -0.0004611, -0.0005523, -0.0005869, -0.0005008, -0.000659, -0.0007045, -0.0007322, -0.0008374,
1420 -0.0008731, -0.0009327,
1421     
1422 -0.0003427, -4.685e-05, 0.0007304, -0.0003158, -0.0004104, -0.001133, -0.0007987, -0.0001528, 8.976e-05, 8.63e-05,
1423 1.764e-05, -0.000136, -0.0002895, -0.0002618, -0.0002878, -0.0003813, 1.417e-05, -0.0004216, -0.0003859, -0.0001028,
1424 -0.0001617, -0.0002141, -0.0002178, 5.59e-05, 9.964e-07, 7.528e-05, 0.0002261, 4.241e-05, 0.0005255, 0.0002139,
1425 -5.821e-05, -2.661e-05, 0.0001039, 3.359e-05, 0.0004229, -0.0004872, 0.0001374, -2.79e-05, -1.319e-05, -0.0001077,
1426 -0.0001923, -0.0001189, -0.0001091, -8.486e-05, 7.506e-05, 0.0001053, 0.0004596, 0.000177, 4.805e-05, 3.97e-05,
1427 0.0004008, 0.0002194, 0.0001639, 0.0003285, 0.000219, 0.0001339, 6.323e-05, 2.013e-05, 2.568e-05, 4.346e-05,
1428 8.455e-05, 8.785e-05, 0.0001393, 9.907e-05, 0.0001003, 0.0001508, 0.0002189, 0.0003885, 0.0003603, 0.0003839,
1429 0.0003321, 0.0002207, 0.0001627, 0.0002282, 0.0002177, 0.0002156, 0.0002855, 0.0002361, 0.0007735, 0.0001157,
1430 -0.0001214, -0.0002944, -0.0003193, -0.0004025, -0.0002436, -7.573e-05, -0.0003741, -0.0003678, -0.0004839, -0.0003934,
1431 -0.0005817, -0.000726,
1432
1433 -118, 40.37, 313.8, -147.3, -257.9, -142.4, 71.91, 31.12, 142.1, 98.92,
1434 112.3, 41.36, -47.15, -17.84, 46.46, -66.91, 141.3, -19.96, 84.66, 110.2,
1435 113.2, 108.7, 92.89, 127.3, 139.3, 187, 288.5, 233.4, 225.3, 284.6,
1436 344.5, 246.2, 359.7, 324.1, 455, 457.1, 481, 459.8, 447.9, 407.5,
1437 399.7, 457.7, 470.4, 511.8, 545.9, 581, 574.1, 638.6, 685.6, 719.6,
1438 740.8, 817.2, 808.3, 839.7, 866.2, 873.2, 879.3, 886.3, 902, 912.7,
1439 927.7, 942.1, 967.1, 962.2, 961.8, 993.4, 1006, 1060, 1046, 1061,
1440 1036, 1060, 1062, 1084, 1048, 1063, 1098, 1093, 1089, 1117,
1441 1085, 1044, 1033, 1027, 1051, 1150, 1064, 1078, 1090, 1140,
1442 1119, 1097,
1443*/
1444
1445 -511.3, -69.91, 1090, -471.2, -612.4, -1690, -1192, -228, 133.9, 128.8,
1446 28.71, -190.6, -408.7, -326.6, -378.5, -507.3, 93.63, -531, -459.2, -21.83,
1447 -74.93, -121.7, -122.8, 285.2, 217.4, 366.3, 598.7, 341.8, 1078, 634.2,
1448 280.5, 430.7, 663.5, 596.4, 1307, 6.814, 992.6, 887, 967.6, 868,
1449 775.9, 1034, 1050, 1204, 1458, 1541, 2186, 1806, 1676, 1718,
1450 2416, 2204, 2197, 2496, 2371, 2370, 2330, 2318, 2379, 2434,
1451 2513, 2533, 2650, 2650, 2684, 2788, 2868, 3157, 3150, 3196,
1452 3162, 3055, 3008, 3133, 3176, 3212, 3356, 3324, 4170, 3320,
1453 3109, 2941, 2973, 2858, 3088, 3447, 3134, 3121, 3086, 3199,
1454 3115, 2979,
1455
1456  };
1457
1458  const G4double ntau[93] = {
1459     0.0,
1460 -251.1, 512.8, 1724, 649, 658.8, 594.1, 946.6, 969.2, 1154, 997.8,
1461 939.3, 775.5, 619.9, 848.3, 973.4, 1035, 1252, 698.8, 1043, 1080,
1462 957, 885.6, 772.1, 847.1, 799.7, 901.7, 1042, 880.8, 857.7, 968,
1463 850.4, 482.8, 781.4, 685, 1093, 847.4, 824.4, 751.5, 638, 489.2,
1464 266.5, 371, 319.2, 356.6, 424.9, 405, 390.8, 610.6, 404.3, 444.6,
1465 439, 579, 466.4, 520.5, 551.1, 441.6, 328.8, 264.3, 260.9, 274,
1466 264.8, 235.1, 290, 196, 178.2, 248.4, 224.3, 268.2, 239.5, 253.9,
1467 219.2, 172.7, 169.5, 199, 53.35, 65.78, 120.2, 77.13, 32.76, 45.53,
1468 -148, -331.4, -386.4, -430.8, -361.1, -108.3, -382.4, -400.1, -458.4, -430.8,
1469 -536.9, -627.6,
1470  };
1471
1472  for(i=0; i<93; i++) {
1473    MSH[i] = mm[i];
1474    TAU[i] = ntau[i];
1475  }
1476  const G4double coseb[14] = {0.0,0.05,0.1,0.15,0.2,0.3,0.4,0.5,0.6,0.8,
1477                              1.0,1.2,1.5,2.0};
1478  const G4double cosxi[14] = {1.0000, 0.9905, 0.9631, 0.9208, 0.8680,
1479                              0.7478, 0.6303, 0.5290, 0.4471, 0.3323,
1480                              0.2610, 0.2145, 0.1696, 0.1261};
1481  for(i=0; i<14; i++) {
1482    COSEB[i] = coseb[i];
1483    COSXI[i] = cosxi[i];
1484  }
1485
1486  for(i=1; i<100; i++) {
1487    Z23[i] = std::pow(G4double(i),0.23);
1488  }
1489}
1490
1491//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
1492
Note: See TracBrowser for help on using the repository browser.