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.0)


  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 "Randomize.hh"
 59 #include "G4PhysicalConstants.hh"                  60 #include "G4PhysicalConstants.hh"
 60 #include "G4SystemOfUnits.hh"                      61 #include "G4SystemOfUnits.hh"
 61 #include "G4ParticleTable.hh"                      62 #include "G4ParticleTable.hh"
 62 #include "G4IonTable.hh"                           63 #include "G4IonTable.hh"
 63 #include "G4VEmModel.hh"                           64 #include "G4VEmModel.hh"
 64 #include "G4Proton.hh"                             65 #include "G4Proton.hh"
 65 #include "G4GenericIon.hh"                         66 #include "G4GenericIon.hh"
 66 #include "G4PhysicsLogVector.hh"                   67 #include "G4PhysicsLogVector.hh"
 67 #include "G4ProductionCutsTable.hh"                68 #include "G4ProductionCutsTable.hh"
 68 #include "G4MaterialCutsCouple.hh"                 69 #include "G4MaterialCutsCouple.hh"
 69 #include "G4AtomicShells.hh"                       70 #include "G4AtomicShells.hh"
 70 #include "G4Log.hh"                                71 #include "G4Log.hh"
 71 #include "G4Exp.hh"                                72 #include "G4Exp.hh"
 72 #include "G4Pow.hh"                                73 #include "G4Pow.hh"
                                                   >>  74 #include "G4Threading.hh"
 73                                                    75 
 74 //....oooOO0OOooo........oooOO0OOooo........oo     76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 75                                                    77 
 76 namespace                                      <<  78 const G4double inveplus = 1.0/CLHEP::eplus;
 77 {                                              <<  79 const G4double alpha2 = CLHEP::fine_structure_const*CLHEP::fine_structure_const;
 78   constexpr G4double inveplus = 1.0/CLHEP::epl <<  80 
 79   constexpr G4double alpha2 = CLHEP::fine_stru << 
 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;  << 
106                                                   105 
107 G4PhysicsFreeVector* G4EmCorrections::sBarkasC    106 G4PhysicsFreeVector* G4EmCorrections::sBarkasCorr = nullptr;
108 G4PhysicsFreeVector* G4EmCorrections::sThetaK     107 G4PhysicsFreeVector* G4EmCorrections::sThetaK = nullptr;
109 G4PhysicsFreeVector* G4EmCorrections::sThetaL     108 G4PhysicsFreeVector* G4EmCorrections::sThetaL = nullptr;
110                                                   109 
                                                   >> 110 #ifdef G4MULTITHREADED
                                                   >> 111 G4Mutex G4EmCorrections::theCorrMutex = G4MUTEX_INITIALIZER;
                                                   >> 112 #endif
                                                   >> 113 
111 G4EmCorrections::G4EmCorrections(G4int verb)      114 G4EmCorrections::G4EmCorrections(G4int verb)
112   : verbose(verb)                              << 
113 {                                                 115 {
114   eth = 2.0*CLHEP::MeV;                        << 116   verbose  = verb;
                                                   >> 117   eth      = 2.0*CLHEP::MeV;
115   eCorrMin = 25.*CLHEP::keV;                      118   eCorrMin = 25.*CLHEP::keV;
116   eCorrMax = 1.*CLHEP::GeV;                       119   eCorrMax = 1.*CLHEP::GeV;
117                                                   120 
118   ionTable = G4ParticleTable::GetParticleTable    121   ionTable = G4ParticleTable::GetParticleTable()->GetIonTable();
119   g4calc = G4Pow::GetInstance();                  122   g4calc = G4Pow::GetInstance();
120                                                   123 
                                                   >> 124   // G.S. Khandelwal Nucl. Phys. A116(1968)97 - 111.
                                                   >> 125   // "Shell corrections for K- and L- electrons
                                                   >> 126   nK = 20;
                                                   >> 127   nL = 26;
                                                   >> 128   nEtaK = 29;
                                                   >> 129   nEtaL = 28;
                                                   >> 130 
121   // fill vectors                                 131   // fill vectors
122   if (nullptr == sBarkasCorr) {                << 132   if(sBarkasCorr == nullptr) { 
123     Initialise();                              << 133 #ifdef G4MULTITHREADED
124     isInitializer = true;                      << 134     G4MUTEXLOCK(&theCorrMutex);
                                                   >> 135     if (sBarkasCorr == nullptr) {
                                                   >> 136 #endif
                                                   >> 137       Initialise();
                                                   >> 138       isMaster = true;
                                                   >> 139 #ifdef G4MULTITHREADED
                                                   >> 140     }
                                                   >> 141     G4MUTEXUNLOCK(&theCorrMutex);
                                                   >> 142 #endif
125   }                                               143   }
126 }                                                 144 }
127                                                   145 
128 //....oooOO0OOooo........oooOO0OOooo........oo    146 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
129                                                   147 
130 G4EmCorrections::~G4EmCorrections()               148 G4EmCorrections::~G4EmCorrections()
131 {                                                 149 {
132   for (G4int i=0; i<nIons; ++i) { delete stopD << 150   for(G4int i=0; i<nIons; ++i) {delete stopData[i];}
133   if (isInitializer) {                         << 151   if(isMaster) { 
134     delete sBarkasCorr;                           152     delete sBarkasCorr;
135     delete sThetaK;                               153     delete sThetaK;
136     delete sThetaL;                               154     delete sThetaL;
137     sBarkasCorr = sThetaK = sThetaL = nullptr;    155     sBarkasCorr = sThetaK = sThetaL = nullptr;
138   }                                               156   }
139 }                                                 157 }
140                                                   158 
141 void G4EmCorrections::SetupKinematics(const G4    159 void G4EmCorrections::SetupKinematics(const G4ParticleDefinition* p,
142               const G4Material* mat,              160               const G4Material* mat,
143               const G4double kineticEnergy)    << 161               G4double kineticEnergy)
144 {                                                 162 {
145   if(kineticEnergy != kinEnergy || p != partic    163   if(kineticEnergy != kinEnergy || p != particle) {
146     particle = p;                                 164     particle = p;
147     kinEnergy = kineticEnergy;                    165     kinEnergy = kineticEnergy;
148     mass  = p->GetPDGMass();                      166     mass  = p->GetPDGMass();
149     tau   = kineticEnergy / mass;                 167     tau   = kineticEnergy / mass;
150     gamma = 1.0 + tau;                            168     gamma = 1.0 + tau;
151     bg2   = tau * (tau+2.0);                      169     bg2   = tau * (tau+2.0);
152     beta2 = bg2/(gamma*gamma);                    170     beta2 = bg2/(gamma*gamma);
153     beta  = std::sqrt(beta2);                     171     beta  = std::sqrt(beta2);
154     ba2   = beta2/alpha2;                         172     ba2   = beta2/alpha2;
155     const G4double ratio = CLHEP::electron_mas << 173     G4double ratio = CLHEP::electron_mass_c2/mass;
156     tmax  = 2.0*CLHEP::electron_mass_c2*bg2       174     tmax  = 2.0*CLHEP::electron_mass_c2*bg2 
157       /(1. + 2.0*gamma*ratio + ratio*ratio);      175       /(1. + 2.0*gamma*ratio + ratio*ratio);
158     charge  = p->GetPDGCharge()*inveplus;         176     charge  = p->GetPDGCharge()*inveplus;
159     if(charge > 1.5) { charge = effCharge.Effe    177     if(charge > 1.5) { charge = effCharge.EffectiveCharge(p,mat,kinEnergy); }
160     q2 = charge*charge;                           178     q2 = charge*charge;
161   }                                               179   }
162   if(mat != material) {                           180   if(mat != material) {
163     material = mat;                               181     material = mat;
164     theElementVector = material->GetElementVec    182     theElementVector = material->GetElementVector();
165     atomDensity  = material->GetAtomicNumDensi    183     atomDensity  = material->GetAtomicNumDensityVector(); 
166     numberOfElements = (G4int)material->GetNum << 184     numberOfElements = material->GetNumberOfElements();
167   }                                               185   }
168 }                                                 186 }
169                                                   187 
170 //....oooOO0OOooo........oooOO0OOooo........oo    188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
171                                                   189 
172 G4double G4EmCorrections::HighOrderCorrections    190 G4double G4EmCorrections::HighOrderCorrections(const G4ParticleDefinition* p,
173                                                   191                                                const G4Material* mat,
174                                                << 192                                                G4double e, G4double)
175 {                                                 193 {
176   // . Z^3 Barkas effect in the stopping power    194   // . Z^3 Barkas effect in the stopping power of matter for charged particles
177   //   J.C Ashley and R.H.Ritchie                 195   //   J.C Ashley and R.H.Ritchie
178   //   Physical review B Vol.5 No.7 1 April 19    196   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
179   //   and ICRU49 report                          197   //   and ICRU49 report
180   //   valid for kineticEnergy < 0.5 MeV          198   //   valid for kineticEnergy < 0.5 MeV
181   //   Other corrections from S.P.Ahlen Rev. M    199   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
182                                                   200 
183   SetupKinematics(p, mat, e);                     201   SetupKinematics(p, mat, e);
184   if(tau <= 0.0) { return 0.0; }                  202   if(tau <= 0.0) { return 0.0; }
185                                                   203 
186   const G4double Barkas = BarkasCorrection(p,  << 204   G4double Barkas = BarkasCorrection (p, mat, e);
187   const G4double Bloch  = BlochCorrection(p, m << 205   G4double Bloch  = BlochCorrection (p, mat, e);
188   const G4double Mott = MottCorrection(p, mat, << 206   G4double Mott   = MottCorrection (p, mat, e);
189                                                   207 
190   G4double sum = 2.0*(Barkas + Bloch) + Mott;  << 208   G4double sum = (2.0*(Barkas + Bloch) + Mott);
191                                                   209 
192   if(verbose > 1) {                               210   if(verbose > 1) {
193     G4cout << "EmCorrections: E(MeV)= " << e/M    211     G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
194            << " Bloch= " << Bloch << " Mott= "    212            << " Bloch= " << Bloch << " Mott= " << Mott 
195            << " Sum= " << sum << " q2= " << q2    213            << " Sum= " << sum << " q2= " << q2 << G4endl; 
196     G4cout << " ShellCorrection: " << ShellCor    214     G4cout << " ShellCorrection: " << ShellCorrection(p, mat, e) 
197            << " Kshell= " << KShellCorrection(    215            << " Kshell= " << KShellCorrection(p, mat, e)
198            << " Lshell= " << LShellCorrection(    216            << " Lshell= " << LShellCorrection(p, mat, e)
199            << "   " << mat->GetName() << G4end    217            << "   " << mat->GetName() << G4endl;
200   }                                               218   }
201   sum *= material->GetElectronDensity()*q2*CLH << 219   sum *= material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
202   return sum;                                     220   return sum;
203 }                                                 221 }
204                                                   222 
205 //....oooOO0OOooo........oooOO0OOooo........oo    223 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
206                                                   224 
207 G4double G4EmCorrections::IonBarkasCorrection(    225 G4double G4EmCorrections::IonBarkasCorrection(const G4ParticleDefinition* p,
208                                                   226                                               const G4Material* mat,
209                                                << 227                                               G4double e)
210 {                                                 228 {
211   SetupKinematics(p, mat, e);                  << 229   return 2.0*BarkasCorrection(p, mat, e)*
212   return 2.0*BarkasCorrection(p, mat, e, true) << 230       material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
213     material->GetElectronDensity() * q2 * CLHE << 
214 }                                                 231 }
215                                                   232 
216 //....oooOO0OOooo........oooOO0OOooo........oo    233 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
217                                                   234 
218 G4double G4EmCorrections::ComputeIonCorrection    235 G4double G4EmCorrections::ComputeIonCorrections(const G4ParticleDefinition* p,
219                                                   236                                                 const G4Material* mat,
220                                                << 237                                                 G4double e)
221 {                                                 238 {
222   // . Z^3 Barkas effect in the stopping power    239   // . Z^3 Barkas effect in the stopping power of matter for charged particles
223   //   J.C Ashley and R.H.Ritchie                 240   //   J.C Ashley and R.H.Ritchie
224   //   Physical review B Vol.5 No.7 1 April 19    241   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
225   //   and ICRU49 report                          242   //   and ICRU49 report
226   //   valid for kineticEnergy < 0.5 MeV          243   //   valid for kineticEnergy < 0.5 MeV
227   //   Other corrections from S.P.Ahlen Rev. M    244   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
228   SetupKinematics(p, mat, e);                     245   SetupKinematics(p, mat, e);
229   if(tau <= 0.0) { return 0.0; }                  246   if(tau <= 0.0) { return 0.0; }
230                                                   247 
231   const G4double Barkas = BarkasCorrection (p, << 248   G4double Barkas = BarkasCorrection (p, mat, e);
232   const G4double Bloch  = BlochCorrection (p,  << 249   G4double Bloch  = BlochCorrection (p, mat, e);
233   const G4double Mott = MottCorrection (p, mat << 250   G4double Mott   = MottCorrection (p, mat, e);
234                                                   251 
235   G4double sum = 2.0*(Barkas*(charge - 1.0)/ch    252   G4double sum = 2.0*(Barkas*(charge - 1.0)/charge + Bloch) + Mott;
236                                                   253 
237   if(verbose > 1) {                               254   if(verbose > 1) {
238     G4cout << "EmCorrections: E(MeV)= " << e/M    255     G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
239            << " Bloch= " << Bloch << " Mott= "    256            << " Bloch= " << Bloch << " Mott= " << Mott 
240            << " Sum= " << sum << G4endl;          257            << " Sum= " << sum << G4endl; 
241   }                                               258   }
242   sum *= material->GetElectronDensity() * q2 * << 259   sum *= material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
243                                                   260 
244   if(verbose > 1) { G4cout << " Sum= " << sum     261   if(verbose > 1) { G4cout << " Sum= " << sum << G4endl; } 
245   return sum;                                     262   return sum;
246 }                                                 263 }
247                                                   264 
248 //....oooOO0OOooo........oooOO0OOooo........oo    265 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
249                                                   266 
250 G4double G4EmCorrections::IonHighOrderCorrecti    267 G4double G4EmCorrections::IonHighOrderCorrections(const G4ParticleDefinition* p,
251                                                   268                                                   const G4MaterialCutsCouple* couple,
252                                                << 269                                                   G4double e)
253 {                                                 270 {
254   // . Z^3 Barkas effect in the stopping power    271   // . Z^3 Barkas effect in the stopping power of matter for charged particles
255   //   J.C Ashley and R.H.Ritchie                 272   //   J.C Ashley and R.H.Ritchie
256   //   Physical review B Vol.5 No.7 1 April 19    273   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
257   //   and ICRU49 report                          274   //   and ICRU49 report
258   //   valid for kineticEnergy < 0.5 MeV          275   //   valid for kineticEnergy < 0.5 MeV
259   //   Other corrections from S.P.Ahlen Rev. M    276   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
260                                                   277 
261   G4double sum = 0.0;                             278   G4double sum = 0.0;
262                                                   279 
263   if (nullptr != ionHEModel) {                 << 280   if(ionHEModel) {
264     G4int Z = G4lrint(p->GetPDGCharge()*invepl    281     G4int Z = G4lrint(p->GetPDGCharge()*inveplus);
265     Z = std::max(std::min(Z, 99), 1);          << 282     if(Z >= 100)   Z = 99;
                                                   >> 283     else if(Z < 1) Z = 1;
266                                                   284 
267     const G4double ethscaled = eth*p->GetPDGMa << 285     G4double ethscaled = eth*p->GetPDGMass()/proton_mass_c2;
268     const G4int ionPDG = p->GetPDGEncoding();  << 286     G4int ionPDG = p->GetPDGEncoding();
269     auto iter = thcorr.find(ionPDG);           << 287     if(thcorr.find(ionPDG)==thcorr.end()) {  // Not found: fill the map
270     if (iter == thcorr.end()) {  // Not found: << 
271       std::vector<G4double> v;                    288       std::vector<G4double> v;
272       for(std::size_t i=0; i<ncouples; ++i){   << 289       for(size_t i=0; i<ncouples; ++i){
273         v.push_back(ethscaled*ComputeIonCorrec    290         v.push_back(ethscaled*ComputeIonCorrections(p,currmat[i],ethscaled));
274       }                                           291       }
275       thcorr.insert(std::pair< G4int, std::vec    292       thcorr.insert(std::pair< G4int, std::vector<G4double> >(ionPDG,v)); 
276     }                                             293     }
277     G4double rest = 0.0;                       << 294 
278     iter = thcorr.find(ionPDG);                << 295     //G4cout << " map size=" << thcorr.size() << G4endl;
279     if (iter != thcorr.end()) { rest = (iter-> << 296     //for(std::map< G4int, std::vector<G4double> >::iterator 
                                                   >> 297     //    it = thcorr.begin(); it != thcorr.end(); ++it){
                                                   >> 298     //  G4cout << "\t map element: first (key)=" << it->first  
                                                   >> 299     //     << "\t second (vector): vec size=" << (it->second).size() << G4endl;
                                                   >> 300     //  for(size_t i=0; i<(it->second).size(); ++i){
                                                   >> 301     // G4cout << "\t \t vec element: [" << i << "]=" << (it->second)[i]
                                                   >> 302     //<< G4endl; } }
                                                   >> 303 
                                                   >> 304     G4double rest = (thcorr.find(ionPDG)->second)[couple->GetIndex()];
280                                                   305 
281     sum = ComputeIonCorrections(p,couple->GetM    306     sum = ComputeIonCorrections(p,couple->GetMaterial(),e) - rest/e;
282                                                   307 
283     if(verbose > 1) {                             308     if(verbose > 1) { 
284       G4cout << " Sum= " << sum << " dSum= " <    309       G4cout << " Sum= " << sum << " dSum= " << rest/e << G4endl; 
285     }                                             310     } 
286   }                                               311   }
287   return sum;                                     312   return sum;
288 }                                                 313 }
289                                                   314 
290 //....oooOO0OOooo........oooOO0OOooo........oo    315 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
291                                                   316 
292 G4double G4EmCorrections::Bethe(const G4Partic    317 G4double G4EmCorrections::Bethe(const G4ParticleDefinition* p,
293                                 const G4Materi    318                                 const G4Material* mat, 
294                                 const G4double << 319                                 G4double e)
295 {                                                 320 {
296   SetupKinematics(p, mat, e);                     321   SetupKinematics(p, mat, e);
297   const G4double eexc  = material->GetIonisati    322   const G4double eexc  = material->GetIonisation()->GetMeanExcitationEnergy();
298   const G4double eexc2 = eexc*eexc;               323   const G4double eexc2 = eexc*eexc;
299   return 0.5*G4Log(2.0*electron_mass_c2*bg2*tm    324   return 0.5*G4Log(2.0*electron_mass_c2*bg2*tmax/eexc2)-beta2;
300 }                                                 325 }
301                                                   326 
302 //....oooOO0OOooo........oooOO0OOooo........oo    327 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
303                                                   328 
304 G4double G4EmCorrections::SpinCorrection(const    329 G4double G4EmCorrections::SpinCorrection(const G4ParticleDefinition* p,
305                                          const    330                                          const G4Material* mat,
306                                          const << 331                                          G4double e)
307 {                                                 332 {
308   SetupKinematics(p, mat, e);                     333   SetupKinematics(p, mat, e);
309   const G4double dedx  = 0.5*tmax/(kinEnergy +    334   const G4double dedx  = 0.5*tmax/(kinEnergy + mass);
310   return 0.5*dedx*dedx;                           335   return 0.5*dedx*dedx;
311 }                                                 336 }
312                                                   337 
313 //....oooOO0OOooo........oooOO0OOooo........oo    338 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
314                                                   339 
315 G4double G4EmCorrections:: KShellCorrection(co    340 G4double G4EmCorrections:: KShellCorrection(const G4ParticleDefinition* p,
316                                             co    341                                             const G4Material* mat, 
317                                             co << 342                                             G4double e)
318 {                                                 343 {
319   SetupKinematics(p, mat, e);                     344   SetupKinematics(p, mat, e);
320   G4double term = 0.0;                            345   G4double term = 0.0;
321   for (G4int i = 0; i<numberOfElements; ++i) {    346   for (G4int i = 0; i<numberOfElements; ++i) {
322                                                   347 
323     G4double Z = (*theElementVector)[i]->GetZ(    348     G4double Z = (*theElementVector)[i]->GetZ();
324     G4int   iz = (*theElementVector)[i]->GetZa    349     G4int   iz = (*theElementVector)[i]->GetZasInt();
325     G4double f = 1.0;                             350     G4double f = 1.0;
326     G4double Z2= (Z-0.3)*(Z-0.3);                 351     G4double Z2= (Z-0.3)*(Z-0.3);
327     if(1 == iz) {                                 352     if(1 == iz) {
328       f  = 0.5;                                   353       f  = 0.5;
329       Z2 = 1.0;                                   354       Z2 = 1.0;
330     }                                             355     }
331     const G4double eta = ba2/Z2;               << 356     G4double eta = ba2/Z2;
332     const G4double tet = (11 < iz) ? sThetaK-> << 357     G4double tet = Z2*(1. + Z2*0.25*alpha2);
                                                   >> 358     if(11 < iz) { tet = sThetaK->Value(Z); }
333     term += f*atomDensity[i]*KShell(tet,eta)/Z    359     term += f*atomDensity[i]*KShell(tet,eta)/Z;
334   }                                               360   }
335                                                   361 
336   term /= material->GetTotNbOfAtomsPerVolume()    362   term /= material->GetTotNbOfAtomsPerVolume();
337                                                   363 
338   return term;                                    364   return term;
339 }                                                 365 }
340                                                   366 
341 //....oooOO0OOooo........oooOO0OOooo........oo    367 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
342                                                   368 
343 G4double G4EmCorrections:: LShellCorrection(co    369 G4double G4EmCorrections:: LShellCorrection(const G4ParticleDefinition* p,
344                                             co    370                                             const G4Material* mat, 
345                                             co << 371                                             G4double e)
346 {                                                 372 {
347   SetupKinematics(p, mat, e);                     373   SetupKinematics(p, mat, e);
348   G4double term = 0.0;                            374   G4double term = 0.0;
349   for (G4int i = 0; i<numberOfElements; ++i) {    375   for (G4int i = 0; i<numberOfElements; ++i) {
350                                                   376 
351     const G4double Z = (*theElementVector)[i]- << 377     G4double Z = (*theElementVector)[i]->GetZ();
352     const G4int iz = (*theElementVector)[i]->G << 378     G4int   iz = (*theElementVector)[i]->GetZasInt();
353     if(2 < iz) {                                  379     if(2 < iz) {
354       const G4double Zeff = (iz < 10) ? Z - ZD << 380       G4double Zeff = Z - ZD[10];
355       const G4double Z2= Zeff*Zeff;            << 381       if(iz < 10) { Zeff = Z - ZD[iz]; }
356       const G4double eta = ba2/Z2;             << 382       G4double Z2= Zeff*Zeff;
                                                   >> 383       G4double f = 0.125;
                                                   >> 384       G4double eta = ba2/Z2;
357       G4double tet = sThetaL->Value(Z);           385       G4double tet = sThetaL->Value(Z);
358       G4int nmax = std::min(4, G4AtomicShells: << 386       G4int nmax = std::min(4,G4AtomicShells::GetNumberOfShells(iz));
359       for (G4int j=1; j<nmax; ++j) {           << 387       for(G4int j=1; j<nmax; ++j) {
360         G4int ne = G4AtomicShells::GetNumberOf    388         G4int ne = G4AtomicShells::GetNumberOfElectrons(iz,j);
361         if (15 >= iz) {                        << 389         if(15 >= iz) {
362           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2* << 390           if(3 > j) { tet = 0.25*Z2*(1.0 + 5*Z2*alpha2/16.); }
363             0.25*Z2*(1.0 + Z2*alpha2/16.);     << 391           else      { tet = 0.25*Z2*(1.0 + Z2*alpha2/16.); }
364         }                                         392         }
365         //G4cout << " LShell: j= " << j << " n    393         //G4cout << " LShell: j= " << j << " ne= " << ne << " e(eV)= " << e/eV
366         //       << " ThetaL= " << tet << G4en    394         //       << " ThetaL= " << tet << G4endl;
367         term += 0.125*ne*atomDensity[i]*LShell << 395         term += f*ne*atomDensity[i]*LShell(tet,eta)/Z;
368       }                                           396       }
369     }                                             397     }
370   }                                               398   }
371                                                   399 
372   term /= material->GetTotNbOfAtomsPerVolume()    400   term /= material->GetTotNbOfAtomsPerVolume();
373                                                   401 
374   return term;                                    402   return term;
375 }                                                 403 }
376                                                   404 
377 //....oooOO0OOooo........oooOO0OOooo........oo    405 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
378                                                   406 
379 G4double G4EmCorrections::KShell(const G4doubl << 407 G4double G4EmCorrections::KShell(G4double tet, G4double eta)
380 {                                                 408 {
381   G4double corr = 0.0;                            409   G4double corr = 0.0;
382                                                   410 
383   static const G4double TheK[20] =                411   static const G4double TheK[20] = 
384     {0.64, 0.65, 0.66, 0.68, 0.70, 0.72, 0.74,    412     {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,    413      0.80, 0.82, 0.84, 0.85, 0.86, 0.88, 0.90, 0.92, 0.94, 0.95};
386                                                   414 
387                                                   415 
388   G4double x = tet;                               416   G4double x = tet;
389   G4int itet = 0;                                 417   G4int itet = 0;
390   G4int ieta = 0;                                 418   G4int ieta = 0;
391   if(tet < TheK[0]) {                             419   if(tet < TheK[0]) { 
392     x =  TheK[0];                                 420     x =  TheK[0]; 
393   } else if(tet > TheK[nK-1]) {                   421   } else if(tet > TheK[nK-1]) { 
394     x =  TheK[nK-1];                              422     x =  TheK[nK-1];
395     itet = nK-2;                                  423     itet = nK-2; 
396   } else {                                        424   } else { 
397     itet = Index(x, TheK, nK);                    425     itet = Index(x, TheK, nK);
398   }                                               426   }
399   // asymptotic case                           << 427   // assimptotic case
400   if(eta >= Eta[nEtaK-1]) {                       428   if(eta >= Eta[nEtaK-1]) {
401     corr =                                        429     corr = 
402       (Value(x, TheK[itet], TheK[itet+1], UK[i    430       (Value(x, TheK[itet], TheK[itet+1], UK[itet], UK[itet+1]) + 
403        Value(x, TheK[itet], TheK[itet+1], VK[i    431        Value(x, TheK[itet], TheK[itet+1], VK[itet], VK[itet+1])/eta +
404        Value(x, TheK[itet], TheK[itet+1], ZK[i    432        Value(x, TheK[itet], TheK[itet+1], ZK[itet], ZK[itet+1])/(eta*eta))/eta;
405   } else {                                        433   } else {
406     G4double y = eta;                             434     G4double y = eta;
407     if(eta < Eta[0]) {                            435     if(eta < Eta[0]) { 
408       y = Eta[0];                              << 436       y =  Eta[0]; 
409     } else {                                      437     } else { 
410       ieta = Index(y, Eta, nEtaK);                438       ieta = Index(y, Eta, nEtaK);
411     }                                             439     }
412     corr = Value2(x, y, TheK[itet], TheK[itet+    440     corr = Value2(x, y, TheK[itet], TheK[itet+1], Eta[ieta], Eta[ieta+1],
413                   CK[itet][ieta], CK[itet+1][i    441                   CK[itet][ieta], CK[itet+1][ieta], 
414                   CK[itet][ieta+1], CK[itet+1]    442                   CK[itet][ieta+1], CK[itet+1][ieta+1]);
415     //G4cout << "   x= " <<x<<" y= "<<y<<" tet    443     //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheK[itet]
416     //           <<" "<< TheK[itet+1]<<" eta=     444     //           <<" "<< TheK[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
417     //           <<" CK= " << CK[itet][ieta]<<    445     //           <<" CK= " << CK[itet][ieta]<<" "<< CK[itet+1][ieta]
418     //           <<" "<< CK[itet][ieta+1]<<" "    446     //           <<" "<< CK[itet][ieta+1]<<" "<< CK[itet+1][ieta+1]<<G4endl;
419   }                                               447   }
420   //G4cout << "Kshell:  tet= " << tet << " eta    448   //G4cout << "Kshell:  tet= " << tet << " eta= " << eta << "  C= " << corr
421   //         << " itet= " << itet << "  ieta=     449   //         << " itet= " << itet << "  ieta= " << ieta <<G4endl;
422   return corr;                                    450   return corr;
423 }                                                 451 }
424                                                   452 
425 //....oooOO0OOooo........oooOO0OOooo........oo    453 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
426                                                   454 
427 G4double G4EmCorrections::LShell(const G4doubl << 455 G4double G4EmCorrections::LShell(G4double tet, G4double eta)
428 {                                                 456 {
429   G4double corr = 0.0;                            457   G4double corr = 0.0;
430                                                   458 
431   static const G4double TheL[26] =                459   static const G4double TheL[26] = 
432     {0.24, 0.26, 0.28, 0.30, 0.32,   0.34, 0.3    460     {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    461      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};       462      0.58, 0.60, 0.62, 0.64, 0.65,   0.66};
435                                                   463 
436   G4double x = tet;                               464   G4double x = tet;
437   G4int itet = 0;                                 465   G4int itet = 0;
438   G4int ieta = 0;                                 466   G4int ieta = 0;
439   if(tet < TheL[0]) {                             467   if(tet < TheL[0]) { 
440     x =  TheL[0];                                 468     x =  TheL[0]; 
441   } else if(tet > TheL[nL-1]) {                   469   } else if(tet > TheL[nL-1]) { 
442     x =  TheL[nL-1];                              470     x =  TheL[nL-1];
443     itet = nL-2;                                  471     itet = nL-2; 
444   } else {                                        472   } else { 
445     itet = Index(x, TheL, nL);                    473     itet = Index(x, TheL, nL);
446   }                                               474   }
447                                                   475 
448   // asymptotic case                           << 476   // assimptotic case
449   if(eta >= Eta[nEtaL-1]) {                       477   if(eta >= Eta[nEtaL-1]) {
450     corr = (Value(x, TheL[itet], TheL[itet+1],    478     corr = (Value(x, TheL[itet], TheL[itet+1], UL[itet], UL[itet+1])
451               + Value(x, TheL[itet], TheL[itet    479               + Value(x, TheL[itet], TheL[itet+1], VL[itet], VL[itet+1])/eta
452             )/eta;                                480             )/eta;
453   } else {                                        481   } else {
454     G4double y = eta;                             482     G4double y = eta;
455     if(eta < Eta[0]) {                            483     if(eta < Eta[0]) { 
456       y =  Eta[0];                                484       y =  Eta[0]; 
457     } else {                                      485     } else { 
458       ieta = Index(y, Eta, nEtaL);                486       ieta = Index(y, Eta, nEtaL);
459     }                                             487     }
460     corr = Value2(x, y, TheL[itet], TheL[itet+    488     corr = Value2(x, y, TheL[itet], TheL[itet+1], Eta[ieta], Eta[ieta+1],
461                   CL[itet][ieta], CL[itet+1][i    489                   CL[itet][ieta], CL[itet+1][ieta], 
462                   CL[itet][ieta+1], CL[itet+1]    490                   CL[itet][ieta+1], CL[itet+1][ieta+1]);
463     //G4cout << "   x= " <<x<<" y= "<<y<<" tet    491     //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheL[itet]
464     //           <<" "<< TheL[itet+1]<<" eta=     492     //           <<" "<< TheL[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
465     //           <<" CL= " << CL[itet][ieta]<<    493     //           <<" CL= " << CL[itet][ieta]<<" "<< CL[itet+1][ieta]
466     //           <<" "<< CL[itet][ieta+1]<<" "    494     //           <<" "<< CL[itet][ieta+1]<<" "<< CL[itet+1][ieta+1]<<G4endl;
467   }                                               495   }
468   //G4cout<<"Lshell:  tet= "<<tet<<" eta= "<<e    496   //G4cout<<"Lshell:  tet= "<<tet<<" eta= "<<eta<<" itet= "<<itet
469   //        <<" ieta= "<<ieta<<"  Corr= "<<cor    497   //        <<" ieta= "<<ieta<<"  Corr= "<<corr<<G4endl;
470   return corr;                                    498   return corr;
471 }                                                 499 }
472                                                   500 
473 //....oooOO0OOooo........oooOO0OOooo........oo    501 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
474                                                   502 
475 G4double G4EmCorrections::ShellCorrectionSTD(c    503 G4double G4EmCorrections::ShellCorrectionSTD(const G4ParticleDefinition* p,
476                                              c    504                                              const G4Material* mat, 
477                                              c << 505                                              G4double e)
478 {                                                 506 {
479   SetupKinematics(p, mat, e);                     507   SetupKinematics(p, mat, e);
480   G4double taulim= 8.0*MeV/mass;                  508   G4double taulim= 8.0*MeV/mass;
481   G4double bg2lim= taulim * (taulim+2.0);         509   G4double bg2lim= taulim * (taulim+2.0);
482                                                   510 
483   G4double* shellCorrectionVector =               511   G4double* shellCorrectionVector =
484             material->GetIonisation()->GetShel    512             material->GetIonisation()->GetShellCorrectionVector();
485   G4double sh = 0.0;                              513   G4double sh = 0.0;
486   G4double x  = 1.0;                              514   G4double x  = 1.0;
487   G4double taul  = material->GetIonisation()->    515   G4double taul  = material->GetIonisation()->GetTaul();
488                                                   516 
489   if ( bg2 >= bg2lim ) {                          517   if ( bg2 >= bg2lim ) {
490     for (G4int k=0; k<3; ++k) {                   518     for (G4int k=0; k<3; ++k) {
491         x *= bg2 ;                                519         x *= bg2 ;
492         sh += shellCorrectionVector[k]/x;         520         sh += shellCorrectionVector[k]/x;
493     }                                             521     }
494                                                   522 
495   } else {                                        523   } else {
496     for (G4int k=0; k<3; ++k) {                   524     for (G4int k=0; k<3; ++k) {
497         x *= bg2lim ;                             525         x *= bg2lim ;
498         sh += shellCorrectionVector[k]/x;         526         sh += shellCorrectionVector[k]/x;
499     }                                             527     }
500     sh *= G4Log(tau/taul)/G4Log(taulim/taul);     528     sh *= G4Log(tau/taul)/G4Log(taulim/taul);
501   }                                               529   }
502   sh *= 0.5;                                      530   sh *= 0.5;
503   return sh;                                      531   return sh;
504 }                                                 532 }
505                                                   533 
506                                                   534 
507 //....oooOO0OOooo........oooOO0OOooo........oo    535 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
508                                                   536 
509 G4double G4EmCorrections::ShellCorrection(cons    537 G4double G4EmCorrections::ShellCorrection(const G4ParticleDefinition* p,
510                                           cons    538                                           const G4Material* mat,
511                                           cons << 539                                           G4double ekin)
512 {                                                 540 {
513   SetupKinematics(p, mat, ekin);                  541   SetupKinematics(p, mat, ekin);
                                                   >> 542 
514   G4double term = 0.0;                            543   G4double term = 0.0;
515   //G4cout << "### G4EmCorrections::ShellCorre    544   //G4cout << "### G4EmCorrections::ShellCorrection " << mat->GetName()
516   //       << "   " << ekin/MeV << " MeV " <<  << 545   //         << "   " << ekin/MeV << " MeV " << G4endl;
517   for (G4int i = 0; i<numberOfElements; ++i) {    546   for (G4int i = 0; i<numberOfElements; ++i) {
518                                                   547 
519     G4double res = 0.0;                           548     G4double res = 0.0;
520     G4double res0 = 0.0;                          549     G4double res0 = 0.0;
521     const G4double Z = (*theElementVector)[i]- << 550     G4double Z = (*theElementVector)[i]->GetZ();
522     const G4int iz = (*theElementVector)[i]->G << 551     G4int   iz = (*theElementVector)[i]->GetZasInt();
523     G4double Z2= (Z-0.3)*(Z-0.3);                 552     G4double Z2= (Z-0.3)*(Z-0.3);
524     G4double f = 1.0;                             553     G4double f = 1.0;
525     if(1 == iz) {                                 554     if(1 == iz) {
526       f  = 0.5;                                   555       f  = 0.5;
527       Z2 = 1.0;                                   556       Z2 = 1.0;
528     }                                             557     }
529     G4double eta = ba2/Z2;                        558     G4double eta = ba2/Z2;
530     G4double tet = (11 < iz) ? sThetaK->Value( << 559     G4double tet = Z2*(1. + Z2*0.25*alpha2);
                                                   >> 560     if(11 < iz) { tet = sThetaK->Value(Z); }
531     res0 = f*KShell(tet,eta);                     561     res0 = f*KShell(tet,eta);
532     res += res0;                                  562     res += res0;
533     //G4cout << " Z= " << iz << " Shell 0" <<     563     //G4cout << " Z= " << iz << " Shell 0" << " tet= " << tet 
534     //       << " eta= " << eta << "  resK= "     564     //       << " eta= " << eta << "  resK= " << res0 << G4endl;
535                                                << 
536     if(2 < iz) {                                  565     if(2 < iz) {
537       const G4double Zeff = (iz < 10) ? Z - ZD << 566       G4double Zeff = Z - ZD[10];
                                                   >> 567       if(iz < 10) { Zeff = Z - ZD[iz]; }
538       Z2= Zeff*Zeff;                              568       Z2= Zeff*Zeff;
539       eta = ba2/Z2;                               569       eta = ba2/Z2;
540       tet = sThetaL->Value(Z);                 << 
541       f = 0.125;                                  570       f = 0.125;
542       const G4int ntot = G4AtomicShells::GetNu << 571       tet = sThetaL->Value(Z);
543       const G4int nmax = std::min(4, ntot);    << 572       G4int ntot = G4AtomicShells::GetNumberOfShells(iz);
                                                   >> 573       G4int nmax = std::min(4, ntot);
544       G4double norm   = 0.0;                      574       G4double norm   = 0.0;
545       G4double eshell = 0.0;                      575       G4double eshell = 0.0;
546       for(G4int j=1; j<nmax; ++j) {               576       for(G4int j=1; j<nmax; ++j) {
547         G4int ne = G4AtomicShells::GetNumberOf    577         G4int ne = G4AtomicShells::GetNumberOfElectrons(iz,j);
548         if(15 >= iz) {                            578         if(15 >= iz) {
549           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2* << 579           if(3 > j) { tet = 0.25*Z2*(1.0 + 5*Z2*alpha2/16.); }
550       0.25*Z2*(1.0 + Z2*alpha2/16.);           << 580           else      { tet = 0.25*Z2*(1.0 + Z2*alpha2/16.); }
551         }                                         581         }
552         norm   += ne;                             582         norm   += ne;
553         eshell += tet*ne;                         583         eshell += tet*ne;
554         res0 = f*ne*LShell(tet,eta);              584         res0 = f*ne*LShell(tet,eta);
555         res += res0;                              585         res += res0;
556         //G4cout << " Zeff= " << Zeff << " She << 586         //G4cout << " Z= " << iz << " Shell " << j << " Ne= " << ne
557         //       << " tet= " << tet << " eta=     587         //       << " tet= " << tet << " eta= " << eta 
558         //       << "  resL= " << res0 << G4en    588         //       << "  resL= " << res0 << G4endl;
559       }                                           589       }
560       if(ntot > nmax) {                           590       if(ntot > nmax) {
561   if (norm > 0.0) { norm = 1.0/norm; }         << 591         eshell /= norm;
562         eshell *= norm;                        << 
563                                                   592 
564   static const G4double HM[53] = {                593   static const G4double HM[53] = {
565     12.0, 12.0, 12.0, 12.0, 11.9, 11.7, 11.5,     594     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,    595     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,    596     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,    597     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,    598     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 };                           599     3.90, 3.92, 3.93 };
571   static const G4double HN[31] = {                600   static const G4double HN[31] = {
572     75.5, 61.9, 52.2, 45.1, 39.6, 35.4, 31.9,     601     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,     602     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,     603     19.5, 19.3, 19.2, 19.1, 18.4, 18.8, 18.7, 18.6, 18.5, 18.4, 
575     18.2};                                        604     18.2};
576                                                   605 
577         // Add M-shell                            606         // Add M-shell
578         if(28 > iz) {                             607         if(28 > iz) {
579           res += f*(iz - 10)*LShell(eshell,HM[    608           res += f*(iz - 10)*LShell(eshell,HM[iz-11]*eta);
580         } else if(63 > iz) {                      609         } else if(63 > iz) { 
581           res += f*18*LShell(eshell,HM[iz-11]*    610           res += f*18*LShell(eshell,HM[iz-11]*eta);
582         } else {                                  611         } else {
583           res += f*18*LShell(eshell,HM[52]*eta    612           res += f*18*LShell(eshell,HM[52]*eta);
584         }                                         613         }
585         // Add N-shell                            614         // Add N-shell
586         if(32 < iz) {                             615         if(32 < iz) {
587           if(60 > iz) {                           616           if(60 > iz) {
588             res += f*(iz - 28)*LShell(eshell,H    617             res += f*(iz - 28)*LShell(eshell,HN[iz-33]*eta);
589           } else if(63 > iz) {                    618           } else if(63 > iz) {
590             res += 4*LShell(eshell,HN[iz-33]*e    619             res += 4*LShell(eshell,HN[iz-33]*eta);
591           } else {                                620           } else {
592             res += 4*LShell(eshell,HN[30]*eta)    621             res += 4*LShell(eshell,HN[30]*eta);
593           }                                       622           }
594           // Add O-P-shells                       623           // Add O-P-shells
595           if(60 < iz) {                           624           if(60 < iz) {
596             res += f*(iz - 60)*LShell(eshell,1    625             res += f*(iz - 60)*LShell(eshell,150*eta);
597           }                                       626           }
598         }                                         627         }
599       }                                           628       }
600     }                                             629     }
601     term += res*atomDensity[i]/Z;                 630     term += res*atomDensity[i]/Z;
602   }                                               631   }
603                                                   632 
604   term /= material->GetTotNbOfAtomsPerVolume()    633   term /= material->GetTotNbOfAtomsPerVolume();
605   //G4cout << "##Shell Correction=" << term << << 634   //G4cout << "#     Shell Correction= " << term << G4endl;
606   return term;                                    635   return term;
607 }                                                 636 }
608                                                   637 
609 //....oooOO0OOooo........oooOO0OOooo........oo    638 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
610                                                   639 
611 G4double G4EmCorrections::DensityCorrection(co    640 G4double G4EmCorrections::DensityCorrection(const G4ParticleDefinition* p,
612                                             co    641                                             const G4Material* mat,
613                                             co << 642                                             G4double e)
614 {                                                 643 {
615   SetupKinematics(p, mat, e);                     644   SetupKinematics(p, mat, e);
616                                                   645 
617   G4double cden  = material->GetIonisation()->    646   G4double cden  = material->GetIonisation()->GetCdensity();
618   G4double mden  = material->GetIonisation()->    647   G4double mden  = material->GetIonisation()->GetMdensity();
619   G4double aden  = material->GetIonisation()->    648   G4double aden  = material->GetIonisation()->GetAdensity();
620   G4double x0den = material->GetIonisation()->    649   G4double x0den = material->GetIonisation()->GetX0density();
621   G4double x1den = material->GetIonisation()->    650   G4double x1den = material->GetIonisation()->GetX1density();
622                                                   651 
623   G4double dedx = 0.0;                            652   G4double dedx = 0.0;
624                                                   653 
625   // density correction                           654   // density correction
626   static const G4double twoln10 = 2.0*G4Log(10    655   static const G4double twoln10 = 2.0*G4Log(10.0);
627   G4double x = G4Log(bg2)/twoln10;                656   G4double x = G4Log(bg2)/twoln10;
628   if ( x >= x0den ) {                             657   if ( x >= x0den ) {
629     dedx = twoln10*x - cden ;                     658     dedx = twoln10*x - cden ;
630     if ( x < x1den ) dedx += aden*G4Exp(G4Log(    659     if ( x < x1den ) dedx += aden*G4Exp(G4Log(x1den-x)*mden) ;
631   }                                               660   }
632                                                   661 
633   return dedx;                                    662   return dedx;
634 }                                                 663 }
635                                                   664 
636 //....oooOO0OOooo........oooOO0OOooo........oo    665 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
637                                                   666 
638 G4double G4EmCorrections::BarkasCorrection(con    667 G4double G4EmCorrections::BarkasCorrection(const G4ParticleDefinition* p,
639                                            con    668                                            const G4Material* mat, 
640                                            con << 669                                            G4double e)
641                                            con << 
642 {                                                 670 {
643   // . Z^3 Barkas effect in the stopping power    671   // . Z^3 Barkas effect in the stopping power of matter for charged particles
644   //   J.C Ashley and R.H.Ritchie                 672   //   J.C Ashley and R.H.Ritchie
645   //   Physical review B Vol.5 No.7 1 April 19    673   //   Physical review B Vol.5 No.7 1 April 1972 pp. 2393-2397
646   //   valid for kineticEnergy > 0.5 MeV          674   //   valid for kineticEnergy > 0.5 MeV
647                                                   675 
648   if (!isInitialized) { SetupKinematics(p, mat << 676   SetupKinematics(p, mat, e);
649   G4double BarkasTerm = 0.0;                      677   G4double BarkasTerm = 0.0;
650                                                   678 
651   for (G4int i = 0; i<numberOfElements; ++i) {    679   for (G4int i = 0; i<numberOfElements; ++i) {
652                                                   680 
653     const G4int iz = (*theElementVector)[i]->G << 681     G4double Z = (*theElementVector)[i]->GetZ();
                                                   >> 682     G4int iz = (*theElementVector)[i]->GetZasInt();
654     if(iz == 47) {                                683     if(iz == 47) {
655       BarkasTerm += atomDensity[i]*0.006812*G4    684       BarkasTerm += atomDensity[i]*0.006812*G4Exp(-G4Log(beta)*0.9);
656     } else if(iz >= 64) {                         685     } else if(iz >= 64) {
657       BarkasTerm += atomDensity[i]*0.002833*G4    686       BarkasTerm += atomDensity[i]*0.002833*G4Exp(-G4Log(beta)*1.2);
658     } else {                                      687     } else {    
659                                                   688 
660       const G4double Z = (*theElementVector)[i << 689       G4double X = ba2 / Z;
661       const G4double X = ba2 / Z;              << 
662       G4double b = 1.3;                           690       G4double b = 1.3;
663       if(1 == iz) { b = (material->GetName() = << 691       if(1 == iz) {
                                                   >> 692         if(material->GetName() == "G4_lH2") { b = 0.6; }
                                                   >> 693         else                                { b = 1.8; }
                                                   >> 694       }
664       else if(2 == iz)  { b = 0.6; }              695       else if(2 == iz)  { b = 0.6; }
665       else if(10 >= iz) { b = 1.8; }              696       else if(10 >= iz) { b = 1.8; }
666       else if(17 >= iz) { b = 1.4; }              697       else if(17 >= iz) { b = 1.4; }
667       else if(18 == iz) { b = 1.8; }              698       else if(18 == iz) { b = 1.8; }
668       else if(25 >= iz) { b = 1.4; }              699       else if(25 >= iz) { b = 1.4; }
669       else if(50 >= iz) { b = 1.35;}              700       else if(50 >= iz) { b = 1.35;}
670                                                   701 
671       const G4double W = b/std::sqrt(X);       << 702       G4double W = b/std::sqrt(X);
672                                                   703 
673       G4double val = sBarkasCorr->Value(W, idx << 704       G4double val = sBarkasCorr->Value(W);
674       if (W > sWmaxBarkas) { val *= (sWmaxBark << 705       if(W > sBarkasCorr->Energy(46)) { 
                                                   >> 706         val *= sBarkasCorr->Energy(46)/W; 
                                                   >> 707       } 
675       //    G4cout << "i= " << i << " b= " <<     708       //    G4cout << "i= " << i << " b= " << b << " W= " << W 
676       // << " Z= " << Z << " X= " << X << " va    709       // << " Z= " << Z << " X= " << X << " val= " << val<< G4endl;
677       BarkasTerm += val*atomDensity[i] / (std:    710       BarkasTerm += val*atomDensity[i] / (std::sqrt(Z*X)*X);
678     }                                             711     }
679   }                                               712   }
680                                                   713 
681   BarkasTerm *= 1.29*charge/material->GetTotNb    714   BarkasTerm *= 1.29*charge/material->GetTotNbOfAtomsPerVolume();
682                                                   715 
683   return BarkasTerm;                              716   return BarkasTerm;
684 }                                                 717 }
685                                                   718 
686 //....oooOO0OOooo........oooOO0OOooo........oo    719 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
687                                                   720 
688 G4double G4EmCorrections::BlochCorrection(cons    721 G4double G4EmCorrections::BlochCorrection(const G4ParticleDefinition* p,
689                                           cons    722                                           const G4Material* mat,
690                                           cons << 723                                           G4double e)
691                                           cons << 
692 {                                                 724 {
693   if (!isInitialized) { SetupKinematics(p, mat << 725   SetupKinematics(p, mat, e);
694                                                   726 
695   G4double y2 = q2/ba2;                           727   G4double y2 = q2/ba2;
696                                                   728 
697   G4double term = 1.0/(1.0 + y2);                 729   G4double term = 1.0/(1.0 + y2);
698   G4double del;                                   730   G4double del;
699   G4double j = 1.0;                               731   G4double j = 1.0;
700   do {                                            732   do {
701     j += 1.0;                                     733     j += 1.0;
702     del = 1.0/(j* (j*j + y2));                    734     del = 1.0/(j* (j*j + y2));
703     term += del;                                  735     term += del;
704     // Loop checking, 03-Aug-2015, Vladimir Iv    736     // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
705   } while (del > 0.01*term);                      737   } while (del > 0.01*term);
706                                                   738 
707   return -y2*term;                             << 739   G4double res = -y2*term;
                                                   >> 740   return res;
708 }                                                 741 }
709                                                   742 
710 //....oooOO0OOooo........oooOO0OOooo........oo    743 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
711                                                   744 
712 G4double G4EmCorrections::MottCorrection(const    745 G4double G4EmCorrections::MottCorrection(const G4ParticleDefinition* p,
713                                          const    746                                          const G4Material* mat, 
714                                          const << 747                                          G4double e)
715                                          const << 
716 {                                                 748 {
717   if (!isInitialized) { SetupKinematics(p, mat << 749   SetupKinematics(p, mat, e);
718   return CLHEP::pi*CLHEP::fine_structure_const << 750   G4double mterm = CLHEP::pi*fine_structure_const*beta*charge;
                                                   >> 751   return mterm;
719 }                                                 752 }
720                                                   753 
721 //....oooOO0OOooo........oooOO0OOooo........oo    754 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
722                                                   755 
723 G4double                                          756 G4double 
724 G4EmCorrections::EffectiveChargeCorrection(con    757 G4EmCorrections::EffectiveChargeCorrection(const G4ParticleDefinition* p,
725                                            con    758                                            const G4Material* mat,
726                                            con << 759                                            G4double ekin)
727 {                                                 760 {
728   G4double factor = 1.0;                          761   G4double factor = 1.0;
729   if(p->GetPDGCharge() <= 2.5*CLHEP::eplus ||     762   if(p->GetPDGCharge() <= 2.5*CLHEP::eplus || nIons <= 0) { return factor; }
730                                                   763   
731   if(verbose > 1) {                               764   if(verbose > 1) {
732     G4cout << "EffectiveChargeCorrection: " <<    765     G4cout << "EffectiveChargeCorrection: " << p->GetParticleName() 
733            << " in " << mat->GetName()            766            << " in " << mat->GetName()
734            << " ekin(MeV)= " << ekin/MeV << G4    767            << " ekin(MeV)= " << ekin/MeV << G4endl;
735   }                                               768   }
736                                                   769 
737   if(p != curParticle || mat != curMaterial) {    770   if(p != curParticle || mat != curMaterial) {
738     curParticle = p;                              771     curParticle = p;
739     curMaterial = mat;                            772     curMaterial = mat;
740     curVector   = nullptr;                        773     curVector   = nullptr;
741     currentZ = p->GetAtomicNumber();              774     currentZ = p->GetAtomicNumber();
742     if(verbose > 1) {                             775     if(verbose > 1) {
743       G4cout << "G4EmCorrections::EffectiveCha    776       G4cout << "G4EmCorrections::EffectiveChargeCorrection: Zion= " 
744              << currentZ << " Aion= " << p->Ge    777              << currentZ << " Aion= " << p->GetPDGMass()/amu_c2 << G4endl;
745     }                                             778     }
746     massFactor = CLHEP::proton_mass_c2/p->GetP    779     massFactor = CLHEP::proton_mass_c2/p->GetPDGMass();
747     idx = -1;                                     780     idx = -1;
748                                                   781 
749     for(G4int i=0; i<nIons; ++i) {                782     for(G4int i=0; i<nIons; ++i) {
750       if(materialList[i] == mat && currentZ ==    783       if(materialList[i] == mat && currentZ == Zion[i]) {
751         idx = i;                                  784         idx = i;
752         break;                                    785         break;
753       }                                           786       }
754     }                                             787     }
755     //G4cout << " idx= " << idx << " dz= " <<     788     //G4cout << " idx= " << idx << " dz= " << G4endl;
756     if(idx >= 0) {                                789     if(idx >= 0) {
757       if(nullptr == ionList[idx]) { BuildCorre    790       if(nullptr == ionList[idx]) { BuildCorrectionVector(); } 
758       curVector = stopData[idx];                  791       curVector = stopData[idx];
759     } else {                                      792     } else { 
760       return factor;                              793       return factor;
761     }                                             794     }
762   }                                               795   }
763   if(nullptr != curVector) {                      796   if(nullptr != curVector) {
764     factor = curVector->Value(ekin*massFactor)    797     factor = curVector->Value(ekin*massFactor);
765     if(verbose > 1) {                             798     if(verbose > 1) {
766       G4cout << "E= " << ekin << " factor= " <    799       G4cout << "E= " << ekin << " factor= " << factor << " massfactor= " 
767              << massFactor << G4endl;             800              << massFactor << G4endl;
768     }                                             801     }
769   }                                               802   }
770   return factor;                                  803   return factor;
771 }                                                 804 }
772                                                   805 
773 //....oooOO0OOooo........oooOO0OOooo........oo    806 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
774                                                   807 
775 void G4EmCorrections::AddStoppingData(const G4 << 808 void G4EmCorrections::AddStoppingData(G4int Z, G4int A,
776                                       const G4    809                                       const G4String& mname,
777                                       G4Physic    810                                       G4PhysicsVector* dVector)
778 {                                                 811 {
779   G4int i = 0;                                    812   G4int i = 0;
780   for(; i<nIons; ++i) {                           813   for(; i<nIons; ++i) {
781     if(Z == Zion[i] && A == Aion[i] && mname =    814     if(Z == Zion[i] && A == Aion[i] && mname == materialName[i]) break;
782   }                                               815   }
783   if(i == nIons) {                                816   if(i == nIons) {
784     Zion.push_back(Z);                            817     Zion.push_back(Z);
785     Aion.push_back(A);                            818     Aion.push_back(A);
786     materialName.push_back(mname);                819     materialName.push_back(mname);
787     materialList.push_back(nullptr);              820     materialList.push_back(nullptr);
788     ionList.push_back(nullptr);                   821     ionList.push_back(nullptr);
789     stopData.push_back(dVector);                  822     stopData.push_back(dVector);
790     nIons++;                                      823     nIons++;
791     if(verbose > 1) {                             824     if(verbose > 1) {
792       G4cout << "AddStoppingData Z= " << Z <<     825       G4cout << "AddStoppingData Z= " << Z << " A= " << A << " " << mname
793              << "  idx= " << i << G4endl;         826              << "  idx= " << i << G4endl;
794     }                                             827     }
795   }                                               828   }
796 }                                                 829 }
797                                                   830 
798 //....oooOO0OOooo........oooOO0OOooo........oo    831 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
799                                                   832 
800 void G4EmCorrections::BuildCorrectionVector()     833 void G4EmCorrections::BuildCorrectionVector()
801 {                                                 834 {
802   if(nullptr == ionLEModel || nullptr == ionHE    835   if(nullptr == ionLEModel || nullptr == ionHEModel) {
803     return;                                       836     return;
804   }                                               837   }
805                                                   838 
806   const G4ParticleDefinition* ion = curParticl    839   const G4ParticleDefinition* ion = curParticle;
807   const G4ParticleDefinition* gion = G4Generic    840   const G4ParticleDefinition* gion = G4GenericIon::GenericIon();
808   G4int Z = Zion[idx];                            841   G4int Z = Zion[idx];
809   G4double A = Aion[idx];                         842   G4double A = Aion[idx];
810   G4PhysicsVector* v = stopData[idx];             843   G4PhysicsVector* v = stopData[idx];
811                                                   844       
812   if(verbose > 1) {                               845   if(verbose > 1) {
813     G4cout << "BuildCorrectionVector: Stopping    846     G4cout << "BuildCorrectionVector: Stopping for "
814            << curParticle->GetParticleName() <    847            << curParticle->GetParticleName() << " in " 
815            << materialName[idx] << " Ion Z= "     848            << materialName[idx] << " Ion Z= " << Z << " A= " << A
816            << " massFactor= " << massFactor <<    849            << " massFactor= " << massFactor << G4endl;
817     G4cout << "    Nbins=" << nbinCorr << " Em    850     G4cout << "    Nbins=" << nbinCorr << " Emin(MeV)=" << eCorrMin
818      << " Emax(MeV)=" << eCorrMax << " ion: "     851      << " Emax(MeV)=" << eCorrMax << " ion: "
819            << ion->GetParticleName() << G4endl    852            << ion->GetParticleName() << G4endl;
820   }                                               853   }
821                                                   854 
822   auto vv = new G4PhysicsLogVector(eCorrMin,eC << 855   G4PhysicsLogVector* vv = 
                                                   >> 856     new G4PhysicsLogVector(eCorrMin,eCorrMax,nbinCorr,false);
823   const G4double eth0 = v->Energy(0);             857   const G4double eth0 = v->Energy(0);
824   const G4double escal = eth/massFactor;          858   const G4double escal = eth/massFactor;
825   G4double qe =                                   859   G4double qe = 
826     effCharge.EffectiveChargeSquareRatio(curPa    860     effCharge.EffectiveChargeSquareRatio(curParticle, curMaterial, escal); 
827   const G4double dedxt =                          861   const G4double dedxt = 
828     ionLEModel->ComputeDEDXPerVolume(curMateri    862     ionLEModel->ComputeDEDXPerVolume(curMaterial, gion, eth, eth)*qe;
829   const G4double dedx1t =                         863   const G4double dedx1t = 
830     ionHEModel->ComputeDEDXPerVolume(curMateri    864     ionHEModel->ComputeDEDXPerVolume(curMaterial, gion, eth, eth)*qe 
831     + ComputeIonCorrections(curParticle, curMa    865     + ComputeIonCorrections(curParticle, curMaterial, escal);
832   const G4double rest = escal*(dedxt - dedx1t)    866   const G4double rest = escal*(dedxt - dedx1t);
833   if(verbose > 1) {                               867   if(verbose > 1) {
834     G4cout << "Escal(MeV)= " << escal << " qe=    868     G4cout << "Escal(MeV)= " << escal << " qe=" << qe 
835            << " dedxt= " << dedxt << " dedx1t=    869            << " dedxt= " << dedxt << " dedx1t= " << dedx1t << G4endl;   
836   }                                               870   }
837   for(G4int i=0; i<=nbinCorr; ++i) {              871   for(G4int i=0; i<=nbinCorr; ++i) {
838     // energy in the local table (GenericIon)     872     // energy in the local table (GenericIon)
839     G4double e = vv->Energy(i);                   873     G4double e = vv->Energy(i);
840     // energy of the real ion                     874     // energy of the real ion 
841     G4double eion = e/massFactor;                 875     G4double eion = e/massFactor;
842     // energy in the imput stopping data vecto    876     // energy in the imput stopping data vector
843     G4double e1 = eion/A;                         877     G4double e1 = eion/A;
844     G4double dedx = (e1 < eth0)                   878     G4double dedx = (e1 < eth0) 
845       ? v->Value(eth0)*std::sqrt(e1/eth0) : v-    879       ? v->Value(eth0)*std::sqrt(e1/eth0) : v->Value(e1);
846     qe = effCharge.EffectiveChargeSquareRatio(    880     qe = effCharge.EffectiveChargeSquareRatio(curParticle, curMaterial, eion);
847     G4double dedx1 = (e <= eth)                   881     G4double dedx1 = (e <= eth) 
848       ? ionLEModel->ComputeDEDXPerVolume(curMa    882       ? ionLEModel->ComputeDEDXPerVolume(curMaterial, gion, e, e)*qe
849       : ionHEModel->ComputeDEDXPerVolume(curMa    883       : ionHEModel->ComputeDEDXPerVolume(curMaterial, gion, e, e)*qe +
850       ComputeIonCorrections(curParticle, curMa    884       ComputeIonCorrections(curParticle, curMaterial, eion) + rest/eion;
851     vv->PutValue(i, dedx/dedx1);                  885     vv->PutValue(i, dedx/dedx1);
852     if(verbose > 1) {                             886     if(verbose > 1) {
853       G4cout << "E(MeV)=" << e/CLHEP::MeV << "    887       G4cout << "E(MeV)=" << e/CLHEP::MeV << " Eion=" << eion/CLHEP::MeV
854        << " e1=" << e1 << " dedxRatio= " << de    888        << " e1=" << e1 << " dedxRatio= " << dedx/dedx1
855              << " dedx="  << dedx << " dedx1="    889              << " dedx="  << dedx << " dedx1=" << dedx1 
856              << " qe=" << qe << " rest/eion="     890              << " qe=" << qe << " rest/eion=" << rest/eion << G4endl;
857     }                                             891     }
858   }                                               892   }
859   delete v;                                       893   delete v;
860   ionList[idx]  = ion;                            894   ionList[idx]  = ion;
861   stopData[idx] = vv;                             895   stopData[idx] = vv;
862   if(verbose > 1) { G4cout << "End data set "     896   if(verbose > 1) { G4cout << "End data set " << G4endl; }
863 }                                                 897 }
864                                                   898 
865 //....oooOO0OOooo........oooOO0OOooo........oo    899 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
866                                                   900 
867 void G4EmCorrections::InitialiseForNewRun()       901 void G4EmCorrections::InitialiseForNewRun()
868 {                                                 902 {
869   G4ProductionCutsTable* tb = G4ProductionCuts    903   G4ProductionCutsTable* tb = G4ProductionCutsTable::GetProductionCutsTable();
870   ncouples = tb->GetTableSize();                  904   ncouples = tb->GetTableSize();
871   if(currmat.size() != ncouples) {                905   if(currmat.size() != ncouples) {
872     currmat.resize(ncouples);                     906     currmat.resize(ncouples);
873     for(auto it = thcorr.begin(); it != thcorr << 907     for(std::map< G4int, std::vector<G4double> >::iterator it = 
                                                   >> 908         thcorr.begin(); it != thcorr.end(); ++it){
874       (it->second).clear();                       909       (it->second).clear();
875     }                                             910     }
876     thcorr.clear();                               911     thcorr.clear();
877     for(std::size_t i=0; i<ncouples; ++i) {    << 912     for(size_t i=0; i<ncouples; ++i) {
878       currmat[i] = tb->GetMaterialCutsCouple(( << 913       currmat[i] = tb->GetMaterialCutsCouple(i)->GetMaterial();
879       G4String nam = currmat[i]->GetName();       914       G4String nam = currmat[i]->GetName();
880       for(G4int j=0; j<nIons; ++j) {              915       for(G4int j=0; j<nIons; ++j) {
881         if(nam == materialName[j]) { materialL    916         if(nam == materialName[j]) { materialList[j] = currmat[i]; }
882       }                                           917       }
883     }                                             918     }
884   }                                               919   }
885 }                                                 920 }
886                                                   921 
887 //....oooOO0OOooo........oooOO0OOooo........oo    922 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
888                                                   923 
889 void G4EmCorrections::Initialise()                924 void G4EmCorrections::Initialise()
890 {                                                 925 {
891   // Z^3 Barkas effect in the stopping power o    926   // Z^3 Barkas effect in the stopping power of matter for charged particles
892   // J.C Ashley and R.H.Ritchie                   927   // J.C Ashley and R.H.Ritchie
893   // Physical review B Vol.5 No.7 1 April 1972    928   // Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
894   // G.S. Khandelwal Nucl. Phys. A116(1968)97  << 
895   // "Shell corrections for K- and L- electron << 
896                                                << 
897   G4int i, j;                                     929   G4int i, j;
898   static const G4double fTable[47][2] = {         930   static const G4double fTable[47][2] = {
899    { 0.02, 21.5},                                 931    { 0.02, 21.5},
900    { 0.03, 20.0},                                 932    { 0.03, 20.0},
901    { 0.04, 18.0},                                 933    { 0.04, 18.0},
902    { 0.05, 15.6},                                 934    { 0.05, 15.6},
903    { 0.06, 15.0},                                 935    { 0.06, 15.0},
904    { 0.07, 14.0},                                 936    { 0.07, 14.0},
905    { 0.08, 13.5},                                 937    { 0.08, 13.5},
906    { 0.09, 13.},                                  938    { 0.09, 13.},
907    { 0.1,  12.2},                                 939    { 0.1,  12.2},
908    { 0.2,  9.25},                                 940    { 0.2,  9.25},
909    { 0.3,  7.0},                                  941    { 0.3,  7.0},
910    { 0.4,  6.0},                                  942    { 0.4,  6.0},
911    { 0.5,  4.5},                                  943    { 0.5,  4.5},
912    { 0.6,  3.5},                                  944    { 0.6,  3.5},
913    { 0.7,  3.0},                                  945    { 0.7,  3.0},
914    { 0.8,  2.5},                                  946    { 0.8,  2.5},
915    { 0.9,  2.0},                                  947    { 0.9,  2.0},
916    { 1.0,  1.7},                                  948    { 1.0,  1.7},
917    { 1.2,  1.2},                                  949    { 1.2,  1.2},
918    { 1.3,  1.0},                                  950    { 1.3,  1.0},
919    { 1.4,  0.86},                                 951    { 1.4,  0.86},
920    { 1.5,  0.7},                                  952    { 1.5,  0.7},
921    { 1.6,  0.61},                                 953    { 1.6,  0.61},
922    { 1.7,  0.52},                                 954    { 1.7,  0.52},
923    { 1.8,  0.5},                                  955    { 1.8,  0.5},
924    { 1.9,  0.43},                                 956    { 1.9,  0.43},
925    { 2.0,  0.42},                                 957    { 2.0,  0.42},
926    { 2.1,  0.3},                                  958    { 2.1,  0.3},
927    { 2.4,  0.2},                                  959    { 2.4,  0.2},
928    { 3.0,  0.13},                                 960    { 3.0,  0.13},
929    { 3.08, 0.1},                                  961    { 3.08, 0.1},
930    { 3.1,  0.09},                                 962    { 3.1,  0.09},
931    { 3.3,  0.08},                                 963    { 3.3,  0.08},
932    { 3.5,  0.07},                                 964    { 3.5,  0.07},
933    { 3.8,  0.06},                                 965    { 3.8,  0.06},
934    { 4.0,  0.051},                                966    { 4.0,  0.051},
935    { 4.1,  0.04},                                 967    { 4.1,  0.04},
936    { 4.8,  0.03},                                 968    { 4.8,  0.03},
937    { 5.0,  0.024},                                969    { 5.0,  0.024},
938    { 5.1,  0.02},                                 970    { 5.1,  0.02},
939    { 6.0,  0.013},                                971    { 6.0,  0.013},
940    { 6.5,  0.01},                                 972    { 6.5,  0.01},
941    { 7.0,  0.009},                                973    { 7.0,  0.009},
942    { 7.1,  0.008},                                974    { 7.1,  0.008},
943    { 8.0,  0.006},                                975    { 8.0,  0.006},
944    { 9.0,  0.0032},                               976    { 9.0,  0.0032},
945    { 10.0, 0.0025} };                             977    { 10.0, 0.0025} };
946                                                   978 
947   sBarkasCorr = new G4PhysicsFreeVector(47, fa    979   sBarkasCorr = new G4PhysicsFreeVector(47, false);
948   for(i=0; i<47; ++i) { sBarkasCorr->PutValues    980   for(i=0; i<47; ++i) { sBarkasCorr->PutValues(i, fTable[i][0], fTable[i][1]); }
949                                                   981 
950   const G4double SK[20] = {1.9477, 1.9232, 1.8 << 982   static const G4double SK[20] = {1.9477, 1.9232, 1.8996, 1.8550, 1.8137,
951                            1.7754, 1.7396, 1.7    983                            1.7754, 1.7396, 1.7223, 1.7063, 1.6752,
952                            1.6461, 1.6189, 1.5    984                            1.6461, 1.6189, 1.5933, 1.5811, 1.5693,
953                            1.5467, 1.5254, 1.5    985                            1.5467, 1.5254, 1.5053, 1.4863, 1.4772};
954   const G4double TK[20] = {2.5222, 2.5125, 2.5 << 986   static const G4double TK[20] = {2.5222, 2.5125, 2.5026, 2.4821, 2.4608,
955                            2.4388, 2.4163, 2.4    987                            2.4388, 2.4163, 2.4044, 2.3933, 2.3701,
956                            2.3466, 2.3229, 2.2    988                            2.3466, 2.3229, 2.2992, 2.2872, 2.2753,
957                            2.2515, 2.2277, 2.2    989                            2.2515, 2.2277, 2.2040, 2.1804, 2.1686};
958                                                   990 
959   const G4double SL[26] = {15.3343, 13.9389, 1 << 991   static const G4double SL[26] = {15.3343, 13.9389, 12.7909, 11.8343, 11.0283,
960                            10.3424, 10.0371,      992                            10.3424, 10.0371,  9.7537,  9.2443,  8.8005,
961                            8.4114,  8.0683,       993                            8.4114,  8.0683,   7.9117, 7.7641, 7.4931,
962                            7.2506,  7.0327,       994                            7.2506,  7.0327,   6.8362, 6.7452, 6.6584,
963                            6.4969,  6.3498,       995                            6.4969,  6.3498,   6.2154, 6.0923, 6.0345, 5.9792};
964   const G4double TL[26] = {35.0669, 33.4344, 3 << 996   static const G4double TL[26] = {35.0669, 33.4344, 32.0073, 30.7466, 29.6226,
965                            28.6128, 28.1449, 2    997                            28.6128, 28.1449, 27.6991, 26.8674, 26.1061,
966                            25.4058, 24.7587, 2    998                            25.4058, 24.7587, 24.4531, 24.1583, 23.5992,
967                            23.0771, 22.5880, 2    999                            23.0771, 22.5880, 22.1285, 21.9090, 21.6958,
968                            21.2872, 20.9006, 2    1000                            21.2872, 20.9006, 20.5341, 20.1859, 20.0183, 19.8546};
969                                                   1001 
970   const G4double bk1[29][11] = {               << 1002   static const G4double bk1[29][11] = { 
971   {0.005, 1.34782E-8, 1.46132E-8, 1.72179E-8,     1003   {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,     1004   {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    1005   {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,     1006   {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    1007   {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    1008   {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    1009   {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    1010   {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    1011   {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    1012   {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.    1013   {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    1014   {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.    1015   {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.    1016   {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.    1017   {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.    1018   {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.    1019   {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.    1020   {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.    1021   {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.    1022   {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.    1023   {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.    1024   {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.    1025   {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.    1026   {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.    1027   {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.    1028   {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.    1029   {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.    1030   {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    1031   {10.0, 5.32590, 5.35848, 5.42560, 5.49547, 5.56830, 5.64429, 5.68353, 5.72366, 5.80666, 5.89359}
1000   };                                             1032   }; 
1001                                                  1033 
1002   const G4double bk2[29][11] = {              << 1034   static const G4double bk2[29][11] = { 
1003   {0.005, 5.98040E-8, 7.25636E-8, 8.00602E-8,    1035   {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,    1036   {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,     1037   {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,    1038   {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,     1039   {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,     1040   {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,     1041   {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,     1042   {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,     1043   {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,     1044   {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    1045   {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,     1046   {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    1047   {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    1048   {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    1049   {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    1050   {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    1051   {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    1052   {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    1053   {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    1054   {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    1055   {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    1056   {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    1057   {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    1058   {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    1059   {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    1060   {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    1061   {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    1062   {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,     1063   {10.0, 5.98474, 6.08046, 6.13015, 6.18112, 6.28715, 6.39903, 6.51728, 6.64249, 6.70792, 6.77535}
1032   };                                             1064   }; 
1033                                                  1065 
1034   const G4double bls1[28][10] = {             << 1066   static const G4double bls1[28][10] = { 
1035   {0.005, 2.4111E-4, 2.5612E-4, 2.7202E-4, 3.    1067   {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.    1068   {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    1069   {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.    1070   {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    1071   {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    1072   {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    1073   {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    1074   {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    1075   {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    1076   {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    1077   {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    1078   {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    1079   {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    1080   {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    1081   {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    1082   {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    1083   {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    1084   {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    1085   {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    1086   {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    1087   {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    1088   {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    1089   {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    1090   {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    1091   {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    1092   {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    1093   {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    1094   {7.0, 6.8634, 6.9194, 6.9767, 7.0957, 7.2208, 7.3526, 7.4915, 7.5639, 7.6384}
1063   };                                             1095   };
1064                                                  1096  
1065   const G4double bls2[28][10] = {             << 1097   static const G4double bls2[28][10] = { 
1066   {0.005, 5.4561E-4, 6.0905E-4, 6.7863E-4, 7.    1098   {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.    1099   {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    1100   {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.    1101   {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    1102   {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    1103   {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    1104   {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    1105   {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    1106   {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    1107   {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    1108   {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    1109   {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    1110   {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    1111   {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    1112   {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    1113   {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    1114   {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    1115   {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    1116   {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    1117   {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    1118   {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    1119   {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    1120   {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    1121   {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    1122   {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    1123   {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    1124   {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    1125   {7.0, 7.7938, 7.9588, 8.1342, 8.3211, 8.4193, 8.5209, 8.7350, 8.9651, 9.2133}
1094   };                                             1126   }; 
1095                                                  1127  
1096   const G4double bls3[28][9] = {              << 1128   static const G4double bls3[28][9] = { 
1097   {0.005, 1.2895E-3, 1.3670E-3, 1.4524E-3, 1.    1129   {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.    1130   {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    1131   {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    1132   {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    1133   {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    1134   {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    1135   {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    1136   {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    1137   {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    1138   {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    1139   {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    1140   {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    1141   {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    1142   {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    1143   {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    1144   {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    1145   {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    1146   {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    1147   {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    1148   {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    1149   {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    1150   {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    1151   {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    1152   {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    1153   {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    1154   {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    1155   {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    1156   {7.0, 9.4819, 9.6248, 9.7739, 10.0926, 10.4423, 10.8282, 11.2565, 11.7356}
1125   };                                             1157   }; 
1126                                                  1158 
1127   const G4double bll1[28][10] = {             << 1159   static const G4double bll1[28][10] = { 
1128   {0.005, 3.6324E-5, 4.0609E-5, 4.5430E-5, 5.    1160   {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.    1161   {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    1162   {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.    1163   {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    1164   {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    1165   {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    1166   {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    1167   {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    1168   {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    1169   {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    1170   {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    1171   {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    1172   {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    1173   {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    1174   {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    1175   {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    1176   {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    1177   {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    1178   {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    1179   {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    1180   {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    1181   {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    1182   {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    1183   {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    1184   {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    1185   {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    1186   {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    1187   {7.0, 7.7362, 7.8079, 7.8821, 8.0383, 8.2061, 8.3866, 8.5816, 8.6850, 8.7927}
1156   };                                             1188   }; 
1157                                                  1189 
1158   const G4double bll2[28][10] = {             << 1190   static const G4double bll2[28][10] = { 
1159   {0.005, 1.8339E-4, 2.3330E-4, 2.9738E-4, 3.    1191   {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.    1192   {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    1193   {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.    1194   {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    1195   {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    1196   {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    1197   {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    1198   {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    1199   {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    1200   {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    1201   {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    1202   {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    1203   {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    1204   {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    1205   {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    1206   {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    1207   {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    1208   {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    1209   {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    1210   {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    1211   {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    1212   {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    1213   {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    1214   {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    1215   {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    1216   {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    1217   {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    1218   {7.0, 9.0221, 9.2724, 9.5464, 9.8477, 10.0099, 10.1805, 10.5499, 10.9622, 11.4250}
1187   };                                             1219   }; 
1188                                                  1220 
1189   const G4double bll3[28][9] = {              << 1221   static const G4double bll3[28][9] = { 
1190   {0.005, 1.3190E-3, 1.4961E-3, 1.6974E-3, 2.    1222   {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.    1223   {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    1224   {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.    1225   {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    1226   {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    1227   {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    1228   {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    1229   {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    1230   {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    1231   {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    1232   {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    1233   {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    1234   {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    1235   {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    1236   {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    1237   {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    1238   {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    1239   {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    1240   {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    1241   {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    1242   {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    1243   {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    1244   {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    1245   {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    1246   {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    1247   {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    1248   {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    1249   {7.0, 11.9480, 12.2357, 12.5432, 13.2260, 14.0164, 14.9404, 16.0330, 17.3420}
1218   };                                             1250   };
1219                                                  1251                              
1220   G4double b, bs;                                1252   G4double b, bs; 
1221   for(i=0; i<nEtaK; ++i) {                       1253   for(i=0; i<nEtaK; ++i) {
1222                                                  1254 
1223     G4double et = Eta[i];                        1255     G4double et = Eta[i];
1224     G4double loget = G4Log(et);                  1256     G4double loget = G4Log(et);
1225                                                  1257 
1226     for(j=0; j<nK; ++j) {                        1258     for(j=0; j<nK; ++j) {
1227                                                  1259 
1228       if(j < 10) { b = bk2[i][10-j]; }           1260       if(j < 10) { b = bk2[i][10-j]; }
1229       else       { b = bk1[i][20-j]; }           1261       else       { b = bk1[i][20-j]; }
1230                                                  1262 
1231       CK[j][i] = SK[j]*loget + TK[j] - b;        1263       CK[j][i] = SK[j]*loget + TK[j] - b;
1232                                                  1264 
1233       if(i == nEtaK-1) {                         1265       if(i == nEtaK-1) { 
1234         ZK[j] = et*(et*et*CK[j][i] - et*UK[j]    1266         ZK[j] = et*(et*et*CK[j][i] - et*UK[j] - VK[j]); 
1235         //G4cout << "i= " << i << " j= " << j    1267         //G4cout << "i= " << i << " j= " << j 
1236         //       << " CK[j][i]= " <<  CK[j][i    1268         //       << " CK[j][i]= " <<  CK[j][i]
1237         //       << " ZK[j]= " << ZK[j] << "     1269         //       << " ZK[j]= " << ZK[j] << "  b= " << b << G4endl;  
1238       }                                          1270       } 
1239     }                                            1271     }
1240     //G4cout << G4endl;                          1272     //G4cout << G4endl;
1241     if(i < nEtaL) {                              1273     if(i < nEtaL) {
1242       //G4cout << "  LShell:" <<G4endl;          1274       //G4cout << "  LShell:" <<G4endl;
1243       for(j=0; j<nL; ++j) {                      1275       for(j=0; j<nL; ++j) {
1244                                                  1276 
1245         if(j < 8) {                              1277         if(j < 8) {
1246           bs = bls3[i][8-j];                     1278           bs = bls3[i][8-j];
1247           b  = bll3[i][8-j];                     1279           b  = bll3[i][8-j];
1248         } else if(j < 17) {                      1280         } else if(j < 17) {
1249           bs = bls2[i][17-j];                    1281           bs = bls2[i][17-j];
1250           b  = bll2[i][17-j];                    1282           b  = bll2[i][17-j];
1251         } else {                                 1283         } else {
1252           bs = bls1[i][26-j];                    1284           bs = bls1[i][26-j];
1253           b  = bll1[i][26-j];                    1285           b  = bll1[i][26-j];
1254         }                                        1286         }
1255         G4double c = SL[j]*loget + TL[j];        1287         G4double c = SL[j]*loget + TL[j]; 
1256         CL[j][i] = c - bs - 3.0*b;               1288         CL[j][i] = c - bs - 3.0*b;
1257         if(i == nEtaL-1) {                       1289         if(i == nEtaL-1) { 
1258           VL[j] = et*(et*CL[j][i] - UL[j]);      1290           VL[j] = et*(et*CL[j][i] - UL[j]); 
1259           //G4cout << "i= " << i << " j= " <<    1291           //G4cout << "i= " << i << " j= " << j 
1260           //         << " CL[j][i]= " <<  CL[    1292           //         << " CL[j][i]= " <<  CL[j][i]
1261           //         << " VL[j]= " << VL[j] <    1293           //         << " VL[j]= " << VL[j] << " b= " << b << " bs= " << bs 
1262           //         << " et= " << et << G4en    1294           //         << " et= " << et << G4endl; 
1263           //" UL= " << UL[j] << " TL= " << TL    1295           //" UL= " << UL[j] << " TL= " << TL[j] << " SL= " << SL[j] <<G4endl;  
1264         }                                        1296         }
1265       }                                          1297       }
1266       //G4cout << G4endl;                        1298       //G4cout << G4endl;
1267     }                                            1299     }
1268   }                                              1300   }
1269                                                  1301 
1270   const G4double xzk[34] = { 11.7711,         << 1302   static const G4double xzk[34] = { 11.7711,
1271     13.3669, 15.5762, 17.1715, 18.7667, 20.85    1303     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    1304     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    1305     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    1306                              93.4549, 96.2753, 99.709};
1275   const G4double yzk[34] = { 0.70663,         << 1307   static const G4double yzk[34] = { 0.70663,
1276     0.72033, 0.73651, 0.74647, 0.75518, 0.763    1308     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    1309     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    1310     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    1311                              0.86891, 0.87011, 0.87381};
1280                                                  1312 
1281   const G4double xzl[36] = { 15.5102,         << 1313   static const G4double xzl[36] = { 15.5102,
1282     16.7347, 17.9592, 19.551, 21.0204, 22.612    1314     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    1315     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    1316     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,    1317                              91.551, 94.2449, 96.449, 98.4082, 99.7551};
1286   const G4double yzl[36] = { 0.29875,         << 1318   static const G4double yzl[36] = { 0.29875,
1287     0.31746, 0.33368, 0.35239, 0.36985, 0.387    1319     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    1320     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    1321     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    1322                               0.6368, 0.64054, 0.64304, 0.64428, 0.64678};
1291                                                  1323 
1292   sThetaK = new G4PhysicsFreeVector(34, false    1324   sThetaK = new G4PhysicsFreeVector(34, false);
1293   for(i=0; i<34; ++i) { sThetaK->PutValues(i,    1325   for(i=0; i<34; ++i) { sThetaK->PutValues(i, xzk[i], yzk[i]); }
1294   sThetaL = new G4PhysicsFreeVector(36, false    1326   sThetaL = new G4PhysicsFreeVector(36, false);
1295   for(i=0; i<36; ++i) { sThetaL->PutValues(i,    1327   for(i=0; i<36; ++i) { sThetaL->PutValues(i, xzl[i], yzl[i]); }
1296 }                                                1328 }
1297                                                  1329 
1298 //....oooOO0OOooo........oooOO0OOooo........o    1330 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
1299                                                  1331 
1300                                                  1332