Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/utils/src/G4EmCorrections.cc

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

Diff markup

Differences between /processes/electromagnetic/utils/src/G4EmCorrections.cc (Version 11.3.0) and /processes/electromagnetic/utils/src/G4EmCorrections.cc (Version 11.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27 // -------------------------------------------     27 // -------------------------------------------------------------------
 28 //                                                 28 //
 29 // GEANT4 Class                                    29 // GEANT4 Class 
 30 //                                                 30 //
 31 // File name:     G4EmCorrections                  31 // File name:     G4EmCorrections
 32 //                                                 32 //
 33 // Author:        Vladimir Ivanchenko              33 // Author:        Vladimir Ivanchenko
 34 //                                                 34 //
 35 // Creation date: 13.01.2005                       35 // Creation date: 13.01.2005
 36 //                                                 36 //
 37 // Modifications:                                  37 // Modifications:
 38 // 05.05.2005 V.Ivanchenko Fix misprint in Mot     38 // 05.05.2005 V.Ivanchenko Fix misprint in Mott term
 39 // 26.11.2005 V.Ivanchenko Fix effective charg     39 // 26.11.2005 V.Ivanchenko Fix effective charge for heavy ions using original paper
 40 // 28.04.2006 V.Ivanchenko General cleanup, ad     40 // 28.04.2006 V.Ivanchenko General cleanup, add finite size corrections
 41 // 13.05.2006 V.Ivanchenko Add corrections for     41 // 13.05.2006 V.Ivanchenko Add corrections for ion stopping
 42 // 08.05.2007 V.Ivanchenko Use G4IonTable for      42 // 08.05.2007 V.Ivanchenko Use G4IonTable for ion mass instead of NistTable to avoid
 43 //                         division by zero        43 //                         division by zero
 44 // 29.02.2008 V.Ivanchenko use expantions for      44 // 29.02.2008 V.Ivanchenko use expantions for log and power function
 45 // 21.04.2008 Updated computations for ions (V     45 // 21.04.2008 Updated computations for ions (V.Ivanchenko)
 46 // 20.05.2008 Removed Finite Size correction (     46 // 20.05.2008 Removed Finite Size correction (V.Ivanchenko)
 47 // 19.04.2012 Fix reproducibility problem (A.R     47 // 19.04.2012 Fix reproducibility problem (A.Ribon)
 48 //                                                 48 //
 49 //                                                 49 //
 50 // Class Description:                              50 // Class Description:
 51 //                                                 51 //
 52 // This class provides calculation of EM corre     52 // This class provides calculation of EM corrections to ionisation
 53 //                                                 53 //
 54                                                    54 
 55 // -------------------------------------------     55 // -------------------------------------------------------------------
 56 //                                                 56 //
 57                                                    57 
 58 #include "G4EmCorrections.hh"                      58 #include "G4EmCorrections.hh"
 59 #include "G4PhysicalConstants.hh"                  59 #include "G4PhysicalConstants.hh"
 60 #include "G4SystemOfUnits.hh"                      60 #include "G4SystemOfUnits.hh"
 61 #include "G4ParticleTable.hh"                      61 #include "G4ParticleTable.hh"
 62 #include "G4IonTable.hh"                           62 #include "G4IonTable.hh"
 63 #include "G4VEmModel.hh"                           63 #include "G4VEmModel.hh"
 64 #include "G4Proton.hh"                             64 #include "G4Proton.hh"
 65 #include "G4GenericIon.hh"                         65 #include "G4GenericIon.hh"
 66 #include "G4PhysicsLogVector.hh"                   66 #include "G4PhysicsLogVector.hh"
 67 #include "G4ProductionCutsTable.hh"                67 #include "G4ProductionCutsTable.hh"
 68 #include "G4MaterialCutsCouple.hh"                 68 #include "G4MaterialCutsCouple.hh"
 69 #include "G4AtomicShells.hh"                       69 #include "G4AtomicShells.hh"
 70 #include "G4Log.hh"                                70 #include "G4Log.hh"
 71 #include "G4Exp.hh"                                71 #include "G4Exp.hh"
 72 #include "G4Pow.hh"                                72 #include "G4Pow.hh"
 73                                                    73 
 74 //....oooOO0OOooo........oooOO0OOooo........oo     74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 75                                                    75 
 76 namespace                                          76 namespace
 77 {                                                  77 {
 78   constexpr G4double inveplus = 1.0/CLHEP::epl     78   constexpr G4double inveplus = 1.0/CLHEP::eplus;
 79   constexpr G4double alpha2 = CLHEP::fine_stru     79   constexpr G4double alpha2 = CLHEP::fine_structure_const*CLHEP::fine_structure_const;
 80 }                                                  80 }
 81 const G4double G4EmCorrections::ZD[11] =           81 const G4double G4EmCorrections::ZD[11] = 
 82     {0., 0., 0., 1.72, 2.09, 2.48, 2.82, 3.16,     82     {0., 0., 0., 1.72, 2.09, 2.48, 2.82, 3.16, 3.53, 3.84, 4.15};
 83 const G4double G4EmCorrections::UK[20] = {1.99     83 const G4double G4EmCorrections::UK[20] = {1.9999, 2.0134, 2.0258, 2.0478, 2.0662,
 84                            2.0817, 2.0945, 2.0     84                            2.0817, 2.0945, 2.0999, 2.1049, 2.1132,
 85                            2.1197, 2.1246, 2.1     85                            2.1197, 2.1246, 2.1280, 2.1292, 2.1301,
 86                            2.1310, 2.1310, 2.1     86                            2.1310, 2.1310, 2.1300, 2.1283, 2.1271};
 87 const G4double G4EmCorrections::VK[20] = {8.34     87 const G4double G4EmCorrections::VK[20] = {8.3410, 8.3373, 8.3340, 8.3287, 8.3247,
 88                            8.3219, 8.3201, 8.3     88                            8.3219, 8.3201, 8.3194, 8.3191, 8.3188,
 89                            8.3191, 8.3199, 8.3     89                            8.3191, 8.3199, 8.3211, 8.3218, 8.3226,
 90                            8.3244, 8.3264, 8.3     90                            8.3244, 8.3264, 8.3285, 8.3308, 8.3320};
 91 G4double G4EmCorrections::ZK[] = {0.0};            91 G4double G4EmCorrections::ZK[] = {0.0};
 92 const G4double G4EmCorrections::Eta[29] = {0.0     92 const G4double G4EmCorrections::Eta[29] = {0.005, 0.007, 0.01, 0.015, 0.02,
 93                             0.03,  0.04,  0.05     93                             0.03,  0.04,  0.05, 0.06,  0.08,
 94                             0.1,   0.15,  0.2,     94                             0.1,   0.15,  0.2,  0.3,   0.4,
 95                             0.5,   0.6,   0.7,     95                             0.5,   0.6,   0.7,  0.8,   1.0,
 96                             1.2,   1.4,   1.5,     96                             1.2,   1.4,   1.5,  1.7,   2.0, 3.0, 5.0, 7.0, 10.};
 97 G4double G4EmCorrections::CK[20][29];              97 G4double G4EmCorrections::CK[20][29];
 98 G4double G4EmCorrections::CL[26][28];              98 G4double G4EmCorrections::CL[26][28];
 99 const G4double G4EmCorrections::UL[] = {0.1215     99 const G4double G4EmCorrections::UL[] = {0.1215, 0.5265, 0.8411, 1.0878, 1.2828,
100                            1.4379, 1.5032, 1.5    100                            1.4379, 1.5032, 1.5617, 1.6608, 1.7401,
101                            1.8036, 1.8543, 1.8    101                            1.8036, 1.8543, 1.8756, 1.8945, 1.9262,
102                            1.9508, 1.9696, 1.9    102                            1.9508, 1.9696, 1.9836, 1.9890, 1.9935,
103                            2.0001, 2.0039, 2.0    103                            2.0001, 2.0039, 2.0053, 2.0049, 2.0040, 2.0028};  
104 G4double G4EmCorrections::VL[] = {0.0};           104 G4double G4EmCorrections::VL[] = {0.0};
105 G4double G4EmCorrections::sWmaxBarkas = 10.0;     105 G4double G4EmCorrections::sWmaxBarkas = 10.0;
106                                                   106 
107 G4PhysicsFreeVector* G4EmCorrections::sBarkasC    107 G4PhysicsFreeVector* G4EmCorrections::sBarkasCorr = nullptr;
108 G4PhysicsFreeVector* G4EmCorrections::sThetaK     108 G4PhysicsFreeVector* G4EmCorrections::sThetaK = nullptr;
109 G4PhysicsFreeVector* G4EmCorrections::sThetaL     109 G4PhysicsFreeVector* G4EmCorrections::sThetaL = nullptr;
110                                                   110 
111 G4EmCorrections::G4EmCorrections(G4int verb)      111 G4EmCorrections::G4EmCorrections(G4int verb)
112   : verbose(verb)                                 112   : verbose(verb)
113 {                                                 113 {
114   eth = 2.0*CLHEP::MeV;                           114   eth = 2.0*CLHEP::MeV;
115   eCorrMin = 25.*CLHEP::keV;                      115   eCorrMin = 25.*CLHEP::keV;
116   eCorrMax = 1.*CLHEP::GeV;                       116   eCorrMax = 1.*CLHEP::GeV;
117                                                   117 
118   ionTable = G4ParticleTable::GetParticleTable    118   ionTable = G4ParticleTable::GetParticleTable()->GetIonTable();
119   g4calc = G4Pow::GetInstance();                  119   g4calc = G4Pow::GetInstance();
120                                                   120 
121   // fill vectors                                 121   // fill vectors
122   if (nullptr == sBarkasCorr) {                   122   if (nullptr == sBarkasCorr) {
123     Initialise();                                 123     Initialise();
124     isInitializer = true;                         124     isInitializer = true;
125   }                                               125   }
126 }                                                 126 }
127                                                   127 
128 //....oooOO0OOooo........oooOO0OOooo........oo    128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
129                                                   129 
130 G4EmCorrections::~G4EmCorrections()               130 G4EmCorrections::~G4EmCorrections()
131 {                                                 131 {
132   for (G4int i=0; i<nIons; ++i) { delete stopD    132   for (G4int i=0; i<nIons; ++i) { delete stopData[i]; }
133   if (isInitializer) {                            133   if (isInitializer) { 
134     delete sBarkasCorr;                           134     delete sBarkasCorr;
135     delete sThetaK;                               135     delete sThetaK;
136     delete sThetaL;                               136     delete sThetaL;
137     sBarkasCorr = sThetaK = sThetaL = nullptr;    137     sBarkasCorr = sThetaK = sThetaL = nullptr;
138   }                                               138   }
139 }                                                 139 }
140                                                   140 
141 void G4EmCorrections::SetupKinematics(const G4    141 void G4EmCorrections::SetupKinematics(const G4ParticleDefinition* p,
142               const G4Material* mat,              142               const G4Material* mat,
143               const G4double kineticEnergy)       143               const G4double kineticEnergy)
144 {                                                 144 {
145   if(kineticEnergy != kinEnergy || p != partic    145   if(kineticEnergy != kinEnergy || p != particle) {
146     particle = p;                                 146     particle = p;
147     kinEnergy = kineticEnergy;                    147     kinEnergy = kineticEnergy;
148     mass  = p->GetPDGMass();                      148     mass  = p->GetPDGMass();
149     tau   = kineticEnergy / mass;                 149     tau   = kineticEnergy / mass;
150     gamma = 1.0 + tau;                            150     gamma = 1.0 + tau;
151     bg2   = tau * (tau+2.0);                      151     bg2   = tau * (tau+2.0);
152     beta2 = bg2/(gamma*gamma);                    152     beta2 = bg2/(gamma*gamma);
153     beta  = std::sqrt(beta2);                     153     beta  = std::sqrt(beta2);
154     ba2   = beta2/alpha2;                         154     ba2   = beta2/alpha2;
155     const G4double ratio = CLHEP::electron_mas    155     const G4double ratio = CLHEP::electron_mass_c2/mass;
156     tmax  = 2.0*CLHEP::electron_mass_c2*bg2       156     tmax  = 2.0*CLHEP::electron_mass_c2*bg2 
157       /(1. + 2.0*gamma*ratio + ratio*ratio);      157       /(1. + 2.0*gamma*ratio + ratio*ratio);
158     charge  = p->GetPDGCharge()*inveplus;         158     charge  = p->GetPDGCharge()*inveplus;
159     if(charge > 1.5) { charge = effCharge.Effe    159     if(charge > 1.5) { charge = effCharge.EffectiveCharge(p,mat,kinEnergy); }
160     q2 = charge*charge;                           160     q2 = charge*charge;
161   }                                               161   }
162   if(mat != material) {                           162   if(mat != material) {
163     material = mat;                               163     material = mat;
164     theElementVector = material->GetElementVec    164     theElementVector = material->GetElementVector();
165     atomDensity  = material->GetAtomicNumDensi    165     atomDensity  = material->GetAtomicNumDensityVector(); 
166     numberOfElements = (G4int)material->GetNum    166     numberOfElements = (G4int)material->GetNumberOfElements();
167   }                                               167   }
168 }                                                 168 }
169                                                   169 
170 //....oooOO0OOooo........oooOO0OOooo........oo    170 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
171                                                   171 
172 G4double G4EmCorrections::HighOrderCorrections    172 G4double G4EmCorrections::HighOrderCorrections(const G4ParticleDefinition* p,
173                                                   173                                                const G4Material* mat,
174                                                   174                                                const G4double e, const G4double)
175 {                                                 175 {
176   // . Z^3 Barkas effect in the stopping power    176   // . Z^3 Barkas effect in the stopping power of matter for charged particles
177   //   J.C Ashley and R.H.Ritchie                 177   //   J.C Ashley and R.H.Ritchie
178   //   Physical review B Vol.5 No.7 1 April 19    178   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
179   //   and ICRU49 report                          179   //   and ICRU49 report
180   //   valid for kineticEnergy < 0.5 MeV          180   //   valid for kineticEnergy < 0.5 MeV
181   //   Other corrections from S.P.Ahlen Rev. M    181   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
182                                                   182 
183   SetupKinematics(p, mat, e);                     183   SetupKinematics(p, mat, e);
184   if(tau <= 0.0) { return 0.0; }                  184   if(tau <= 0.0) { return 0.0; }
185                                                   185 
186   const G4double Barkas = BarkasCorrection(p,     186   const G4double Barkas = BarkasCorrection(p, mat, e, true);
187   const G4double Bloch  = BlochCorrection(p, m    187   const G4double Bloch  = BlochCorrection(p, mat, e, true);
188   const G4double Mott = MottCorrection(p, mat,    188   const G4double Mott = MottCorrection(p, mat, e, true);
189                                                   189 
190   G4double sum = 2.0*(Barkas + Bloch) + Mott;     190   G4double sum = 2.0*(Barkas + Bloch) + Mott;
191                                                   191 
192   if(verbose > 1) {                               192   if(verbose > 1) {
193     G4cout << "EmCorrections: E(MeV)= " << e/M    193     G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
194            << " Bloch= " << Bloch << " Mott= "    194            << " Bloch= " << Bloch << " Mott= " << Mott 
195            << " Sum= " << sum << " q2= " << q2    195            << " Sum= " << sum << " q2= " << q2 << G4endl; 
196     G4cout << " ShellCorrection: " << ShellCor    196     G4cout << " ShellCorrection: " << ShellCorrection(p, mat, e) 
197            << " Kshell= " << KShellCorrection(    197            << " Kshell= " << KShellCorrection(p, mat, e)
198            << " Lshell= " << LShellCorrection(    198            << " Lshell= " << LShellCorrection(p, mat, e)
199            << "   " << mat->GetName() << G4end    199            << "   " << mat->GetName() << G4endl;
200   }                                               200   }
201   sum *= material->GetElectronDensity()*q2*CLH    201   sum *= material->GetElectronDensity()*q2*CLHEP::twopi_mc2_rcl2/beta2;
202   return sum;                                     202   return sum;
203 }                                                 203 }
204                                                   204 
205 //....oooOO0OOooo........oooOO0OOooo........oo    205 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
206                                                   206 
207 G4double G4EmCorrections::IonBarkasCorrection(    207 G4double G4EmCorrections::IonBarkasCorrection(const G4ParticleDefinition* p,
208                                                   208                                               const G4Material* mat,
209                                                   209                                               const G4double e)
210 {                                                 210 {
211   SetupKinematics(p, mat, e);                     211   SetupKinematics(p, mat, e);
212   return 2.0*BarkasCorrection(p, mat, e, true)    212   return 2.0*BarkasCorrection(p, mat, e, true)*
213     material->GetElectronDensity() * q2 * CLHE    213     material->GetElectronDensity() * q2 * CLHEP::twopi_mc2_rcl2 /beta2;
214 }                                                 214 }
215                                                   215 
216 //....oooOO0OOooo........oooOO0OOooo........oo    216 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
217                                                   217 
218 G4double G4EmCorrections::ComputeIonCorrection    218 G4double G4EmCorrections::ComputeIonCorrections(const G4ParticleDefinition* p,
219                                                   219                                                 const G4Material* mat,
220                                                   220                                                 const G4double e)
221 {                                                 221 {
222   // . Z^3 Barkas effect in the stopping power    222   // . Z^3 Barkas effect in the stopping power of matter for charged particles
223   //   J.C Ashley and R.H.Ritchie                 223   //   J.C Ashley and R.H.Ritchie
224   //   Physical review B Vol.5 No.7 1 April 19    224   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
225   //   and ICRU49 report                          225   //   and ICRU49 report
226   //   valid for kineticEnergy < 0.5 MeV          226   //   valid for kineticEnergy < 0.5 MeV
227   //   Other corrections from S.P.Ahlen Rev. M    227   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
228   SetupKinematics(p, mat, e);                     228   SetupKinematics(p, mat, e);
229   if(tau <= 0.0) { return 0.0; }                  229   if(tau <= 0.0) { return 0.0; }
230                                                   230 
231   const G4double Barkas = BarkasCorrection (p,    231   const G4double Barkas = BarkasCorrection (p, mat, e, true);
232   const G4double Bloch  = BlochCorrection (p,     232   const G4double Bloch  = BlochCorrection (p, mat, e, true);
233   const G4double Mott = MottCorrection (p, mat    233   const G4double Mott = MottCorrection (p, mat, e, true);
234                                                   234 
235   G4double sum = 2.0*(Barkas*(charge - 1.0)/ch    235   G4double sum = 2.0*(Barkas*(charge - 1.0)/charge + Bloch) + Mott;
236                                                   236 
237   if(verbose > 1) {                               237   if(verbose > 1) {
238     G4cout << "EmCorrections: E(MeV)= " << e/M    238     G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
239            << " Bloch= " << Bloch << " Mott= "    239            << " Bloch= " << Bloch << " Mott= " << Mott 
240            << " Sum= " << sum << G4endl;          240            << " Sum= " << sum << G4endl; 
241   }                                               241   }
242   sum *= material->GetElectronDensity() * q2 *    242   sum *= material->GetElectronDensity() * q2 * CLHEP::twopi_mc2_rcl2 /beta2;
243                                                   243 
244   if(verbose > 1) { G4cout << " Sum= " << sum     244   if(verbose > 1) { G4cout << " Sum= " << sum << G4endl; } 
245   return sum;                                     245   return sum;
246 }                                                 246 }
247                                                   247 
248 //....oooOO0OOooo........oooOO0OOooo........oo    248 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
249                                                   249 
250 G4double G4EmCorrections::IonHighOrderCorrecti    250 G4double G4EmCorrections::IonHighOrderCorrections(const G4ParticleDefinition* p,
251                                                   251                                                   const G4MaterialCutsCouple* couple,
252                                                   252                                                   const G4double e)
253 {                                                 253 {
254   // . Z^3 Barkas effect in the stopping power    254   // . Z^3 Barkas effect in the stopping power of matter for charged particles
255   //   J.C Ashley and R.H.Ritchie                 255   //   J.C Ashley and R.H.Ritchie
256   //   Physical review B Vol.5 No.7 1 April 19    256   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
257   //   and ICRU49 report                          257   //   and ICRU49 report
258   //   valid for kineticEnergy < 0.5 MeV          258   //   valid for kineticEnergy < 0.5 MeV
259   //   Other corrections from S.P.Ahlen Rev. M    259   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
260                                                   260 
261   G4double sum = 0.0;                             261   G4double sum = 0.0;
262                                                   262 
263   if (nullptr != ionHEModel) {                 << 263   if(nullptr != ionHEModel) {
264     G4int Z = G4lrint(p->GetPDGCharge()*invepl    264     G4int Z = G4lrint(p->GetPDGCharge()*inveplus);
265     Z = std::max(std::min(Z, 99), 1);             265     Z = std::max(std::min(Z, 99), 1);
266                                                   266 
267     const G4double ethscaled = eth*p->GetPDGMa    267     const G4double ethscaled = eth*p->GetPDGMass()/CLHEP::proton_mass_c2;
268     const G4int ionPDG = p->GetPDGEncoding();     268     const G4int ionPDG = p->GetPDGEncoding();
269     auto iter = thcorr.find(ionPDG);           << 269     if(thcorr.find(ionPDG)==thcorr.end()) {  // Not found: fill the map
270     if (iter == thcorr.end()) {  // Not found: << 
271       std::vector<G4double> v;                    270       std::vector<G4double> v;
272       for(std::size_t i=0; i<ncouples; ++i){      271       for(std::size_t i=0; i<ncouples; ++i){
273         v.push_back(ethscaled*ComputeIonCorrec    272         v.push_back(ethscaled*ComputeIonCorrections(p,currmat[i],ethscaled));
274       }                                           273       }
275       thcorr.insert(std::pair< G4int, std::vec    274       thcorr.insert(std::pair< G4int, std::vector<G4double> >(ionPDG,v)); 
276     }                                             275     }
277     G4double rest = 0.0;                       << 276 
278     iter = thcorr.find(ionPDG);                << 277     const G4double rest = (thcorr.find(ionPDG)->second)[couple->GetIndex()];
279     if (iter != thcorr.end()) { rest = (iter-> << 
280                                                   278 
281     sum = ComputeIonCorrections(p,couple->GetM    279     sum = ComputeIonCorrections(p,couple->GetMaterial(),e) - rest/e;
282                                                   280 
283     if(verbose > 1) {                             281     if(verbose > 1) { 
284       G4cout << " Sum= " << sum << " dSum= " <    282       G4cout << " Sum= " << sum << " dSum= " << rest/e << G4endl; 
285     }                                             283     } 
286   }                                               284   }
287   return sum;                                     285   return sum;
288 }                                                 286 }
289                                                   287 
290 //....oooOO0OOooo........oooOO0OOooo........oo    288 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
291                                                   289 
292 G4double G4EmCorrections::Bethe(const G4Partic    290 G4double G4EmCorrections::Bethe(const G4ParticleDefinition* p,
293                                 const G4Materi    291                                 const G4Material* mat, 
294                                 const G4double    292                                 const G4double e)
295 {                                                 293 {
296   SetupKinematics(p, mat, e);                     294   SetupKinematics(p, mat, e);
297   const G4double eexc  = material->GetIonisati    295   const G4double eexc  = material->GetIonisation()->GetMeanExcitationEnergy();
298   const G4double eexc2 = eexc*eexc;               296   const G4double eexc2 = eexc*eexc;
299   return 0.5*G4Log(2.0*electron_mass_c2*bg2*tm    297   return 0.5*G4Log(2.0*electron_mass_c2*bg2*tmax/eexc2)-beta2;
300 }                                                 298 }
301                                                   299 
302 //....oooOO0OOooo........oooOO0OOooo........oo    300 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
303                                                   301 
304 G4double G4EmCorrections::SpinCorrection(const    302 G4double G4EmCorrections::SpinCorrection(const G4ParticleDefinition* p,
305                                          const    303                                          const G4Material* mat,
306                                          const    304                                          const G4double e)
307 {                                                 305 {
308   SetupKinematics(p, mat, e);                     306   SetupKinematics(p, mat, e);
309   const G4double dedx  = 0.5*tmax/(kinEnergy +    307   const G4double dedx  = 0.5*tmax/(kinEnergy + mass);
310   return 0.5*dedx*dedx;                           308   return 0.5*dedx*dedx;
311 }                                                 309 }
312                                                   310 
313 //....oooOO0OOooo........oooOO0OOooo........oo    311 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
314                                                   312 
315 G4double G4EmCorrections:: KShellCorrection(co    313 G4double G4EmCorrections:: KShellCorrection(const G4ParticleDefinition* p,
316                                             co    314                                             const G4Material* mat, 
317                                             co    315                                             const G4double e)
318 {                                                 316 {
319   SetupKinematics(p, mat, e);                     317   SetupKinematics(p, mat, e);
320   G4double term = 0.0;                            318   G4double term = 0.0;
321   for (G4int i = 0; i<numberOfElements; ++i) {    319   for (G4int i = 0; i<numberOfElements; ++i) {
322                                                   320 
323     G4double Z = (*theElementVector)[i]->GetZ(    321     G4double Z = (*theElementVector)[i]->GetZ();
324     G4int   iz = (*theElementVector)[i]->GetZa    322     G4int   iz = (*theElementVector)[i]->GetZasInt();
325     G4double f = 1.0;                             323     G4double f = 1.0;
326     G4double Z2= (Z-0.3)*(Z-0.3);                 324     G4double Z2= (Z-0.3)*(Z-0.3);
327     if(1 == iz) {                                 325     if(1 == iz) {
328       f  = 0.5;                                   326       f  = 0.5;
329       Z2 = 1.0;                                   327       Z2 = 1.0;
330     }                                             328     }
331     const G4double eta = ba2/Z2;                  329     const G4double eta = ba2/Z2;
332     const G4double tet = (11 < iz) ? sThetaK->    330     const G4double tet = (11 < iz) ? sThetaK->Value(Z) : Z2*(1. + Z2*0.25*alpha2);
333     term += f*atomDensity[i]*KShell(tet,eta)/Z    331     term += f*atomDensity[i]*KShell(tet,eta)/Z;
334   }                                               332   }
335                                                   333 
336   term /= material->GetTotNbOfAtomsPerVolume()    334   term /= material->GetTotNbOfAtomsPerVolume();
337                                                   335 
338   return term;                                    336   return term;
339 }                                                 337 }
340                                                   338 
341 //....oooOO0OOooo........oooOO0OOooo........oo    339 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
342                                                   340 
343 G4double G4EmCorrections:: LShellCorrection(co    341 G4double G4EmCorrections:: LShellCorrection(const G4ParticleDefinition* p,
344                                             co    342                                             const G4Material* mat, 
345                                             co    343                                             const G4double e)
346 {                                                 344 {
347   SetupKinematics(p, mat, e);                     345   SetupKinematics(p, mat, e);
348   G4double term = 0.0;                            346   G4double term = 0.0;
349   for (G4int i = 0; i<numberOfElements; ++i) {    347   for (G4int i = 0; i<numberOfElements; ++i) {
350                                                   348 
351     const G4double Z = (*theElementVector)[i]-    349     const G4double Z = (*theElementVector)[i]->GetZ();
352     const G4int iz = (*theElementVector)[i]->G    350     const G4int iz = (*theElementVector)[i]->GetZasInt();
353     if(2 < iz) {                                  351     if(2 < iz) {
354       const G4double Zeff = (iz < 10) ? Z - ZD    352       const G4double Zeff = (iz < 10) ? Z - ZD[iz] : Z - ZD[10];
355       const G4double Z2= Zeff*Zeff;               353       const G4double Z2= Zeff*Zeff;
356       const G4double eta = ba2/Z2;                354       const G4double eta = ba2/Z2;
357       G4double tet = sThetaL->Value(Z);           355       G4double tet = sThetaL->Value(Z);
358       G4int nmax = std::min(4, G4AtomicShells:    356       G4int nmax = std::min(4, G4AtomicShells::GetNumberOfShells(iz));
359       for (G4int j=1; j<nmax; ++j) {              357       for (G4int j=1; j<nmax; ++j) {
360         G4int ne = G4AtomicShells::GetNumberOf    358         G4int ne = G4AtomicShells::GetNumberOfElectrons(iz,j);
361         if (15 >= iz) {                           359         if (15 >= iz) {
362           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2*    360           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2*alpha2/16.) : 
363             0.25*Z2*(1.0 + Z2*alpha2/16.);        361             0.25*Z2*(1.0 + Z2*alpha2/16.);
364         }                                         362         }
365         //G4cout << " LShell: j= " << j << " n    363         //G4cout << " LShell: j= " << j << " ne= " << ne << " e(eV)= " << e/eV
366         //       << " ThetaL= " << tet << G4en    364         //       << " ThetaL= " << tet << G4endl;
367         term += 0.125*ne*atomDensity[i]*LShell    365         term += 0.125*ne*atomDensity[i]*LShell(tet,eta)/Z;
368       }                                           366       }
369     }                                             367     }
370   }                                               368   }
371                                                   369 
372   term /= material->GetTotNbOfAtomsPerVolume()    370   term /= material->GetTotNbOfAtomsPerVolume();
373                                                   371 
374   return term;                                    372   return term;
375 }                                                 373 }
376                                                   374 
377 //....oooOO0OOooo........oooOO0OOooo........oo    375 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
378                                                   376 
379 G4double G4EmCorrections::KShell(const G4doubl    377 G4double G4EmCorrections::KShell(const G4double tet, const G4double eta)
380 {                                                 378 {
381   G4double corr = 0.0;                            379   G4double corr = 0.0;
382                                                   380 
383   static const G4double TheK[20] =                381   static const G4double TheK[20] = 
384     {0.64, 0.65, 0.66, 0.68, 0.70, 0.72, 0.74,    382     {0.64, 0.65, 0.66, 0.68, 0.70, 0.72, 0.74, 0.75, 0.76, 0.78,
385      0.80, 0.82, 0.84, 0.85, 0.86, 0.88, 0.90,    383      0.80, 0.82, 0.84, 0.85, 0.86, 0.88, 0.90, 0.92, 0.94, 0.95};
386                                                   384 
387                                                   385 
388   G4double x = tet;                               386   G4double x = tet;
389   G4int itet = 0;                                 387   G4int itet = 0;
390   G4int ieta = 0;                                 388   G4int ieta = 0;
391   if(tet < TheK[0]) {                             389   if(tet < TheK[0]) { 
392     x =  TheK[0];                                 390     x =  TheK[0]; 
393   } else if(tet > TheK[nK-1]) {                   391   } else if(tet > TheK[nK-1]) { 
394     x =  TheK[nK-1];                              392     x =  TheK[nK-1];
395     itet = nK-2;                                  393     itet = nK-2; 
396   } else {                                        394   } else { 
397     itet = Index(x, TheK, nK);                    395     itet = Index(x, TheK, nK);
398   }                                               396   }
399   // asymptotic case                              397   // asymptotic case
400   if(eta >= Eta[nEtaK-1]) {                       398   if(eta >= Eta[nEtaK-1]) {
401     corr =                                        399     corr = 
402       (Value(x, TheK[itet], TheK[itet+1], UK[i    400       (Value(x, TheK[itet], TheK[itet+1], UK[itet], UK[itet+1]) + 
403        Value(x, TheK[itet], TheK[itet+1], VK[i    401        Value(x, TheK[itet], TheK[itet+1], VK[itet], VK[itet+1])/eta +
404        Value(x, TheK[itet], TheK[itet+1], ZK[i    402        Value(x, TheK[itet], TheK[itet+1], ZK[itet], ZK[itet+1])/(eta*eta))/eta;
405   } else {                                        403   } else {
406     G4double y = eta;                             404     G4double y = eta;
407     if(eta < Eta[0]) {                            405     if(eta < Eta[0]) { 
408       y = Eta[0];                                 406       y = Eta[0]; 
409     } else {                                      407     } else { 
410       ieta = Index(y, Eta, nEtaK);                408       ieta = Index(y, Eta, nEtaK);
411     }                                             409     }
412     corr = Value2(x, y, TheK[itet], TheK[itet+    410     corr = Value2(x, y, TheK[itet], TheK[itet+1], Eta[ieta], Eta[ieta+1],
413                   CK[itet][ieta], CK[itet+1][i    411                   CK[itet][ieta], CK[itet+1][ieta], 
414                   CK[itet][ieta+1], CK[itet+1]    412                   CK[itet][ieta+1], CK[itet+1][ieta+1]);
415     //G4cout << "   x= " <<x<<" y= "<<y<<" tet    413     //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheK[itet]
416     //           <<" "<< TheK[itet+1]<<" eta=     414     //           <<" "<< TheK[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
417     //           <<" CK= " << CK[itet][ieta]<<    415     //           <<" CK= " << CK[itet][ieta]<<" "<< CK[itet+1][ieta]
418     //           <<" "<< CK[itet][ieta+1]<<" "    416     //           <<" "<< CK[itet][ieta+1]<<" "<< CK[itet+1][ieta+1]<<G4endl;
419   }                                               417   }
420   //G4cout << "Kshell:  tet= " << tet << " eta    418   //G4cout << "Kshell:  tet= " << tet << " eta= " << eta << "  C= " << corr
421   //         << " itet= " << itet << "  ieta=     419   //         << " itet= " << itet << "  ieta= " << ieta <<G4endl;
422   return corr;                                    420   return corr;
423 }                                                 421 }
424                                                   422 
425 //....oooOO0OOooo........oooOO0OOooo........oo    423 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
426                                                   424 
427 G4double G4EmCorrections::LShell(const G4doubl    425 G4double G4EmCorrections::LShell(const G4double tet, const G4double eta)
428 {                                                 426 {
429   G4double corr = 0.0;                            427   G4double corr = 0.0;
430                                                   428 
431   static const G4double TheL[26] =                429   static const G4double TheL[26] = 
432     {0.24, 0.26, 0.28, 0.30, 0.32,   0.34, 0.3    430     {0.24, 0.26, 0.28, 0.30, 0.32,   0.34, 0.35, 0.36, 0.38, 0.40,
433      0.42, 0.44, 0.45, 0.46, 0.48,   0.50, 0.5    431      0.42, 0.44, 0.45, 0.46, 0.48,   0.50, 0.52, 0.54, 0.55, 0.56,
434      0.58, 0.60, 0.62, 0.64, 0.65,   0.66};       432      0.58, 0.60, 0.62, 0.64, 0.65,   0.66};
435                                                   433 
436   G4double x = tet;                               434   G4double x = tet;
437   G4int itet = 0;                                 435   G4int itet = 0;
438   G4int ieta = 0;                                 436   G4int ieta = 0;
439   if(tet < TheL[0]) {                             437   if(tet < TheL[0]) { 
440     x =  TheL[0];                                 438     x =  TheL[0]; 
441   } else if(tet > TheL[nL-1]) {                   439   } else if(tet > TheL[nL-1]) { 
442     x =  TheL[nL-1];                              440     x =  TheL[nL-1];
443     itet = nL-2;                                  441     itet = nL-2; 
444   } else {                                        442   } else { 
445     itet = Index(x, TheL, nL);                    443     itet = Index(x, TheL, nL);
446   }                                               444   }
447                                                   445 
448   // asymptotic case                              446   // asymptotic case
449   if(eta >= Eta[nEtaL-1]) {                       447   if(eta >= Eta[nEtaL-1]) {
450     corr = (Value(x, TheL[itet], TheL[itet+1],    448     corr = (Value(x, TheL[itet], TheL[itet+1], UL[itet], UL[itet+1])
451               + Value(x, TheL[itet], TheL[itet    449               + Value(x, TheL[itet], TheL[itet+1], VL[itet], VL[itet+1])/eta
452             )/eta;                                450             )/eta;
453   } else {                                        451   } else {
454     G4double y = eta;                             452     G4double y = eta;
455     if(eta < Eta[0]) {                            453     if(eta < Eta[0]) { 
456       y =  Eta[0];                                454       y =  Eta[0]; 
457     } else {                                      455     } else { 
458       ieta = Index(y, Eta, nEtaL);                456       ieta = Index(y, Eta, nEtaL);
459     }                                             457     }
460     corr = Value2(x, y, TheL[itet], TheL[itet+    458     corr = Value2(x, y, TheL[itet], TheL[itet+1], Eta[ieta], Eta[ieta+1],
461                   CL[itet][ieta], CL[itet+1][i    459                   CL[itet][ieta], CL[itet+1][ieta], 
462                   CL[itet][ieta+1], CL[itet+1]    460                   CL[itet][ieta+1], CL[itet+1][ieta+1]);
463     //G4cout << "   x= " <<x<<" y= "<<y<<" tet    461     //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheL[itet]
464     //           <<" "<< TheL[itet+1]<<" eta=     462     //           <<" "<< TheL[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
465     //           <<" CL= " << CL[itet][ieta]<<    463     //           <<" CL= " << CL[itet][ieta]<<" "<< CL[itet+1][ieta]
466     //           <<" "<< CL[itet][ieta+1]<<" "    464     //           <<" "<< CL[itet][ieta+1]<<" "<< CL[itet+1][ieta+1]<<G4endl;
467   }                                               465   }
468   //G4cout<<"Lshell:  tet= "<<tet<<" eta= "<<e    466   //G4cout<<"Lshell:  tet= "<<tet<<" eta= "<<eta<<" itet= "<<itet
469   //        <<" ieta= "<<ieta<<"  Corr= "<<cor    467   //        <<" ieta= "<<ieta<<"  Corr= "<<corr<<G4endl;
470   return corr;                                    468   return corr;
471 }                                                 469 }
472                                                   470 
473 //....oooOO0OOooo........oooOO0OOooo........oo    471 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
474                                                   472 
475 G4double G4EmCorrections::ShellCorrectionSTD(c    473 G4double G4EmCorrections::ShellCorrectionSTD(const G4ParticleDefinition* p,
476                                              c    474                                              const G4Material* mat, 
477                                              c    475                                              const G4double e)
478 {                                                 476 {
479   SetupKinematics(p, mat, e);                     477   SetupKinematics(p, mat, e);
480   G4double taulim= 8.0*MeV/mass;                  478   G4double taulim= 8.0*MeV/mass;
481   G4double bg2lim= taulim * (taulim+2.0);         479   G4double bg2lim= taulim * (taulim+2.0);
482                                                   480 
483   G4double* shellCorrectionVector =               481   G4double* shellCorrectionVector =
484             material->GetIonisation()->GetShel    482             material->GetIonisation()->GetShellCorrectionVector();
485   G4double sh = 0.0;                              483   G4double sh = 0.0;
486   G4double x  = 1.0;                              484   G4double x  = 1.0;
487   G4double taul  = material->GetIonisation()->    485   G4double taul  = material->GetIonisation()->GetTaul();
488                                                   486 
489   if ( bg2 >= bg2lim ) {                          487   if ( bg2 >= bg2lim ) {
490     for (G4int k=0; k<3; ++k) {                   488     for (G4int k=0; k<3; ++k) {
491         x *= bg2 ;                                489         x *= bg2 ;
492         sh += shellCorrectionVector[k]/x;         490         sh += shellCorrectionVector[k]/x;
493     }                                             491     }
494                                                   492 
495   } else {                                        493   } else {
496     for (G4int k=0; k<3; ++k) {                   494     for (G4int k=0; k<3; ++k) {
497         x *= bg2lim ;                             495         x *= bg2lim ;
498         sh += shellCorrectionVector[k]/x;         496         sh += shellCorrectionVector[k]/x;
499     }                                             497     }
500     sh *= G4Log(tau/taul)/G4Log(taulim/taul);     498     sh *= G4Log(tau/taul)/G4Log(taulim/taul);
501   }                                               499   }
502   sh *= 0.5;                                      500   sh *= 0.5;
503   return sh;                                      501   return sh;
504 }                                                 502 }
505                                                   503 
506                                                   504 
507 //....oooOO0OOooo........oooOO0OOooo........oo    505 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
508                                                   506 
509 G4double G4EmCorrections::ShellCorrection(cons    507 G4double G4EmCorrections::ShellCorrection(const G4ParticleDefinition* p,
510                                           cons    508                                           const G4Material* mat,
511                                           cons    509                                           const G4double ekin)
512 {                                                 510 {
513   SetupKinematics(p, mat, ekin);                  511   SetupKinematics(p, mat, ekin);
514   G4double term = 0.0;                            512   G4double term = 0.0;
515   //G4cout << "### G4EmCorrections::ShellCorre    513   //G4cout << "### G4EmCorrections::ShellCorrection " << mat->GetName()
516   //       << "   " << ekin/MeV << " MeV " <<     514   //       << "   " << ekin/MeV << " MeV " << G4endl;
517   for (G4int i = 0; i<numberOfElements; ++i) {    515   for (G4int i = 0; i<numberOfElements; ++i) {
518                                                   516 
519     G4double res = 0.0;                           517     G4double res = 0.0;
520     G4double res0 = 0.0;                          518     G4double res0 = 0.0;
521     const G4double Z = (*theElementVector)[i]-    519     const G4double Z = (*theElementVector)[i]->GetZ();
522     const G4int iz = (*theElementVector)[i]->G    520     const G4int iz = (*theElementVector)[i]->GetZasInt();
523     G4double Z2= (Z-0.3)*(Z-0.3);                 521     G4double Z2= (Z-0.3)*(Z-0.3);
524     G4double f = 1.0;                             522     G4double f = 1.0;
525     if(1 == iz) {                                 523     if(1 == iz) {
526       f  = 0.5;                                   524       f  = 0.5;
527       Z2 = 1.0;                                   525       Z2 = 1.0;
528     }                                             526     }
529     G4double eta = ba2/Z2;                        527     G4double eta = ba2/Z2;
530     G4double tet = (11 < iz) ? sThetaK->Value(    528     G4double tet = (11 < iz) ? sThetaK->Value(Z) : Z2*(1. + Z2*0.25*alpha2);
531     res0 = f*KShell(tet,eta);                     529     res0 = f*KShell(tet,eta);
532     res += res0;                                  530     res += res0;
533     //G4cout << " Z= " << iz << " Shell 0" <<     531     //G4cout << " Z= " << iz << " Shell 0" << " tet= " << tet 
534     //       << " eta= " << eta << "  resK= "     532     //       << " eta= " << eta << "  resK= " << res0 << G4endl;
535                                                   533 
536     if(2 < iz) {                                  534     if(2 < iz) {
537       const G4double Zeff = (iz < 10) ? Z - ZD    535       const G4double Zeff = (iz < 10) ? Z - ZD[iz] : Z - ZD[10];
538       Z2= Zeff*Zeff;                              536       Z2= Zeff*Zeff;
539       eta = ba2/Z2;                               537       eta = ba2/Z2;
540       tet = sThetaL->Value(Z);                    538       tet = sThetaL->Value(Z);
541       f = 0.125;                                  539       f = 0.125;
542       const G4int ntot = G4AtomicShells::GetNu    540       const G4int ntot = G4AtomicShells::GetNumberOfShells(iz);
543       const G4int nmax = std::min(4, ntot);       541       const G4int nmax = std::min(4, ntot);
544       G4double norm   = 0.0;                      542       G4double norm   = 0.0;
545       G4double eshell = 0.0;                      543       G4double eshell = 0.0;
546       for(G4int j=1; j<nmax; ++j) {               544       for(G4int j=1; j<nmax; ++j) {
547         G4int ne = G4AtomicShells::GetNumberOf    545         G4int ne = G4AtomicShells::GetNumberOfElectrons(iz,j);
548         if(15 >= iz) {                            546         if(15 >= iz) {
549           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2*    547           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2*alpha2/16.) :
550       0.25*Z2*(1.0 + Z2*alpha2/16.);              548       0.25*Z2*(1.0 + Z2*alpha2/16.);
551         }                                         549         }
552         norm   += ne;                             550         norm   += ne;
553         eshell += tet*ne;                         551         eshell += tet*ne;
554         res0 = f*ne*LShell(tet,eta);              552         res0 = f*ne*LShell(tet,eta);
555         res += res0;                              553         res += res0;
556         //G4cout << " Zeff= " << Zeff << " She    554         //G4cout << " Zeff= " << Zeff << " Shell " << j << " Ne= " << ne
557         //       << " tet= " << tet << " eta=     555         //       << " tet= " << tet << " eta= " << eta 
558         //       << "  resL= " << res0 << G4en    556         //       << "  resL= " << res0 << G4endl;
559       }                                           557       }
560       if(ntot > nmax) {                           558       if(ntot > nmax) {
561   if (norm > 0.0) { norm = 1.0/norm; }         << 559         eshell /= norm;
562         eshell *= norm;                        << 
563                                                   560 
564   static const G4double HM[53] = {                561   static const G4double HM[53] = {
565     12.0, 12.0, 12.0, 12.0, 11.9, 11.7, 11.5,     562     12.0, 12.0, 12.0, 12.0, 11.9, 11.7, 11.5, 11.2, 10.8, 10.4,
566     10.0,  9.51, 8.97, 8.52, 8.03, 7.46, 6.95,    563     10.0,  9.51, 8.97, 8.52, 8.03, 7.46, 6.95, 6.53, 6.18, 5.87, 
567     5.61,  5.39, 5.19, 5.01, 4.86, 4.72, 4.62,    564     5.61,  5.39, 5.19, 5.01, 4.86, 4.72, 4.62, 4.53, 4.44, 4.38, 
568     4.32,  4.26, 4.20, 4.15, 4.1,  4.04, 4.00,    565     4.32,  4.26, 4.20, 4.15, 4.1,  4.04, 4.00, 3.95, 3.93, 3.91, 
569     3.90,  3.89, 3.89, 3.88, 3.88, 3.88, 3.88,    566     3.90,  3.89, 3.89, 3.88, 3.88, 3.88, 3.88, 3.88, 3.89, 3.89, 
570     3.90, 3.92, 3.93 };                           567     3.90, 3.92, 3.93 };
571   static const G4double HN[31] = {                568   static const G4double HN[31] = {
572     75.5, 61.9, 52.2, 45.1, 39.6, 35.4, 31.9,     569     75.5, 61.9, 52.2, 45.1, 39.6, 35.4, 31.9, 29.1, 27.2, 25.8, 
573     24.5, 23.6, 22.7, 22.0, 21.4, 20.9, 20.5,     570     24.5, 23.6, 22.7, 22.0, 21.4, 20.9, 20.5, 20.2, 19.9, 19.7, 
574     19.5, 19.3, 19.2, 19.1, 18.4, 18.8, 18.7,     571     19.5, 19.3, 19.2, 19.1, 18.4, 18.8, 18.7, 18.6, 18.5, 18.4, 
575     18.2};                                        572     18.2};
576                                                   573 
577         // Add M-shell                            574         // Add M-shell
578         if(28 > iz) {                             575         if(28 > iz) {
579           res += f*(iz - 10)*LShell(eshell,HM[    576           res += f*(iz - 10)*LShell(eshell,HM[iz-11]*eta);
580         } else if(63 > iz) {                      577         } else if(63 > iz) { 
581           res += f*18*LShell(eshell,HM[iz-11]*    578           res += f*18*LShell(eshell,HM[iz-11]*eta);
582         } else {                                  579         } else {
583           res += f*18*LShell(eshell,HM[52]*eta    580           res += f*18*LShell(eshell,HM[52]*eta);
584         }                                         581         }
585         // Add N-shell                            582         // Add N-shell
586         if(32 < iz) {                             583         if(32 < iz) {
587           if(60 > iz) {                           584           if(60 > iz) {
588             res += f*(iz - 28)*LShell(eshell,H    585             res += f*(iz - 28)*LShell(eshell,HN[iz-33]*eta);
589           } else if(63 > iz) {                    586           } else if(63 > iz) {
590             res += 4*LShell(eshell,HN[iz-33]*e    587             res += 4*LShell(eshell,HN[iz-33]*eta);
591           } else {                                588           } else {
592             res += 4*LShell(eshell,HN[30]*eta)    589             res += 4*LShell(eshell,HN[30]*eta);
593           }                                       590           }
594           // Add O-P-shells                       591           // Add O-P-shells
595           if(60 < iz) {                           592           if(60 < iz) {
596             res += f*(iz - 60)*LShell(eshell,1    593             res += f*(iz - 60)*LShell(eshell,150*eta);
597           }                                       594           }
598         }                                         595         }
599       }                                           596       }
600     }                                             597     }
601     term += res*atomDensity[i]/Z;                 598     term += res*atomDensity[i]/Z;
602   }                                               599   }
603                                                   600 
604   term /= material->GetTotNbOfAtomsPerVolume()    601   term /= material->GetTotNbOfAtomsPerVolume();
605   //G4cout << "##Shell Correction=" << term <<    602   //G4cout << "##Shell Correction=" << term << G4endl;
606   return term;                                    603   return term;
607 }                                                 604 }
608                                                   605 
609 //....oooOO0OOooo........oooOO0OOooo........oo    606 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
610                                                   607 
611 G4double G4EmCorrections::DensityCorrection(co    608 G4double G4EmCorrections::DensityCorrection(const G4ParticleDefinition* p,
612                                             co    609                                             const G4Material* mat,
613                                             co    610                                             const G4double e)
614 {                                                 611 {
615   SetupKinematics(p, mat, e);                     612   SetupKinematics(p, mat, e);
616                                                   613 
617   G4double cden  = material->GetIonisation()->    614   G4double cden  = material->GetIonisation()->GetCdensity();
618   G4double mden  = material->GetIonisation()->    615   G4double mden  = material->GetIonisation()->GetMdensity();
619   G4double aden  = material->GetIonisation()->    616   G4double aden  = material->GetIonisation()->GetAdensity();
620   G4double x0den = material->GetIonisation()->    617   G4double x0den = material->GetIonisation()->GetX0density();
621   G4double x1den = material->GetIonisation()->    618   G4double x1den = material->GetIonisation()->GetX1density();
622                                                   619 
623   G4double dedx = 0.0;                            620   G4double dedx = 0.0;
624                                                   621 
625   // density correction                           622   // density correction
626   static const G4double twoln10 = 2.0*G4Log(10    623   static const G4double twoln10 = 2.0*G4Log(10.0);
627   G4double x = G4Log(bg2)/twoln10;                624   G4double x = G4Log(bg2)/twoln10;
628   if ( x >= x0den ) {                             625   if ( x >= x0den ) {
629     dedx = twoln10*x - cden ;                     626     dedx = twoln10*x - cden ;
630     if ( x < x1den ) dedx += aden*G4Exp(G4Log(    627     if ( x < x1den ) dedx += aden*G4Exp(G4Log(x1den-x)*mden) ;
631   }                                               628   }
632                                                   629 
633   return dedx;                                    630   return dedx;
634 }                                                 631 }
635                                                   632 
636 //....oooOO0OOooo........oooOO0OOooo........oo    633 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
637                                                   634 
638 G4double G4EmCorrections::BarkasCorrection(con    635 G4double G4EmCorrections::BarkasCorrection(const G4ParticleDefinition* p,
639                                            con    636                                            const G4Material* mat, 
640                                            con    637                                            const G4double e,
641                                            con    638                                            const G4bool isInitialized)
642 {                                                 639 {
643   // . Z^3 Barkas effect in the stopping power    640   // . Z^3 Barkas effect in the stopping power of matter for charged particles
644   //   J.C Ashley and R.H.Ritchie                 641   //   J.C Ashley and R.H.Ritchie
645   //   Physical review B Vol.5 No.7 1 April 19    642   //   Physical review B Vol.5 No.7 1 April 1972 pp. 2393-2397
646   //   valid for kineticEnergy > 0.5 MeV          643   //   valid for kineticEnergy > 0.5 MeV
647                                                   644 
648   if (!isInitialized) { SetupKinematics(p, mat    645   if (!isInitialized) { SetupKinematics(p, mat, e); }
649   G4double BarkasTerm = 0.0;                      646   G4double BarkasTerm = 0.0;
650                                                   647 
651   for (G4int i = 0; i<numberOfElements; ++i) {    648   for (G4int i = 0; i<numberOfElements; ++i) {
652                                                   649 
653     const G4int iz = (*theElementVector)[i]->G    650     const G4int iz = (*theElementVector)[i]->GetZasInt();
654     if(iz == 47) {                                651     if(iz == 47) {
655       BarkasTerm += atomDensity[i]*0.006812*G4    652       BarkasTerm += atomDensity[i]*0.006812*G4Exp(-G4Log(beta)*0.9);
656     } else if(iz >= 64) {                         653     } else if(iz >= 64) {
657       BarkasTerm += atomDensity[i]*0.002833*G4    654       BarkasTerm += atomDensity[i]*0.002833*G4Exp(-G4Log(beta)*1.2);
658     } else {                                      655     } else {    
659                                                   656 
660       const G4double Z = (*theElementVector)[i    657       const G4double Z = (*theElementVector)[i]->GetZ();
661       const G4double X = ba2 / Z;                 658       const G4double X = ba2 / Z;
662       G4double b = 1.3;                           659       G4double b = 1.3;
663       if(1 == iz) { b = (material->GetName() =    660       if(1 == iz) { b = (material->GetName() == "G4_lH2") ? 0.6 : 1.8; }
664       else if(2 == iz)  { b = 0.6; }              661       else if(2 == iz)  { b = 0.6; }
665       else if(10 >= iz) { b = 1.8; }              662       else if(10 >= iz) { b = 1.8; }
666       else if(17 >= iz) { b = 1.4; }              663       else if(17 >= iz) { b = 1.4; }
667       else if(18 == iz) { b = 1.8; }              664       else if(18 == iz) { b = 1.8; }
668       else if(25 >= iz) { b = 1.4; }              665       else if(25 >= iz) { b = 1.4; }
669       else if(50 >= iz) { b = 1.35;}              666       else if(50 >= iz) { b = 1.35;}
670                                                   667 
671       const G4double W = b/std::sqrt(X);          668       const G4double W = b/std::sqrt(X);
672                                                   669 
673       G4double val = sBarkasCorr->Value(W, idx    670       G4double val = sBarkasCorr->Value(W, idxBarkas);
674       if (W > sWmaxBarkas) { val *= (sWmaxBark    671       if (W > sWmaxBarkas) { val *= (sWmaxBarkas/W); } 
675       //    G4cout << "i= " << i << " b= " <<     672       //    G4cout << "i= " << i << " b= " << b << " W= " << W 
676       // << " Z= " << Z << " X= " << X << " va    673       // << " Z= " << Z << " X= " << X << " val= " << val<< G4endl;
677       BarkasTerm += val*atomDensity[i] / (std:    674       BarkasTerm += val*atomDensity[i] / (std::sqrt(Z*X)*X);
678     }                                             675     }
679   }                                               676   }
680                                                   677 
681   BarkasTerm *= 1.29*charge/material->GetTotNb    678   BarkasTerm *= 1.29*charge/material->GetTotNbOfAtomsPerVolume();
682                                                   679 
683   return BarkasTerm;                              680   return BarkasTerm;
684 }                                                 681 }
685                                                   682 
686 //....oooOO0OOooo........oooOO0OOooo........oo    683 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
687                                                   684 
688 G4double G4EmCorrections::BlochCorrection(cons    685 G4double G4EmCorrections::BlochCorrection(const G4ParticleDefinition* p,
689                                           cons    686                                           const G4Material* mat,
690                                           cons    687                                           const G4double e,
691                                           cons    688                                           const G4bool isInitialized)
692 {                                                 689 {
693   if (!isInitialized) { SetupKinematics(p, mat    690   if (!isInitialized) { SetupKinematics(p, mat, e); }
694                                                   691 
695   G4double y2 = q2/ba2;                           692   G4double y2 = q2/ba2;
696                                                   693 
697   G4double term = 1.0/(1.0 + y2);                 694   G4double term = 1.0/(1.0 + y2);
698   G4double del;                                   695   G4double del;
699   G4double j = 1.0;                               696   G4double j = 1.0;
700   do {                                            697   do {
701     j += 1.0;                                     698     j += 1.0;
702     del = 1.0/(j* (j*j + y2));                    699     del = 1.0/(j* (j*j + y2));
703     term += del;                                  700     term += del;
704     // Loop checking, 03-Aug-2015, Vladimir Iv    701     // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
705   } while (del > 0.01*term);                      702   } while (del > 0.01*term);
706                                                   703 
707   return -y2*term;                                704   return -y2*term;
708 }                                                 705 }
709                                                   706 
710 //....oooOO0OOooo........oooOO0OOooo........oo    707 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
711                                                   708 
712 G4double G4EmCorrections::MottCorrection(const    709 G4double G4EmCorrections::MottCorrection(const G4ParticleDefinition* p,
713                                          const    710                                          const G4Material* mat, 
714                                          const    711                                          const G4double e,
715                                          const    712                                          const G4bool isInitialized)
716 {                                                 713 {
717   if (!isInitialized) { SetupKinematics(p, mat    714   if (!isInitialized) { SetupKinematics(p, mat, e); }
718   return CLHEP::pi*CLHEP::fine_structure_const    715   return CLHEP::pi*CLHEP::fine_structure_const*beta*charge;
719 }                                                 716 }
720                                                   717 
721 //....oooOO0OOooo........oooOO0OOooo........oo    718 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
722                                                   719 
723 G4double                                          720 G4double 
724 G4EmCorrections::EffectiveChargeCorrection(con    721 G4EmCorrections::EffectiveChargeCorrection(const G4ParticleDefinition* p,
725                                            con    722                                            const G4Material* mat,
726                                            con    723                                            const G4double ekin)
727 {                                                 724 {
728   G4double factor = 1.0;                          725   G4double factor = 1.0;
729   if(p->GetPDGCharge() <= 2.5*CLHEP::eplus ||     726   if(p->GetPDGCharge() <= 2.5*CLHEP::eplus || nIons <= 0) { return factor; }
730                                                   727   
731   if(verbose > 1) {                               728   if(verbose > 1) {
732     G4cout << "EffectiveChargeCorrection: " <<    729     G4cout << "EffectiveChargeCorrection: " << p->GetParticleName() 
733            << " in " << mat->GetName()            730            << " in " << mat->GetName()
734            << " ekin(MeV)= " << ekin/MeV << G4    731            << " ekin(MeV)= " << ekin/MeV << G4endl;
735   }                                               732   }
736                                                   733 
737   if(p != curParticle || mat != curMaterial) {    734   if(p != curParticle || mat != curMaterial) {
738     curParticle = p;                              735     curParticle = p;
739     curMaterial = mat;                            736     curMaterial = mat;
740     curVector   = nullptr;                        737     curVector   = nullptr;
741     currentZ = p->GetAtomicNumber();              738     currentZ = p->GetAtomicNumber();
742     if(verbose > 1) {                             739     if(verbose > 1) {
743       G4cout << "G4EmCorrections::EffectiveCha    740       G4cout << "G4EmCorrections::EffectiveChargeCorrection: Zion= " 
744              << currentZ << " Aion= " << p->Ge    741              << currentZ << " Aion= " << p->GetPDGMass()/amu_c2 << G4endl;
745     }                                             742     }
746     massFactor = CLHEP::proton_mass_c2/p->GetP    743     massFactor = CLHEP::proton_mass_c2/p->GetPDGMass();
747     idx = -1;                                     744     idx = -1;
748                                                   745 
749     for(G4int i=0; i<nIons; ++i) {                746     for(G4int i=0; i<nIons; ++i) {
750       if(materialList[i] == mat && currentZ ==    747       if(materialList[i] == mat && currentZ == Zion[i]) {
751         idx = i;                                  748         idx = i;
752         break;                                    749         break;
753       }                                           750       }
754     }                                             751     }
755     //G4cout << " idx= " << idx << " dz= " <<     752     //G4cout << " idx= " << idx << " dz= " << G4endl;
756     if(idx >= 0) {                                753     if(idx >= 0) {
757       if(nullptr == ionList[idx]) { BuildCorre    754       if(nullptr == ionList[idx]) { BuildCorrectionVector(); } 
758       curVector = stopData[idx];                  755       curVector = stopData[idx];
759     } else {                                      756     } else { 
760       return factor;                              757       return factor;
761     }                                             758     }
762   }                                               759   }
763   if(nullptr != curVector) {                      760   if(nullptr != curVector) {
764     factor = curVector->Value(ekin*massFactor)    761     factor = curVector->Value(ekin*massFactor);
765     if(verbose > 1) {                             762     if(verbose > 1) {
766       G4cout << "E= " << ekin << " factor= " <    763       G4cout << "E= " << ekin << " factor= " << factor << " massfactor= " 
767              << massFactor << G4endl;             764              << massFactor << G4endl;
768     }                                             765     }
769   }                                               766   }
770   return factor;                                  767   return factor;
771 }                                                 768 }
772                                                   769 
773 //....oooOO0OOooo........oooOO0OOooo........oo    770 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
774                                                   771 
775 void G4EmCorrections::AddStoppingData(const G4    772 void G4EmCorrections::AddStoppingData(const G4int Z, const G4int A,
776                                       const G4    773                                       const G4String& mname,
777                                       G4Physic    774                                       G4PhysicsVector* dVector)
778 {                                                 775 {
779   G4int i = 0;                                    776   G4int i = 0;
780   for(; i<nIons; ++i) {                           777   for(; i<nIons; ++i) {
781     if(Z == Zion[i] && A == Aion[i] && mname =    778     if(Z == Zion[i] && A == Aion[i] && mname == materialName[i]) break;
782   }                                               779   }
783   if(i == nIons) {                                780   if(i == nIons) {
784     Zion.push_back(Z);                            781     Zion.push_back(Z);
785     Aion.push_back(A);                            782     Aion.push_back(A);
786     materialName.push_back(mname);                783     materialName.push_back(mname);
787     materialList.push_back(nullptr);              784     materialList.push_back(nullptr);
788     ionList.push_back(nullptr);                   785     ionList.push_back(nullptr);
789     stopData.push_back(dVector);                  786     stopData.push_back(dVector);
790     nIons++;                                      787     nIons++;
791     if(verbose > 1) {                             788     if(verbose > 1) {
792       G4cout << "AddStoppingData Z= " << Z <<     789       G4cout << "AddStoppingData Z= " << Z << " A= " << A << " " << mname
793              << "  idx= " << i << G4endl;         790              << "  idx= " << i << G4endl;
794     }                                             791     }
795   }                                               792   }
796 }                                                 793 }
797                                                   794 
798 //....oooOO0OOooo........oooOO0OOooo........oo    795 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
799                                                   796 
800 void G4EmCorrections::BuildCorrectionVector()     797 void G4EmCorrections::BuildCorrectionVector()
801 {                                                 798 {
802   if(nullptr == ionLEModel || nullptr == ionHE    799   if(nullptr == ionLEModel || nullptr == ionHEModel) {
803     return;                                       800     return;
804   }                                               801   }
805                                                   802 
806   const G4ParticleDefinition* ion = curParticl    803   const G4ParticleDefinition* ion = curParticle;
807   const G4ParticleDefinition* gion = G4Generic    804   const G4ParticleDefinition* gion = G4GenericIon::GenericIon();
808   G4int Z = Zion[idx];                            805   G4int Z = Zion[idx];
809   G4double A = Aion[idx];                         806   G4double A = Aion[idx];
810   G4PhysicsVector* v = stopData[idx];             807   G4PhysicsVector* v = stopData[idx];
811                                                   808       
812   if(verbose > 1) {                               809   if(verbose > 1) {
813     G4cout << "BuildCorrectionVector: Stopping    810     G4cout << "BuildCorrectionVector: Stopping for "
814            << curParticle->GetParticleName() <    811            << curParticle->GetParticleName() << " in " 
815            << materialName[idx] << " Ion Z= "     812            << materialName[idx] << " Ion Z= " << Z << " A= " << A
816            << " massFactor= " << massFactor <<    813            << " massFactor= " << massFactor << G4endl;
817     G4cout << "    Nbins=" << nbinCorr << " Em    814     G4cout << "    Nbins=" << nbinCorr << " Emin(MeV)=" << eCorrMin
818      << " Emax(MeV)=" << eCorrMax << " ion: "     815      << " Emax(MeV)=" << eCorrMax << " ion: "
819            << ion->GetParticleName() << G4endl    816            << ion->GetParticleName() << G4endl;
820   }                                               817   }
821                                                   818 
822   auto vv = new G4PhysicsLogVector(eCorrMin,eC    819   auto vv = new G4PhysicsLogVector(eCorrMin,eCorrMax,nbinCorr,false);
823   const G4double eth0 = v->Energy(0);             820   const G4double eth0 = v->Energy(0);
824   const G4double escal = eth/massFactor;          821   const G4double escal = eth/massFactor;
825   G4double qe =                                   822   G4double qe = 
826     effCharge.EffectiveChargeSquareRatio(curPa    823     effCharge.EffectiveChargeSquareRatio(curParticle, curMaterial, escal); 
827   const G4double dedxt =                          824   const G4double dedxt = 
828     ionLEModel->ComputeDEDXPerVolume(curMateri    825     ionLEModel->ComputeDEDXPerVolume(curMaterial, gion, eth, eth)*qe;
829   const G4double dedx1t =                         826   const G4double dedx1t = 
830     ionHEModel->ComputeDEDXPerVolume(curMateri    827     ionHEModel->ComputeDEDXPerVolume(curMaterial, gion, eth, eth)*qe 
831     + ComputeIonCorrections(curParticle, curMa    828     + ComputeIonCorrections(curParticle, curMaterial, escal);
832   const G4double rest = escal*(dedxt - dedx1t)    829   const G4double rest = escal*(dedxt - dedx1t);
833   if(verbose > 1) {                               830   if(verbose > 1) {
834     G4cout << "Escal(MeV)= " << escal << " qe=    831     G4cout << "Escal(MeV)= " << escal << " qe=" << qe 
835            << " dedxt= " << dedxt << " dedx1t=    832            << " dedxt= " << dedxt << " dedx1t= " << dedx1t << G4endl;   
836   }                                               833   }
837   for(G4int i=0; i<=nbinCorr; ++i) {              834   for(G4int i=0; i<=nbinCorr; ++i) {
838     // energy in the local table (GenericIon)     835     // energy in the local table (GenericIon)
839     G4double e = vv->Energy(i);                   836     G4double e = vv->Energy(i);
840     // energy of the real ion                     837     // energy of the real ion 
841     G4double eion = e/massFactor;                 838     G4double eion = e/massFactor;
842     // energy in the imput stopping data vecto    839     // energy in the imput stopping data vector
843     G4double e1 = eion/A;                         840     G4double e1 = eion/A;
844     G4double dedx = (e1 < eth0)                   841     G4double dedx = (e1 < eth0) 
845       ? v->Value(eth0)*std::sqrt(e1/eth0) : v-    842       ? v->Value(eth0)*std::sqrt(e1/eth0) : v->Value(e1);
846     qe = effCharge.EffectiveChargeSquareRatio(    843     qe = effCharge.EffectiveChargeSquareRatio(curParticle, curMaterial, eion);
847     G4double dedx1 = (e <= eth)                   844     G4double dedx1 = (e <= eth) 
848       ? ionLEModel->ComputeDEDXPerVolume(curMa    845       ? ionLEModel->ComputeDEDXPerVolume(curMaterial, gion, e, e)*qe
849       : ionHEModel->ComputeDEDXPerVolume(curMa    846       : ionHEModel->ComputeDEDXPerVolume(curMaterial, gion, e, e)*qe +
850       ComputeIonCorrections(curParticle, curMa    847       ComputeIonCorrections(curParticle, curMaterial, eion) + rest/eion;
851     vv->PutValue(i, dedx/dedx1);                  848     vv->PutValue(i, dedx/dedx1);
852     if(verbose > 1) {                             849     if(verbose > 1) {
853       G4cout << "E(MeV)=" << e/CLHEP::MeV << "    850       G4cout << "E(MeV)=" << e/CLHEP::MeV << " Eion=" << eion/CLHEP::MeV
854        << " e1=" << e1 << " dedxRatio= " << de    851        << " e1=" << e1 << " dedxRatio= " << dedx/dedx1
855              << " dedx="  << dedx << " dedx1="    852              << " dedx="  << dedx << " dedx1=" << dedx1 
856              << " qe=" << qe << " rest/eion="     853              << " qe=" << qe << " rest/eion=" << rest/eion << G4endl;
857     }                                             854     }
858   }                                               855   }
859   delete v;                                       856   delete v;
860   ionList[idx]  = ion;                            857   ionList[idx]  = ion;
861   stopData[idx] = vv;                             858   stopData[idx] = vv;
862   if(verbose > 1) { G4cout << "End data set "     859   if(verbose > 1) { G4cout << "End data set " << G4endl; }
863 }                                                 860 }
864                                                   861 
865 //....oooOO0OOooo........oooOO0OOooo........oo    862 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
866                                                   863 
867 void G4EmCorrections::InitialiseForNewRun()       864 void G4EmCorrections::InitialiseForNewRun()
868 {                                                 865 {
869   G4ProductionCutsTable* tb = G4ProductionCuts    866   G4ProductionCutsTable* tb = G4ProductionCutsTable::GetProductionCutsTable();
870   ncouples = tb->GetTableSize();                  867   ncouples = tb->GetTableSize();
871   if(currmat.size() != ncouples) {                868   if(currmat.size() != ncouples) {
872     currmat.resize(ncouples);                     869     currmat.resize(ncouples);
873     for(auto it = thcorr.begin(); it != thcorr    870     for(auto it = thcorr.begin(); it != thcorr.end(); ++it){
874       (it->second).clear();                       871       (it->second).clear();
875     }                                             872     }
876     thcorr.clear();                               873     thcorr.clear();
877     for(std::size_t i=0; i<ncouples; ++i) {       874     for(std::size_t i=0; i<ncouples; ++i) {
878       currmat[i] = tb->GetMaterialCutsCouple((    875       currmat[i] = tb->GetMaterialCutsCouple((G4int)i)->GetMaterial();
879       G4String nam = currmat[i]->GetName();       876       G4String nam = currmat[i]->GetName();
880       for(G4int j=0; j<nIons; ++j) {              877       for(G4int j=0; j<nIons; ++j) {
881         if(nam == materialName[j]) { materialL    878         if(nam == materialName[j]) { materialList[j] = currmat[i]; }
882       }                                           879       }
883     }                                             880     }
884   }                                               881   }
885 }                                                 882 }
886                                                   883 
887 //....oooOO0OOooo........oooOO0OOooo........oo    884 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
888                                                   885 
889 void G4EmCorrections::Initialise()                886 void G4EmCorrections::Initialise()
890 {                                                 887 {
891   // Z^3 Barkas effect in the stopping power o    888   // Z^3 Barkas effect in the stopping power of matter for charged particles
892   // J.C Ashley and R.H.Ritchie                   889   // J.C Ashley and R.H.Ritchie
893   // Physical review B Vol.5 No.7 1 April 1972    890   // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
894   // G.S. Khandelwal Nucl. Phys. A116(1968)97     891   // G.S. Khandelwal Nucl. Phys. A116(1968)97 - 111.
895   // "Shell corrections for K- and L- electron    892   // "Shell corrections for K- and L- electrons
896                                                   893 
897   G4int i, j;                                     894   G4int i, j;
898   static const G4double fTable[47][2] = {         895   static const G4double fTable[47][2] = {
899    { 0.02, 21.5},                                 896    { 0.02, 21.5},
900    { 0.03, 20.0},                                 897    { 0.03, 20.0},
901    { 0.04, 18.0},                                 898    { 0.04, 18.0},
902    { 0.05, 15.6},                                 899    { 0.05, 15.6},
903    { 0.06, 15.0},                                 900    { 0.06, 15.0},
904    { 0.07, 14.0},                                 901    { 0.07, 14.0},
905    { 0.08, 13.5},                                 902    { 0.08, 13.5},
906    { 0.09, 13.},                                  903    { 0.09, 13.},
907    { 0.1,  12.2},                                 904    { 0.1,  12.2},
908    { 0.2,  9.25},                                 905    { 0.2,  9.25},
909    { 0.3,  7.0},                                  906    { 0.3,  7.0},
910    { 0.4,  6.0},                                  907    { 0.4,  6.0},
911    { 0.5,  4.5},                                  908    { 0.5,  4.5},
912    { 0.6,  3.5},                                  909    { 0.6,  3.5},
913    { 0.7,  3.0},                                  910    { 0.7,  3.0},
914    { 0.8,  2.5},                                  911    { 0.8,  2.5},
915    { 0.9,  2.0},                                  912    { 0.9,  2.0},
916    { 1.0,  1.7},                                  913    { 1.0,  1.7},
917    { 1.2,  1.2},                                  914    { 1.2,  1.2},
918    { 1.3,  1.0},                                  915    { 1.3,  1.0},
919    { 1.4,  0.86},                                 916    { 1.4,  0.86},
920    { 1.5,  0.7},                                  917    { 1.5,  0.7},
921    { 1.6,  0.61},                                 918    { 1.6,  0.61},
922    { 1.7,  0.52},                                 919    { 1.7,  0.52},
923    { 1.8,  0.5},                                  920    { 1.8,  0.5},
924    { 1.9,  0.43},                                 921    { 1.9,  0.43},
925    { 2.0,  0.42},                                 922    { 2.0,  0.42},
926    { 2.1,  0.3},                                  923    { 2.1,  0.3},
927    { 2.4,  0.2},                                  924    { 2.4,  0.2},
928    { 3.0,  0.13},                                 925    { 3.0,  0.13},
929    { 3.08, 0.1},                                  926    { 3.08, 0.1},
930    { 3.1,  0.09},                                 927    { 3.1,  0.09},
931    { 3.3,  0.08},                                 928    { 3.3,  0.08},
932    { 3.5,  0.07},                                 929    { 3.5,  0.07},
933    { 3.8,  0.06},                                 930    { 3.8,  0.06},
934    { 4.0,  0.051},                                931    { 4.0,  0.051},
935    { 4.1,  0.04},                                 932    { 4.1,  0.04},
936    { 4.8,  0.03},                                 933    { 4.8,  0.03},
937    { 5.0,  0.024},                                934    { 5.0,  0.024},
938    { 5.1,  0.02},                                 935    { 5.1,  0.02},
939    { 6.0,  0.013},                                936    { 6.0,  0.013},
940    { 6.5,  0.01},                                 937    { 6.5,  0.01},
941    { 7.0,  0.009},                                938    { 7.0,  0.009},
942    { 7.1,  0.008},                                939    { 7.1,  0.008},
943    { 8.0,  0.006},                                940    { 8.0,  0.006},
944    { 9.0,  0.0032},                               941    { 9.0,  0.0032},
945    { 10.0, 0.0025} };                             942    { 10.0, 0.0025} };
946                                                   943 
947   sBarkasCorr = new G4PhysicsFreeVector(47, fa    944   sBarkasCorr = new G4PhysicsFreeVector(47, false);
948   for(i=0; i<47; ++i) { sBarkasCorr->PutValues    945   for(i=0; i<47; ++i) { sBarkasCorr->PutValues(i, fTable[i][0], fTable[i][1]); }
949                                                   946 
950   const G4double SK[20] = {1.9477, 1.9232, 1.8    947   const G4double SK[20] = {1.9477, 1.9232, 1.8996, 1.8550, 1.8137,
951                            1.7754, 1.7396, 1.7    948                            1.7754, 1.7396, 1.7223, 1.7063, 1.6752,
952                            1.6461, 1.6189, 1.5    949                            1.6461, 1.6189, 1.5933, 1.5811, 1.5693,
953                            1.5467, 1.5254, 1.5    950                            1.5467, 1.5254, 1.5053, 1.4863, 1.4772};
954   const G4double TK[20] = {2.5222, 2.5125, 2.5    951   const G4double TK[20] = {2.5222, 2.5125, 2.5026, 2.4821, 2.4608,
955                            2.4388, 2.4163, 2.4    952                            2.4388, 2.4163, 2.4044, 2.3933, 2.3701,
956                            2.3466, 2.3229, 2.2    953                            2.3466, 2.3229, 2.2992, 2.2872, 2.2753,
957                            2.2515, 2.2277, 2.2    954                            2.2515, 2.2277, 2.2040, 2.1804, 2.1686};
958                                                   955 
959   const G4double SL[26] = {15.3343, 13.9389, 1    956   const G4double SL[26] = {15.3343, 13.9389, 12.7909, 11.8343, 11.0283,
960                            10.3424, 10.0371,      957                            10.3424, 10.0371,  9.7537,  9.2443,  8.8005,
961                            8.4114,  8.0683,       958                            8.4114,  8.0683,   7.9117, 7.7641, 7.4931,
962                            7.2506,  7.0327,       959                            7.2506,  7.0327,   6.8362, 6.7452, 6.6584,
963                            6.4969,  6.3498,       960                            6.4969,  6.3498,   6.2154, 6.0923, 6.0345, 5.9792};
964   const G4double TL[26] = {35.0669, 33.4344, 3    961   const G4double TL[26] = {35.0669, 33.4344, 32.0073, 30.7466, 29.6226,
965                            28.6128, 28.1449, 2    962                            28.6128, 28.1449, 27.6991, 26.8674, 26.1061,
966                            25.4058, 24.7587, 2    963                            25.4058, 24.7587, 24.4531, 24.1583, 23.5992,
967                            23.0771, 22.5880, 2    964                            23.0771, 22.5880, 22.1285, 21.9090, 21.6958,
968                            21.2872, 20.9006, 2    965                            21.2872, 20.9006, 20.5341, 20.1859, 20.0183, 19.8546};
969                                                   966 
970   const G4double bk1[29][11] = {                  967   const G4double bk1[29][11] = { 
971   {0.005, 1.34782E-8, 1.46132E-8, 1.72179E-8,     968   {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}, 
972   {0.007, 6.87555E-8, 7.44373E-8, 8.74397E-8,     969   {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}, 
973   {0.01, 3.78413E-7, 4.08831E-7, 4.78154E-7, 5    970   {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}, 
974   {0.015, 2.53200E-6, 2.72664E-6, 3.16738E-6,     971   {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}, 
975   {0.02, 9.43891E-6, 1.01339E-5, 1.16984E-5, 1    972   {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}, 
976   {0.03, 5.67088E-5, 6.05576E-5, 6.91311E-5, 7    973   {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}, 
977   {0.04, 1.91576E-4, 2.03626E-4, 2.30230E-4, 2    974   {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}, 
978   {0.05, 4.74226E-4, 5.02006E-4, 5.62872E-4, 6    975   {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}, 
979   {0.06, 9.67285E-4, 1.02029E-3, 1.13566E-3, 1    976   {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}, 
980   {0.08, 2.81537E-3, 2.95200E-3, 3.24599E-3, 3    977   {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}, 
981   {0.1, 6.14216E-3, 6.40864E-3, 6.97750E-3, 7.    978   {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}, 
982   {0.15, 2.23096E-2, 2.30790E-2, 2.46978E-2, 2    979   {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}, 
983   {0.2, 5.04022E-2, 5.18492E-2, 5.48682E-2, 5.    980   {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}, 
984   {0.3, 1.38018E-1, 1.41026E-1, 1.47244E-1, 1.    981   {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}, 
985   {0.4, 2.56001E-1, 2.60576E-1, 2.69992E-1, 2.    982   {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}, 
986   {0.5, 3.92181E-1, 3.98213E-1, 4.10597E-1, 4.    983   {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}, 
987   {0.6, 5.37913E-1, 5.45268E-1, 5.60350E-1, 5.    984   {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}, 
988   {0.7, 6.87470E-1, 6.96021E-1, 7.13543E-1, 7.    985   {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}, 
989   {0.8, 8.37159E-1, 8.46790E-1, 8.66525E-1, 8.    986   {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}, 
990   {1.0, 1.12850, 1.14002, 1.16362, 1.18799, 1.    987   {1.0, 1.12850, 1.14002, 1.16362, 1.18799, 1.21317, 1.23921, 1.25257, 1.26616, 1.29408, 1.32303}, 
991   {1.2, 1.40232, 1.41545, 1.44232, 1.47007, 1.    988   {1.2, 1.40232, 1.41545, 1.44232, 1.47007, 1.49875, 1.52842, 1.54364, 1.55913, 1.59095, 1.62396}, 
992   {1.4, 1.65584, 1.67034, 1.70004, 1.73072, 1.    989   {1.4, 1.65584, 1.67034, 1.70004, 1.73072, 1.76244, 1.79526, 1.81210, 1.82925, 1.86448, 1.90104}, 
993   {1.5, 1.77496, 1.79009, 1.82107, 1.85307, 1.    990   {1.5, 1.77496, 1.79009, 1.82107, 1.85307, 1.88617, 1.92042, 1.93800, 1.95590, 1.99269, 2.03087}, 
994   {1.7, 1.99863, 2.01490, 2.04822, 2.08265, 2.    991   {1.7, 1.99863, 2.01490, 2.04822, 2.08265, 2.11827, 2.15555, 2.17409, 2.19337, 2.23302, 2.27419}, 
995   {2.0, 2.29325, 2.31100, 2.34738, 2.38501, 2.    992   {2.0, 2.29325, 2.31100, 2.34738, 2.38501, 2.42395, 2.46429, 2.48401, 2.50612, 2.54955, 2.59468}, 
996   {3.0, 3.08887, 3.11036, 3.15445, 3.20013, 3.    993   {3.0, 3.08887, 3.11036, 3.15445, 3.20013, 3.24748, 3.29664, 3.32192, 3.34770, 3.40081, 3.45611}, 
997   {5.0, 4.07599, 4.10219, 4.15606, 4.21199, 4.    994   {5.0, 4.07599, 4.10219, 4.15606, 4.21199, 4.27010, 4.33056, 4.36172, 4.39353, 4.45918, 4.52772}, 
998   {7.0, 4.69647, 4.72577, 4.78608, 4.84877, 4.    995   {7.0, 4.69647, 4.72577, 4.78608, 4.84877, 4.91402, 4.98200, 5.01707, 5.05290, 5.12695, 5.20436}, 
999   {10.0, 5.32590, 5.35848, 5.42560, 5.49547, 5    996   {10.0, 5.32590, 5.35848, 5.42560, 5.49547, 5.56830, 5.64429, 5.68353, 5.72366, 5.80666, 5.89359}
1000   };                                             997   }; 
1001                                                  998 
1002   const G4double bk2[29][11] = {                 999   const G4double bk2[29][11] = { 
1003   {0.005, 5.98040E-8, 7.25636E-8, 8.00602E-8,    1000   {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}, 
1004   {0.007, 2.95345E-7, 3.56497E-7, 3.92247E-7,    1001   {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}, 
1005   {0.01, 1.55232E-6, 1.86011E-6, 2.03881E-6,     1002   {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}, 
1006   {0.015, 9.67802E-6, 1.14707E-5, 1.25008E-5,    1003   {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}, 
1007   {0.02, 3.38425E-5, 3.97259E-5, 4.30763E-5,     1004   {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}, 
1008   {0.03, 1.81920E-4, 2.10106E-4, 2.25918E-4,     1005   {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}, 
1009   {0.04, 5.59802E-4, 6.38103E-4, 6.81511E-4,     1006   {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}, 
1010   {0.05, 1.28002E-3, 1.44336E-3, 1.53305E-3,     1007   {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}, 
1011   {0.06, 2.42872E-3, 2.72510E-3, 2.88111E-3,     1008   {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}, 
1012   {0.08, 6.35222E-3, 6.99730E-3, 7.34446E-3,     1009   {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}, 
1013   {0.1, 1.26929E-2, 1.38803E-2, 1.44371E-2, 1    1010   {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}, 
1014   {0.15, 3.96872E-2, 4.24699E-2, 4.39340E-2,     1011   {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}, 
1015   {0.2, 8.15290E-2, 8.62830E-2, 8.87650E-2, 9    1012   {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}, 
1016   {0.3, 1.99528E-1, 2.08471E-1, 2.13103E-1, 2    1013   {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}, 
1017   {0.4, 3.47383E-1, 3.60369E-1, 3.67073E-1, 3    1014   {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}, 
1018   {0.5, 5.11214E-1, 5.27935E-1, 5.36554E-1, 5    1015   {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}, 
1019   {0.6, 6.82122E-1, 7.02260E-1, 7.12631E-1, 7    1016   {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}, 
1020   {0.7, 8.54544E-1, 8.77814E-1, 8.89791E-1, 9    1017   {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}, 
1021   {0.8, 1.02508, 1.05121, 1.06466, 1.07838, 1    1018   {0.8, 1.02508, 1.05121, 1.06466, 1.07838, 1.10667, 1.13615, 1.16692, 1.19907, 1.21570, 1.23272}, 
1022   {1.0, 1.35307, 1.38429, 1.40036, 1.41676, 1    1019   {1.0, 1.35307, 1.38429, 1.40036, 1.41676, 1.45057, 1.48582, 1.52263, 1.56111, 1.58102, 1.60140}, 
1023   {1.2, 1.65823, 1.69385, 1.71220, 1.73092, 1    1020   {1.2, 1.65823, 1.69385, 1.71220, 1.73092, 1.76954, 1.80983, 1.85192, 1.89596, 1.91876, 1.94211}, 
1024   {1.4, 1.93902, 1.97852, 1.99887, 2.01964, 2    1021   {1.4, 1.93902, 1.97852, 1.99887, 2.01964, 2.06251, 2.10727, 2.15406, 2.20304, 2.22842, 2.25442}, 
1025   {1.5, 2.07055, 2.11182, 2.13309, 2.15480, 2    1022   {1.5, 2.07055, 2.11182, 2.13309, 2.15480, 2.19963, 2.24644, 2.29539, 2.34666, 2.37323, 2.40045}, 
1026   {1.7, 2.31700, 2.36154, 2.38451, 2.40798, 2    1023   {1.7, 2.31700, 2.36154, 2.38451, 2.40798, 2.45641, 2.50703, 2.56000, 2.61552, 2.64430, 2.67381}, 
1027   {2.0, 2.64162, 2.69053, 2.71576, 2.74154, 2    1024   {2.0, 2.64162, 2.69053, 2.71576, 2.74154, 2.79481, 2.85052, 2.90887, 2.97009, 3.00185, 3.03442}, 
1028   {3.0, 3.51376, 3.57394, 3.60503, 3.63684, 3    1025   {3.0, 3.51376, 3.57394, 3.60503, 3.63684, 3.70268, 3.77170, 3.84418, 3.92040, 3.96003, 4.00073}, 
1029   {5.0, 4.59935, 4.67433, 4.71316, 4.75293, 4    1026   {5.0, 4.59935, 4.67433, 4.71316, 4.75293, 4.83543, 4.92217, 5.01353, 5.10992, 5.16014, 5.21181}, 
1030   {7.0, 5.28542, 5.37040, 5.41445, 5.45962, 5    1027   {7.0, 5.28542, 5.37040, 5.41445, 5.45962, 5.55344, 5.65226, 5.79496, 5.90517, 5.96269, 6.02191}, 
1031   {10.0, 5.98474, 6.08046, 6.13015, 6.18112,     1028   {10.0, 5.98474, 6.08046, 6.13015, 6.18112, 6.28715, 6.39903, 6.51728, 6.64249, 6.70792, 6.77535}
1032   };                                             1029   }; 
1033                                                  1030 
1034   const G4double bls1[28][10] = {                1031   const G4double bls1[28][10] = { 
1035   {0.005, 2.4111E-4, 2.5612E-4, 2.7202E-4, 3.    1032   {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}, 
1036   {0.007, 6.3947E-4, 6.7058E-4, 7.0295E-4, 7.    1033   {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}, 
1037   {0.01, 1.5469E-3, 1.6036E-3, 1.6622E-3, 1.7    1034   {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}, 
1038   {0.015, 3.7221E-3, 3.8404E-3, 3.9650E-3, 4.    1035   {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}, 
1039   {0.02, 6.9449E-3, 7.1910E-3, 7.4535E-3, 8.0    1036   {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}, 
1040   {0.03, 1.7411E-2, 1.8180E-2, 1.8997E-2, 2.0    1037   {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}, 
1041   {0.04, 3.8474E-2, 4.0056E-2, 4.1718E-2, 4.5    1038   {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}, 
1042   {0.05, 6.7371E-2, 6.9928E-2, 7.2596E-2, 7.8    1039   {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}, 
1043   {0.06, 1.0418E-1, 1.0778E-1, 1.1152E-1, 1.1    1040   {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}, 
1044   {0.08, 1.9647E-1, 2.0217E-1, 2.0805E-1, 2.2    1041   {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}, 
1045   {0.1, 3.0594E-1, 3.1361E-1, 3.2150E-1, 3.37    1042   {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}, 
1046   {0.15, 6.1411E-1, 6.2597E-1, 6.3811E-1, 6.6    1043   {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}, 
1047   {0.2, 9.3100E-1, 9.5614E-1, 9.7162E-1, 1.00    1044   {0.2, 9.3100E-1, 9.5614E-1, 9.7162E-1, 1.0037, 1.0372, 1.0723, 1.1092, 1.1284, 1.1480}, 
1048   {0.3, 1.5172, 1.5372, 1.5576, 1.5998, 1.643    1045   {0.3, 1.5172, 1.5372, 1.5576, 1.5998, 1.6438, 1.6899, 1.7382, 1.7632, 1.7889}, 
1049   {0.4, 2.0173, 2.0408, 2.0647, 2.1142, 2.165    1046   {0.4, 2.0173, 2.0408, 2.0647, 2.1142, 2.1659, 2.2199, 2.2765, 2.3059, 2.3360}, 
1050   {0.5, 2.3932, 2.4193, 2.4460, 2.5011, 2.558    1047   {0.5, 2.3932, 2.4193, 2.4460, 2.5011, 2.5587, 2.6190, 2.6821, 2.7148, 2.7484}, 
1051   {0.6, 2.7091, 2.7374, 2.7663, 2.8260, 2.888    1048   {0.6, 2.7091, 2.7374, 2.7663, 2.8260, 2.8884, 2.9538, 3.0222, 3.0577, 3.0941}, 
1052   {0.7, 2.9742, 3.0044, 3.0352, 3.0988, 3.165    1049   {0.7, 2.9742, 3.0044, 3.0352, 3.0988, 3.1652, 3.2349, 3.3079, 3.3457, 3.3845}, 
1053   {0.8, 3.2222, 3.2539, 3.2863, 3.3532, 3.423    1050   {0.8, 3.2222, 3.2539, 3.2863, 3.3532, 3.4232, 3.4965, 3.5734, 3.6133, 3.6542}, 
1054   {1.0, 3.6690, 3.7033, 3.7384, 3.8108, 3.886    1051   {1.0, 3.6690, 3.7033, 3.7384, 3.8108, 3.8866, 3.9661, 4.0495, 4.0928, 4.1371}, 
1055   {1.2, 3.9819, 4.0183, 4.0555, 4.1324, 4.213    1052   {1.2, 3.9819, 4.0183, 4.0555, 4.1324, 4.2130, 4.2974, 4.3861, 4.4321, 4.4794}, 
1056   {1.4, 4.2745, 4.3127, 4.3517, 4.4324, 4.517    1053   {1.4, 4.2745, 4.3127, 4.3517, 4.4324, 4.5170, 4.6056, 4.6988, 4.7471, 4.7968}, 
1057   {1.5, 4.4047, 4.4436, 4.4834, 4.5658, 4.652    1054   {1.5, 4.4047, 4.4436, 4.4834, 4.5658, 4.6521, 4.7426, 4.8378, 4.8872, 4.9379}, 
1058   {1.7, 4.6383, 4.6787, 4.7200, 4.8054, 4.894    1055   {1.7, 4.6383, 4.6787, 4.7200, 4.8054, 4.8949, 4.9888, 5.0876, 5.1388, 5.1915}, 
1059   {2.0, 4.9369, 4.9791, 5.0223, 5.1116, 5.205    1056   {2.0, 4.9369, 4.9791, 5.0223, 5.1116, 5.2053, 5.3036, 5.4070, 5.4607, 5.5159}, 
1060   {3.0, 5.6514, 5.6981, 5.7459, 5.8450, 5.948    1057   {3.0, 5.6514, 5.6981, 5.7459, 5.8450, 5.9489, 6.0581, 6.1730, 6.2328, 6.2943}, 
1061   {5.0, 6.4665, 6.5189, 6.5724, 6.6835, 6.800    1058   {5.0, 6.4665, 6.5189, 6.5724, 6.6835, 6.8003, 6.9231, 7.0525, 7.1199, 7.1892}, 
1062   {7.0, 6.8634, 6.9194, 6.9767, 7.0957, 7.220    1059   {7.0, 6.8634, 6.9194, 6.9767, 7.0957, 7.2208, 7.3526, 7.4915, 7.5639, 7.6384}
1063   };                                             1060   };
1064                                                  1061  
1065   const G4double bls2[28][10] = {                1062   const G4double bls2[28][10] = { 
1066   {0.005, 5.4561E-4, 6.0905E-4, 6.7863E-4, 7.    1063   {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}, 
1067   {0.007, 1.2068E-3, 1.3170E-3, 1.4377E-3, 1.    1064   {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}, 
1068   {0.01, 2.6832E-3, 2.9017E-3, 3.1534E-3, 3.4    1065   {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}, 
1069   {0.015, 6.2775E-3, 6.9077E-3, 7.6525E-3, 8.    1066   {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}, 
1070   {0.02, 1.2561E-2, 1.3943E-2, 1.5553E-2, 1.7    1067   {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}, 
1071   {0.03, 3.3750E-2, 3.7470E-2, 4.1528E-2, 4.6    1068   {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}, 
1072   {0.04, 6.9619E-2, 7.6098E-2, 8.3249E-2, 9.1    1069   {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}, 
1073   {0.05, 1.1522E-1, 1.2470E-1, 1.3504E-1, 1.4    1070   {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}, 
1074   {0.06, 1.6931E-1, 1.8179E-1, 1.9530E-1, 2.0    1071   {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}, 
1075   {0.08, 2.9540E-1, 3.1361E-1, 3.3312E-1, 3.5    1072   {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}, 
1076   {0.1,  4.3613E-1, 4.5956E-1,  4.852E-1, 5.1    1073   {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}, 
1077   {0.15, 8.1014E-1, 8.4453E-1, 8.8093E-1, 9.1    1074   {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}, 
1078   {0.2, 1.1888, 1.2319, 1.2774, 1.3255, 1.350    1075   {0.2, 1.1888, 1.2319, 1.2774, 1.3255, 1.3506, 1.3765, 1.4308, 1.4886, 1.5504}, 
1079   {0.3, 1.8422, 1.8983, 1.9575, 2.0201, 2.052    1076   {0.3, 1.8422, 1.8983, 1.9575, 2.0201, 2.0528, 2.0864, 2.1569, 2.2319, 2.3120}, 
1080   {0.4, 2.3984, 2.4642, 2.5336, 2.6070, 2.645    1077   {0.4, 2.3984, 2.4642, 2.5336, 2.6070, 2.6452, 2.6847, 2.7674, 2.8554, 2.9494}, 
1081   {0.5, 2.8181, 2.8915, 2.9690, 3.0509, 3.093    1078   {0.5, 2.8181, 2.8915, 2.9690, 3.0509, 3.0937, 3.1378, 3.2301, 3.3285, 3.4337}, 
1082   {0.6, 3.1698, 3.2494, 3.3336, 3.4226, 3.469    1079   {0.6, 3.1698, 3.2494, 3.3336, 3.4226, 3.4691, 3.5171, 3.6175, 3.7246, 3.8391}, 
1083   {0.7, 3.4652, 3.5502, 3.6400, 3.7351, 3.784    1080   {0.7, 3.4652, 3.5502, 3.6400, 3.7351, 3.7848, 3.8360, 3.9433, 4.0578, 4.1804}, 
1084   {0.8, 3.7392, 3.8289, 3.9236, 4.0239, 4.076    1081   {0.8, 3.7392, 3.8289, 3.9236, 4.0239, 4.0764, 4.1304, 4.2438, 4.3648, 4.4944}, 
1085   {1.0, 4.2295, 4.3269, 4.4299, 4.5391, 4.596    1082   {1.0, 4.2295, 4.3269, 4.4299, 4.5391, 4.5962, 4.6551, 4.7786, 4.9106, 5.0520}, 
1086   {1.2, 4.5777, 4.6814, 4.7912, 4.9076, 4.968    1083   {1.2, 4.5777, 4.6814, 4.7912, 4.9076, 4.9685, 5.0314, 5.1633, 5.3043, 5.4555}, 
1087   {1.4, 4.9001, 5.0092, 5.1247, 5.2473, 5.311    1084   {1.4, 4.9001, 5.0092, 5.1247, 5.2473, 5.3114, 5.3776, 5.5166, 5.6653, 5.8249}, 
1088   {1.5, 5.0434, 5.1550, 5.2731, 5.3984, 5.464    1085   {1.5, 5.0434, 5.1550, 5.2731, 5.3984, 5.4640, 5.5317, 5.6739, 5.8260, 5.9893}, 
1089   {1.7, 5.3011, 5.4170, 5.5398, 5.6701, 5.737    1086   {1.7, 5.3011, 5.4170, 5.5398, 5.6701, 5.7373, 5.8088, 5.9568, 6.1152, 6.2853}, 
1090   {2.0, 5.6308, 5.7523, 5.8811, 6.0174, 6.089    1087   {2.0, 5.6308, 5.7523, 5.8811, 6.0174, 6.0896, 6.1636, 6.3192, 6.4857, 6.6647}, 
1091   {3.0, 6.4224, 6.5580, 6.7019, 6.8549, 6.935    1088   {3.0, 6.4224, 6.5580, 6.7019, 6.8549, 6.9351, 7.0180, 7.1925, 7.3795, 7.5808}, 
1092   {5.0, 7.3338, 7.4872, 7.6500, 7.8235, 7.914    1089   {5.0, 7.3338, 7.4872, 7.6500, 7.8235, 7.9146, 8.0087, 8.2071, 8.4200, 8.6496}, 
1093   {7.0, 7.7938, 7.9588, 8.1342, 8.3211, 8.419    1090   {7.0, 7.7938, 7.9588, 8.1342, 8.3211, 8.4193, 8.5209, 8.7350, 8.9651, 9.2133}
1094   };                                             1091   }; 
1095                                                  1092  
1096   const G4double bls3[28][9] = {                 1093   const G4double bls3[28][9] = { 
1097   {0.005, 1.2895E-3, 1.3670E-3, 1.4524E-3, 1.    1094   {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}, 
1098   {0.007, 2.6467E-3, 2.8242E-3, 3.0238E-3, 3.    1095   {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}, 
1099   {0.01, 6.1472E-3, 6.6086E-3, 7.1246E-3, 8.3    1096   {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}, 
1100   {0.015, 1.63316E-2, 1.7572E-2, 1.8932E-2, 2    1097   {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}, 
1101   {0.02, 3.2634E-2, 3.4900E-2, 3.7348E-2, 4.2    1098   {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}, 
1102   {0.03, 7.9907E-2, 8.4544E-2, 8.9486E-2, 1.0    1099   {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}, 
1103   {0.04, 1.4523E-1, 1.5237E-1, 1.5985E-1, 1.7    1100   {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}, 
1104   {0.05, 2.2082E-1, 2.3036E-1, 2.4038E-1, 2.6    1101   {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}, 
1105   {0.06, 3.0423E-1, 3.1611E-1, 3.2854E-1, 3.5    1102   {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}, 
1106   {0.08, 4.8536E-1, 5.0156E-1, 5.1846E-1, 5.5    1103   {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}, 
1107   {0.1, 6.7586E-1, 6.9596E-1, 7.1688E-1, 7.61    1104   {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}, 
1108   {0.15, 1.1544, 1.1828, 1.2122, 1.2746, 1.34    1105   {0.15, 1.1544, 1.1828, 1.2122, 1.2746, 1.3424, 1.4163, 1.4974, 1.5868}, 
1109   {0.2, 1.6167, 1.6517, 1.6880, 1.7650, 1.848    1106   {0.2, 1.6167, 1.6517, 1.6880, 1.7650, 1.8484, 1.9394, 2.0390, 2.1489}, 
1110   {0.3, 2.3979, 2.4432, 2.4902, 2.5899, 2.698    1107   {0.3, 2.3979, 2.4432, 2.4902, 2.5899, 2.6980, 2.8159, 2.9451, 3.0876}, 
1111   {0.4, 3.0502, 3.1034, 3.1586, 3.2758, 3.403    1108   {0.4, 3.0502, 3.1034, 3.1586, 3.2758, 3.4030, 3.5416, 3.6938, 3.8620}, 
1112   {0.5, 3.5466, 3.6062, 3.6681, 3.7994, 3.942    1109   {0.5, 3.5466, 3.6062, 3.6681, 3.7994, 3.9421, 4.0978, 4.2688, 4.4580}, 
1113   {0.6, 3.9620, 4.0270, 4.0945, 4.2378, 4.393    1110   {0.6, 3.9620, 4.0270, 4.0945, 4.2378, 4.3935, 4.5636, 4.7506, 4.9576}, 
1114   {0.7, 4.3020, 4.3715, 4.4438, 4.5974, 4.764    1111   {0.7, 4.3020, 4.3715, 4.4438, 4.5974, 4.7644, 4.9470, 5.1478, 5.3703}, 
1115   {0.8, 4.6336, 4.7072, 4.7837, 4.9463, 5.123    1112   {0.8, 4.6336, 4.7072, 4.7837, 4.9463, 5.1233, 5.3169, 5.5300, 5.7661}, 
1116   {1.0, 5.2041, 5.2845, 5.3682, 5.5462, 5.740    1113   {1.0, 5.2041, 5.2845, 5.3682, 5.5462, 5.7400, 5.9523, 6.1863, 6.4458}, 
1117   {1.2, 5.6182, 5.7044, 5.7940, 5.9848, 6.192    1114   {1.2, 5.6182, 5.7044, 5.7940, 5.9848, 6.1927, 6.4206, 6.6719, 6.9510}, 
1118   {1.4, 5.9967, 6.0876, 6.1823, 6.3839, 6.603    1115   {1.4, 5.9967, 6.0876, 6.1823, 6.3839, 6.6038, 6.8451, 7.1113, 7.4071}, 
1119   {1.5, 6.1652, 6.2583, 6.3553, 6.5618, 6.787    1116   {1.5, 6.1652, 6.2583, 6.3553, 6.5618, 6.7871, 7.0344, 7.3073, 7.6107}, 
1120   {1.7, 6.4686, 6.5657, 6.6668, 6.8823, 7.117    1117   {1.7, 6.4686, 6.5657, 6.6668, 6.8823, 7.1175, 7.3757, 7.6609, 7.9782}, 
1121   {2.0, 6.8577, 6.9600, 7.0666, 7.2937, 7.541    1118   {2.0, 6.8577, 6.9600, 7.0666, 7.2937, 7.5418, 7.8143, 8.1156, 8.4510}, 
1122   {3.0, 7.7981, 7.9134, 8.0336, 8.2901, 8.570    1119   {3.0, 7.7981, 7.9134, 8.0336, 8.2901, 8.5708, 8.8796, 9.2214, 9.6027}, 
1123   {5.0, 8.8978, 9.0297, 9.1673, 9.4612, 9.783    1120   {5.0, 8.8978, 9.0297, 9.1673, 9.4612, 9.7834, 10.1384, 10.5323, 10.9722}, 
1124   {7.0, 9.4819, 9.6248, 9.7739, 10.0926, 10.4    1121   {7.0, 9.4819, 9.6248, 9.7739, 10.0926, 10.4423, 10.8282, 11.2565, 11.7356}
1125   };                                             1122   }; 
1126                                                  1123 
1127   const G4double bll1[28][10] = {                1124   const G4double bll1[28][10] = { 
1128   {0.005, 3.6324E-5, 4.0609E-5, 4.5430E-5, 5.    1125   {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}, 
1129   {0.007, 1.8110E-4, 2.0001E-4, 2.2099E-4, 2.    1126   {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}, 
1130   {0.01, 8.6524E-4, 9.4223E-4, 1.0262E-3, 1.2    1127   {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}, 
1131   {0.015, 4.2293E-3, 4.5314E-3, 4.8551E-3, 5.    1128   {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}, 
1132   {0.02, 1.1485E-2, 1.2172E-2, 1.2900E-2, 1.4    1129   {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}, 
1133   {0.03, 3.9471E-2, 4.1270E-2, 4.3149E-2, 4.7    1130   {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}, 
1134   {0.04, 8.4454E-2, 8.7599E-2, 9.0860E-2, 9.7    1131   {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}, 
1135   {0.05, 1.4339E-1, 1.4795E-1, 1.5266E-1, 1.6    1132   {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}, 
1136   {0.06, 2.1304E-1, 2.1899E-1, 2.2512E-1, 2.3    1133   {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}, 
1137   {0.08, 3.7382E-1, 3.8241E-1, 3.9122E-1, 4.0    1134   {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}, 
1138   {0.1, 5.5056E-1, 5.6151E-1, 5.7273E-1, 5.96    1135   {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}, 
1139   {0.15, 1.0066, 1.0224, 1.0386, 1.0721, 1.10    1136   {0.15, 1.0066, 1.0224, 1.0386, 1.0721, 1.1073, 1.1443, 1.1832, 1.2035, 1.2243}, 
1140   {0.2, 1.4376, 1.4572, 1.4773, 1.5188, 1.562    1137   {0.2, 1.4376, 1.4572, 1.4773, 1.5188, 1.5624, 1.6083, 1.6566, 1.6817, 1.7076}, 
1141   {0.3, 2.1712, 2.1964, 2.2223, 2.2758, 2.332    1138   {0.3, 2.1712, 2.1964, 2.2223, 2.2758, 2.3322, 2.3915, 2.4542, 2.4869, 2.5205}, 
1142   {0.4, 2.7500, 2.7793, 2.8094, 2.8719, 2.937    1139   {0.4, 2.7500, 2.7793, 2.8094, 2.8719, 2.9377, 3.0072, 3.0807, 3.1192, 3.1587}, 
1143   {0.5, 3.2033, 3.2359, 3.2693, 3.3389, 3.412    1140   {0.5, 3.2033, 3.2359, 3.2693, 3.3389, 3.4122, 3.4898, 3.5721, 3.6151, 3.6595}, 
1144   {0.6, 3.6038, 3.6391, 3.6753, 3.7506, 3.830    1141   {0.6, 3.6038, 3.6391, 3.6753, 3.7506, 3.8303, 3.9146, 4.0042, 4.0511, 4.0995}, 
1145   {0.7, 3.9106, 3.9482, 3.9867, 4.0670, 4.152    1142   {0.7, 3.9106, 3.9482, 3.9867, 4.0670, 4.1520, 4.2421, 4.3380, 4.3882, 4.4401}, 
1146   {0.8, 4.1790, 4.2185, 4.2590, 4.3437, 4.433    1143   {0.8, 4.1790, 4.2185, 4.2590, 4.3437, 4.4333, 4.5285, 4.6298, 4.6830, 4.7380}, 
1147   {1.0, 4.6344, 4.6772, 4.7212, 4.8131, 4.910    1144   {1.0, 4.6344, 4.6772, 4.7212, 4.8131, 4.9106, 5.0144, 5.1250, 5.1831, 5.2432}, 
1148   {1.2, 4.9787, 5.0242, 5.0711, 5.1689, 5.272    1145   {1.2, 4.9787, 5.0242, 5.0711, 5.1689, 5.2729, 5.3837, 5.5050, 5.5642, 5.6287}, 
1149   {1.4, 5.2688, 5.3166, 5.3658, 5.4687, 5.578    1146   {1.4, 5.2688, 5.3166, 5.3658, 5.4687, 5.5782, 5.6950, 5.8198, 5.8855, 5.9554}, 
1150   {1.5, 5.3966, 5.4454, 5.4957, 5.6009, 5.712    1147   {1.5, 5.3966, 5.4454, 5.4957, 5.6009, 5.7128, 5.8323, 5.9601, 6.0274, 6.0972}, 
1151   {1.7, 5.6255, 5.6762, 5.7284, 5.8377, 5.954    1148   {1.7, 5.6255, 5.6762, 5.7284, 5.8377, 5.9541, 6.0785, 6.2116, 6.2818, 6.3546}, 
1152   {2.0, 5.9170, 5.9701, 6.0248, 6.1395, 6.261    1149   {2.0, 5.9170, 5.9701, 6.0248, 6.1395, 6.2618, 6.3925, 6.5327, 6.6066, 6.6833}, 
1153   {3.0, 6.6210, 6.6801, 6.7411, 6.8692, 7.006    1150   {3.0, 6.6210, 6.6801, 6.7411, 6.8692, 7.0062, 7.1529, 7.3107, 7.3941, 7.4807}, 
1154   {5.0, 7.4620, 7.5288, 7.5977, 7.7428, 7.898    1151   {5.0, 7.4620, 7.5288, 7.5977, 7.7428, 7.8982, 8.0653, 8.2454, 8.3409, 8.4402}, 
1155   {7.0, 7.7362, 7.8079, 7.8821, 8.0383, 8.206    1152   {7.0, 7.7362, 7.8079, 7.8821, 8.0383, 8.2061, 8.3866, 8.5816, 8.6850, 8.7927}
1156   };                                             1153   }; 
1157                                                  1154 
1158   const G4double bll2[28][10] = {                1155   const G4double bll2[28][10] = { 
1159   {0.005, 1.8339E-4, 2.3330E-4, 2.9738E-4, 3.    1156   {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}, 
1160   {0.007, 7.5042E-4, 9.2355E-4, 1.1375E-3, 1.    1157   {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}, 
1161   {0.01, 2.8829E-3, 3.4275E-3, 4.0758E-3, 4.8    1158   {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}, 
1162   {0.015, 1.1087E-2, 1.2716E-2, 1.4581E-2, 1.    1159   {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}, 
1163   {0.02, 2.5786E-2, 2.8922E-2, 3.2435E-2, 3.6    1160   {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}, 
1164   {0.03, 7.3461E-2, 8.0264E-2, 8.7705E-2, 9.5    1161   {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}, 
1165   {0.04, 1.4094E-1, 1.5172E-1, 1.6336E-1, 1.7    1162   {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}, 
1166   {0.05, 2.2289E-1, 2.3762E-1, 2.5344E-1, 2.7    1163   {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}, 
1167   {0.06, 3.1503E-1, 3.3361E-1, 3.5346E-1, 3.7    1164   {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}, 
1168   {0.08, 5.1793E-1, 5.4368E-1, 5.7109E-1, 6.0    1165   {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}, 
1169   {0.1, 7.3258E-1, 7.6481E-1, 7.9907E-1, 8.35    1166   {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}, 
1170   {0.15, 1.2677, 1.3137, 1.3626, 1.4147, 1.44    1167   {0.15, 1.2677, 1.3137, 1.3626, 1.4147, 1.4421, 1.4703, 1.5300, 1.5942, 1.6636}, 
1171   {0.2, 1.7615, 1.8188, 1.8797, 1.9446, 1.978    1168   {0.2, 1.7615, 1.8188, 1.8797, 1.9446, 1.9788, 2.0142, 2.0889, 2.1694, 2.2567}, 
1172   {0.3, 2.5909, 2.6658, 2.7457, 2.8312, 2.876    1169   {0.3, 2.5909, 2.6658, 2.7457, 2.8312, 2.8762, 2.9231, 3.0222, 3.1295, 3.2463}, 
1173   {0.4, 3.2417, 3.3302, 3.4249, 3.5266, 3.580    1170   {0.4, 3.2417, 3.3302, 3.4249, 3.5266, 3.5803, 3.6361, 3.7546, 3.8835, 4.0242}, 
1174   {0.5, 3.7527, 3.8523, 3.9591, 4.0741, 4.135    1171   {0.5, 3.7527, 3.8523, 3.9591, 4.0741, 4.1350, 4.1983, 4.3330, 4.4799, 4.6408}, 
1175   {0.6, 4.2013, 4.3103, 4.4274, 4.5537, 4.620    1172   {0.6, 4.2013, 4.3103, 4.4274, 4.5537, 4.6206, 4.6904, 4.8390, 5.0013, 5.1796}, 
1176   {0.7, 4.5493, 4.6664, 4.7925, 4.9286, 5.000    1173   {0.7, 4.5493, 4.6664, 4.7925, 4.9286, 5.0009, 5.0762, 5.2370, 5.4129, 5.6066}, 
1177   {0.8, 4.8537, 4.9780, 5.1119, 5.2568, 5.333    1174   {0.8, 4.8537, 4.9780, 5.1119, 5.2568, 5.3338, 5.4141, 5.5857, 5.7738, 5.9811}, 
1178   {1.0, 5.3701, 5.5066, 5.6540, 5.8138, 5.898    1175   {1.0, 5.3701, 5.5066, 5.6540, 5.8138, 5.8989, 5.9878, 6.1780, 6.3870, 6.6179}, 
1179   {1.2, 5.7648, 5.9114, 6.0701, 6.2424, 6.334    1176   {1.2, 5.7648, 5.9114, 6.0701, 6.2424, 6.3343, 6.4303, 6.6361, 6.8626, 7.1137}, 
1180   {1.4, 6.0976, 6.2530, 6.4214, 6.6044, 6.702    1177   {1.4, 6.0976, 6.2530, 6.4214, 6.6044, 6.7021, 6.8043, 7.0237, 7.2655, 7.5338}, 
1181   {1.5, 6.2447, 6.4041, 6.5768, 6.7647, 6.865    1178   {1.5, 6.2447, 6.4041, 6.5768, 6.7647, 6.8650, 6.9700, 7.1954, 7.4442, 7.7203}, 
1182   {1.7, 6.5087, 6.6752, 6.8558, 7.0526, 7.157    1179   {1.7, 6.5087, 6.6752, 6.8558, 7.0526, 7.1578, 7.2679, 7.5045, 7.7660, 8.0565}, 
1183   {2.0, 6.8458, 7.0218, 7.2129, 7.4213, 7.532    1180   {2.0, 6.8458, 7.0218, 7.2129, 7.4213, 7.5328, 7.6496, 7.9010, 8.1791, 8.4886}, 
1184   {3.0, 7.6647, 7.8644, 8.0819, 8.3189, 8.447    1181   {3.0, 7.6647, 7.8644, 8.0819, 8.3189, 8.4475, 8.5814, 8.8702, 9.1908, 9.5488}, 
1185   {5.0, 8.6515, 8.8816, 9.1330, 9.4090, 9.557    1182   {5.0, 8.6515, 8.8816, 9.1330, 9.4090, 9.5572, 9.7132, 10.0504, 10.4259, 10.8466}, 
1186   {7.0, 9.0221, 9.2724, 9.5464, 9.8477, 10.00    1183   {7.0, 9.0221, 9.2724, 9.5464, 9.8477, 10.0099, 10.1805, 10.5499, 10.9622, 11.4250}
1187   };                                             1184   }; 
1188                                                  1185 
1189   const G4double bll3[28][9] = {                 1186   const G4double bll3[28][9] = { 
1190   {0.005, 1.3190E-3, 1.4961E-3, 1.6974E-3, 2.    1187   {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}, 
1191   {0.007, 4.0158E-3, 4.4623E-3, 4.9592E-3, 6.    1188   {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}, 
1192   {0.01, 1.1509E-2, 1.2548E-2, 1.3681E-2, 1.6    1189   {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}, 
1193   {0.015, 3.3070E-2, 3.5408E-2, 3.7914E-2, 4.    1190   {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}, 
1194   {0.02, 6.4555E-2, 6.8394E-2, 7.2472E-2, 8.1    1191   {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}, 
1195   {0.03, 1.5030E-1, 1.5101E-1, 1.5844E-1, 1.7    1192   {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}, 
1196   {0.04, 2.5743E-1, 2.6774E-1, 2.7855E-1, 3.0    1193   {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}, 
1197   {0.05, 3.7846E-1, 3.9195E-1, 4.0607E-1, 4.3    1194   {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}, 
1198   {0.06, 5.0839E-1, 5.2497E-1, 5.4230E-1, 5.7    1195   {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}, 
1199   {0.08, 7.8230E-1, 8.0474E-1, 8.2818E-1, 8.7    1196   {0.08, 7.8230E-1, 8.0474E-1, 8.2818E-1, 8.7836E-1, 9.3355E-1, 9.9462E-1, 1.0627, 1.1394}, 
1200   {0.1, 1.0621, 1.0900, 1.1192, 1.1816, 1.250    1197   {0.1, 1.0621, 1.0900, 1.1192, 1.1816, 1.2503, 1.3265, 1.4116, 1.5076}, 
1201   {0.15, 1.7389, 1.7790, 1.8210, 1.9112, 2.01    1198   {0.15, 1.7389, 1.7790, 1.8210, 1.9112, 2.0108, 2.1217, 2.2462, 2.3876}, 
1202   {0.2, 2.3516, 2.4024, 2.4556, 2.5701, 2.697    1199   {0.2, 2.3516, 2.4024, 2.4556, 2.5701, 2.6971, 2.8391, 2.9994, 3.1822}, 
1203   {0.3, 3.3741, 3.4427, 3.5148, 3.6706, 3.844    1200   {0.3, 3.3741, 3.4427, 3.5148, 3.6706, 3.8445, 4.0404, 4.2631, 4.5193}, 
1204   {0.4, 4.1788, 4.2620, 4.3496, 4.5398, 4.753    1201   {0.4, 4.1788, 4.2620, 4.3496, 4.5398, 4.7530, 4.9944, 5.2703, 5.5895}, 
1205   {0.5, 4.8180, 4.9137, 5.0146, 5.2341, 5.481    1202   {0.5, 4.8180, 4.9137, 5.0146, 5.2341, 5.4811, 5.7618, 6.0840, 6.4583}, 
1206   {0.6, 5.3765, 5.4830, 5.5954, 5.8406, 6.117    1203   {0.6, 5.3765, 5.4830, 5.5954, 5.8406, 6.1173, 6.4326, 6.7958, 7.2191}, 
1207   {0.7, 5.8208, 5.9369, 6.0596, 6.3275, 6.630    1204   {0.7, 5.8208, 5.9369, 6.0596, 6.3275, 6.6306, 6.9769, 7.3767, 7.8440}, 
1208   {0.8, 6.2109, 6.3355, 6.4674, 6.7558, 7.082    1205   {0.8, 6.2109, 6.3355, 6.4674, 6.7558, 7.0827, 7.4570, 7.8900, 8.3972}, 
1209   {1.0, 6.8747, 7.0142, 7.1621, 7.4861, 7.854    1206   {1.0, 6.8747, 7.0142, 7.1621, 7.4861, 7.8546, 8.2778, 8.7690, 9.3464}, 
1210   {1.2, 7.3933, 7.5454, 7.7068, 8.0612, 8.465    1207   {1.2, 7.3933, 7.5454, 7.7068, 8.0612, 8.4652, 8.9302, 9.4713, 10.1090}, 
1211   {1.4, 7.8331, 7.9967, 8.1694, 8.5502, 8.985    1208   {1.4, 7.8331, 7.9967, 8.1694, 8.5502, 8.9851, 9.4866, 10.0713, 10.7619}, 
1212   {1.5, 8.0286, 8.1967, 8.3753, 8.7681, 9.218    1209   {1.5, 8.0286, 8.1967, 8.3753, 8.7681, 9.2181, 9.7352, 10.3399, 11.0546}, 
1213   {1.7, 8.3813, 8.5585, 8.7469, 9.1618, 9.636    1210   {1.7, 8.3813, 8.5585, 8.7469, 9.1618, 9.6367, 10.1856, 10.8270, 11.5863}, 
1214   {2.0, 8.8352, 9.0245, 9.2260, 9.6701, 10.17    1211   {2.0, 8.8352, 9.0245, 9.2260, 9.6701, 10.1793, 10.7688, 11.4590, 12.2775}, 
1215   {3.0, 9.9511, 10.1714, 10.4062, 10.9254, 11    1212   {3.0, 9.9511, 10.1714, 10.4062, 10.9254, 11.5229, 12.2172, 13.0332, 14.0048}, 
1216   {5.0, 11.3211, 11.5818, 11.8601, 12.4771, 1    1213   {5.0, 11.3211, 11.5818, 11.8601, 12.4771, 13.1898, 14.0213, 15.0024, 16.1752}, 
1217   {7.0, 11.9480, 12.2357, 12.5432, 13.2260, 1    1214   {7.0, 11.9480, 12.2357, 12.5432, 13.2260, 14.0164, 14.9404, 16.0330, 17.3420}
1218   };                                             1215   };
1219                                                  1216                              
1220   G4double b, bs;                                1217   G4double b, bs; 
1221   for(i=0; i<nEtaK; ++i) {                       1218   for(i=0; i<nEtaK; ++i) {
1222                                                  1219 
1223     G4double et = Eta[i];                        1220     G4double et = Eta[i];
1224     G4double loget = G4Log(et);                  1221     G4double loget = G4Log(et);
1225                                                  1222 
1226     for(j=0; j<nK; ++j) {                        1223     for(j=0; j<nK; ++j) {
1227                                                  1224 
1228       if(j < 10) { b = bk2[i][10-j]; }           1225       if(j < 10) { b = bk2[i][10-j]; }
1229       else       { b = bk1[i][20-j]; }           1226       else       { b = bk1[i][20-j]; }
1230                                                  1227 
1231       CK[j][i] = SK[j]*loget + TK[j] - b;        1228       CK[j][i] = SK[j]*loget + TK[j] - b;
1232                                                  1229 
1233       if(i == nEtaK-1) {                         1230       if(i == nEtaK-1) { 
1234         ZK[j] = et*(et*et*CK[j][i] - et*UK[j]    1231         ZK[j] = et*(et*et*CK[j][i] - et*UK[j] - VK[j]); 
1235         //G4cout << "i= " << i << " j= " << j    1232         //G4cout << "i= " << i << " j= " << j 
1236         //       << " CK[j][i]= " <<  CK[j][i    1233         //       << " CK[j][i]= " <<  CK[j][i]
1237         //       << " ZK[j]= " << ZK[j] << "     1234         //       << " ZK[j]= " << ZK[j] << "  b= " << b << G4endl;  
1238       }                                          1235       } 
1239     }                                            1236     }
1240     //G4cout << G4endl;                          1237     //G4cout << G4endl;
1241     if(i < nEtaL) {                              1238     if(i < nEtaL) {
1242       //G4cout << "  LShell:" <<G4endl;          1239       //G4cout << "  LShell:" <<G4endl;
1243       for(j=0; j<nL; ++j) {                      1240       for(j=0; j<nL; ++j) {
1244                                                  1241 
1245         if(j < 8) {                              1242         if(j < 8) {
1246           bs = bls3[i][8-j];                     1243           bs = bls3[i][8-j];
1247           b  = bll3[i][8-j];                     1244           b  = bll3[i][8-j];
1248         } else if(j < 17) {                      1245         } else if(j < 17) {
1249           bs = bls2[i][17-j];                    1246           bs = bls2[i][17-j];
1250           b  = bll2[i][17-j];                    1247           b  = bll2[i][17-j];
1251         } else {                                 1248         } else {
1252           bs = bls1[i][26-j];                    1249           bs = bls1[i][26-j];
1253           b  = bll1[i][26-j];                    1250           b  = bll1[i][26-j];
1254         }                                        1251         }
1255         G4double c = SL[j]*loget + TL[j];        1252         G4double c = SL[j]*loget + TL[j]; 
1256         CL[j][i] = c - bs - 3.0*b;               1253         CL[j][i] = c - bs - 3.0*b;
1257         if(i == nEtaL-1) {                       1254         if(i == nEtaL-1) { 
1258           VL[j] = et*(et*CL[j][i] - UL[j]);      1255           VL[j] = et*(et*CL[j][i] - UL[j]); 
1259           //G4cout << "i= " << i << " j= " <<    1256           //G4cout << "i= " << i << " j= " << j 
1260           //         << " CL[j][i]= " <<  CL[    1257           //         << " CL[j][i]= " <<  CL[j][i]
1261           //         << " VL[j]= " << VL[j] <    1258           //         << " VL[j]= " << VL[j] << " b= " << b << " bs= " << bs 
1262           //         << " et= " << et << G4en    1259           //         << " et= " << et << G4endl; 
1263           //" UL= " << UL[j] << " TL= " << TL    1260           //" UL= " << UL[j] << " TL= " << TL[j] << " SL= " << SL[j] <<G4endl;  
1264         }                                        1261         }
1265       }                                          1262       }
1266       //G4cout << G4endl;                        1263       //G4cout << G4endl;
1267     }                                            1264     }
1268   }                                              1265   }
1269                                                  1266 
1270   const G4double xzk[34] = { 11.7711,            1267   const G4double xzk[34] = { 11.7711,
1271     13.3669, 15.5762, 17.1715, 18.7667, 20.85    1268     13.3669, 15.5762, 17.1715, 18.7667, 20.8523, 23.0606, 24.901, 26.9861, 29.4394, 31.77,
1272     34.3457, 37.4119, 40.3555, 42.3177, 44.77    1269     34.3457, 37.4119, 40.3555, 42.3177, 44.7705, 47.2234, 50.78, 53.8458, 56.4214, 58.3834,
1273     60.9586, 63.6567, 66.5998, 68.807, 71.872    1270     60.9586, 63.6567, 66.5998, 68.807, 71.8728, 74.5706, 77.3911, 81.8056, 85.7297, 89.8988,
1274                              93.4549, 96.2753    1271                              93.4549, 96.2753, 99.709};
1275   const G4double yzk[34] = { 0.70663,            1272   const G4double yzk[34] = { 0.70663,
1276     0.72033, 0.73651, 0.74647, 0.75518, 0.763    1273     0.72033, 0.73651, 0.74647, 0.75518, 0.76388, 0.77258, 0.78129, 0.78625, 0.7937, 0.79991,
1277     0.80611, 0.8123, 0.8185, 0.82097, 0.82467    1274     0.80611, 0.8123, 0.8185, 0.82097, 0.82467, 0.82838, 0.83457, 0.83702, 0.84198, 0.8432,
1278     0.84565, 0.84936, 0.85181, 0.85303, 0.855    1275     0.84565, 0.84936, 0.85181, 0.85303, 0.85548, 0.85794, 0.8604, 0.86283, 0.86527, 0.86646,
1279                              0.86891, 0.87011    1276                              0.86891, 0.87011, 0.87381};
1280                                                  1277 
1281   const G4double xzl[36] = { 15.5102,            1278   const G4double xzl[36] = { 15.5102,
1282     16.7347, 17.9592, 19.551, 21.0204, 22.612    1279     16.7347, 17.9592, 19.551, 21.0204, 22.6122, 24.9388, 27.3878, 29.5918, 31.3061, 32.898,
1283     34.4898, 36.2041, 38.4082, 40.3674, 42.57    1280     34.4898, 36.2041, 38.4082, 40.3674, 42.5714, 44.898, 47.4694, 49.9184, 52.7347, 55.9184,
1284     59.3469, 61.9184, 64.6122, 67.4286, 71.46    1281     59.3469, 61.9184, 64.6122, 67.4286, 71.4694, 75.2653, 78.3265, 81.2653, 85.551, 88.7347,
1285                              91.551, 94.2449,    1282                              91.551, 94.2449, 96.449, 98.4082, 99.7551};
1286   const G4double yzl[36] = { 0.29875,            1283   const G4double yzl[36] = { 0.29875,
1287     0.31746, 0.33368, 0.35239, 0.36985, 0.387    1284     0.31746, 0.33368, 0.35239, 0.36985, 0.38732, 0.41102, 0.43472, 0.45343, 0.4659, 0.47713,
1288     0.4896, 0.50083, 0.51331, 0.52328, 0.5307    1285     0.4896, 0.50083, 0.51331, 0.52328, 0.53077, 0.54075, 0.54823, 0.55572, 0.56445, 0.57193,
1289     0.58191, 0.5869, 0.59189, 0.60062, 0.6068    1286     0.58191, 0.5869, 0.59189, 0.60062, 0.60686, 0.61435, 0.61809, 0.62183, 0.62931, 0.6343,
1290                               0.6368, 0.64054    1287                               0.6368, 0.64054, 0.64304, 0.64428, 0.64678};
1291                                                  1288 
1292   sThetaK = new G4PhysicsFreeVector(34, false    1289   sThetaK = new G4PhysicsFreeVector(34, false);
1293   for(i=0; i<34; ++i) { sThetaK->PutValues(i,    1290   for(i=0; i<34; ++i) { sThetaK->PutValues(i, xzk[i], yzk[i]); }
1294   sThetaL = new G4PhysicsFreeVector(36, false    1291   sThetaL = new G4PhysicsFreeVector(36, false);
1295   for(i=0; i<36; ++i) { sThetaL->PutValues(i,    1292   for(i=0; i<36; ++i) { sThetaL->PutValues(i, xzl[i], yzl[i]); }
1296 }                                                1293 }
1297                                                  1294 
1298 //....oooOO0OOooo........oooOO0OOooo........o    1295 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
1299                                                  1296 
1300                                                  1297