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 10.3.p2)


  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 // $Id: G4EmCorrections.cc 100363 2016-10-19 09:24:47Z gcosmo $
 26 //                                                 27 //
 27 // -------------------------------------------     28 // -------------------------------------------------------------------
 28 //                                                 29 //
 29 // GEANT4 Class                                    30 // GEANT4 Class 
 30 //                                                 31 //
 31 // File name:     G4EmCorrections                  32 // File name:     G4EmCorrections
 32 //                                                 33 //
 33 // Author:        Vladimir Ivanchenko              34 // Author:        Vladimir Ivanchenko
 34 //                                                 35 //
 35 // Creation date: 13.01.2005                       36 // Creation date: 13.01.2005
 36 //                                                 37 //
 37 // Modifications:                                  38 // Modifications:
 38 // 05.05.2005 V.Ivanchenko Fix misprint in Mot     39 // 05.05.2005 V.Ivanchenko Fix misprint in Mott term
 39 // 26.11.2005 V.Ivanchenko Fix effective charg     40 // 26.11.2005 V.Ivanchenko Fix effective charge for heavy ions using original paper
 40 // 28.04.2006 V.Ivanchenko General cleanup, ad     41 // 28.04.2006 V.Ivanchenko General cleanup, add finite size corrections
 41 // 13.05.2006 V.Ivanchenko Add corrections for     42 // 13.05.2006 V.Ivanchenko Add corrections for ion stopping
 42 // 08.05.2007 V.Ivanchenko Use G4IonTable for      43 // 08.05.2007 V.Ivanchenko Use G4IonTable for ion mass instead of NistTable to avoid
 43 //                         division by zero        44 //                         division by zero
 44 // 29.02.2008 V.Ivanchenko use expantions for      45 // 29.02.2008 V.Ivanchenko use expantions for log and power function
 45 // 21.04.2008 Updated computations for ions (V     46 // 21.04.2008 Updated computations for ions (V.Ivanchenko)
 46 // 20.05.2008 Removed Finite Size correction (     47 // 20.05.2008 Removed Finite Size correction (V.Ivanchenko)
 47 // 19.04.2012 Fix reproducibility problem (A.R     48 // 19.04.2012 Fix reproducibility problem (A.Ribon)
 48 //                                                 49 //
 49 //                                                 50 //
 50 // Class Description:                              51 // Class Description:
 51 //                                                 52 //
 52 // This class provides calculation of EM corre     53 // This class provides calculation of EM corrections to ionisation
 53 //                                                 54 //
 54                                                    55 
 55 // -------------------------------------------     56 // -------------------------------------------------------------------
 56 //                                                 57 //
 57                                                    58 
 58 #include "G4EmCorrections.hh"                      59 #include "G4EmCorrections.hh"
                                                   >>  60 #include "Randomize.hh"
 59 #include "G4PhysicalConstants.hh"                  61 #include "G4PhysicalConstants.hh"
 60 #include "G4SystemOfUnits.hh"                      62 #include "G4SystemOfUnits.hh"
 61 #include "G4ParticleTable.hh"                      63 #include "G4ParticleTable.hh"
 62 #include "G4IonTable.hh"                           64 #include "G4IonTable.hh"
 63 #include "G4VEmModel.hh"                           65 #include "G4VEmModel.hh"
 64 #include "G4Proton.hh"                             66 #include "G4Proton.hh"
 65 #include "G4GenericIon.hh"                         67 #include "G4GenericIon.hh"
                                                   >>  68 #include "G4LPhysicsFreeVector.hh"
 66 #include "G4PhysicsLogVector.hh"                   69 #include "G4PhysicsLogVector.hh"
 67 #include "G4ProductionCutsTable.hh"                70 #include "G4ProductionCutsTable.hh"
 68 #include "G4MaterialCutsCouple.hh"                 71 #include "G4MaterialCutsCouple.hh"
 69 #include "G4AtomicShells.hh"                       72 #include "G4AtomicShells.hh"
                                                   >>  73 #include "G4LPhysicsFreeVector.hh"
 70 #include "G4Log.hh"                                74 #include "G4Log.hh"
 71 #include "G4Exp.hh"                                75 #include "G4Exp.hh"
 72 #include "G4Pow.hh"                                76 #include "G4Pow.hh"
                                                   >>  77 #include "G4Threading.hh"
 73                                                    78 
 74 //....oooOO0OOooo........oooOO0OOooo........oo     79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 75                                                    80 
 76 namespace                                      <<  81 const G4double G4EmCorrections::inveplus = 1.0/CLHEP::eplus;
 77 {                                              << 
 78   constexpr G4double inveplus = 1.0/CLHEP::epl << 
 79   constexpr G4double alpha2 = CLHEP::fine_stru << 
 80 }                                              << 
 81 const G4double G4EmCorrections::ZD[11] =           82 const G4double G4EmCorrections::ZD[11] = 
 82     {0., 0., 0., 1.72, 2.09, 2.48, 2.82, 3.16,     83     {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     84 const G4double G4EmCorrections::UK[20] = {1.9999, 2.0134, 2.0258, 2.0478, 2.0662,
 84                            2.0817, 2.0945, 2.0     85                            2.0817, 2.0945, 2.0999, 2.1049, 2.1132,
 85                            2.1197, 2.1246, 2.1     86                            2.1197, 2.1246, 2.1280, 2.1292, 2.1301,
 86                            2.1310, 2.1310, 2.1     87                            2.1310, 2.1310, 2.1300, 2.1283, 2.1271};
 87 const G4double G4EmCorrections::VK[20] = {8.34     88 const G4double G4EmCorrections::VK[20] = {8.3410, 8.3373, 8.3340, 8.3287, 8.3247,
 88                            8.3219, 8.3201, 8.3     89                            8.3219, 8.3201, 8.3194, 8.3191, 8.3188,
 89                            8.3191, 8.3199, 8.3     90                            8.3191, 8.3199, 8.3211, 8.3218, 8.3226,
 90                            8.3244, 8.3264, 8.3     91                            8.3244, 8.3264, 8.3285, 8.3308, 8.3320};
 91 G4double G4EmCorrections::ZK[] = {0.0};            92 G4double G4EmCorrections::ZK[] = {0.0};
 92 const G4double G4EmCorrections::Eta[29] = {0.0     93 const G4double G4EmCorrections::Eta[29] = {0.005, 0.007, 0.01, 0.015, 0.02,
 93                             0.03,  0.04,  0.05     94                             0.03,  0.04,  0.05, 0.06,  0.08,
 94                             0.1,   0.15,  0.2,     95                             0.1,   0.15,  0.2,  0.3,   0.4,
 95                             0.5,   0.6,   0.7,     96                             0.5,   0.6,   0.7,  0.8,   1.0,
 96                             1.2,   1.4,   1.5,     97                             1.2,   1.4,   1.5,  1.7,   2.0, 3.0, 5.0, 7.0, 10.};
 97 G4double G4EmCorrections::CK[20][29];              98 G4double G4EmCorrections::CK[20][29];
 98 G4double G4EmCorrections::CL[26][28];              99 G4double G4EmCorrections::CL[26][28];
 99 const G4double G4EmCorrections::UL[] = {0.1215    100 const G4double G4EmCorrections::UL[] = {0.1215, 0.5265, 0.8411, 1.0878, 1.2828,
100                            1.4379, 1.5032, 1.5    101                            1.4379, 1.5032, 1.5617, 1.6608, 1.7401,
101                            1.8036, 1.8543, 1.8    102                            1.8036, 1.8543, 1.8756, 1.8945, 1.9262,
102                            1.9508, 1.9696, 1.9    103                            1.9508, 1.9696, 1.9836, 1.9890, 1.9935,
103                            2.0001, 2.0039, 2.0    104                            2.0001, 2.0039, 2.0053, 2.0049, 2.0040, 2.0028};  
104 G4double G4EmCorrections::VL[] = {0.0};           105 G4double G4EmCorrections::VL[] = {0.0};
105 G4double G4EmCorrections::sWmaxBarkas = 10.0;  << 
106                                                   106 
107 G4PhysicsFreeVector* G4EmCorrections::sBarkasC << 107 G4LPhysicsFreeVector* G4EmCorrections::BarkasCorr = nullptr;
108 G4PhysicsFreeVector* G4EmCorrections::sThetaK  << 108 G4LPhysicsFreeVector* G4EmCorrections::ThetaK = nullptr;
109 G4PhysicsFreeVector* G4EmCorrections::sThetaL  << 109 G4LPhysicsFreeVector* G4EmCorrections::ThetaL = nullptr;
110                                                   110 
111 G4EmCorrections::G4EmCorrections(G4int verb)      111 G4EmCorrections::G4EmCorrections(G4int verb)
112   : verbose(verb)                              << 
113 {                                                 112 {
114   eth = 2.0*CLHEP::MeV;                        << 113   particle   = nullptr;
115   eCorrMin = 25.*CLHEP::keV;                   << 114   curParticle= nullptr;
116   eCorrMax = 1.*CLHEP::GeV;                    << 115   material   = nullptr;
                                                   >> 116   curMaterial= nullptr;
                                                   >> 117   theElementVector = nullptr;
                                                   >> 118   atomDensity= nullptr;
                                                   >> 119   curVector  = nullptr;
                                                   >> 120   ionLEModel = nullptr;
                                                   >> 121   ionHEModel = nullptr;
                                                   >> 122 
                                                   >> 123   kinEnergy  = 0.0;
                                                   >> 124   verbose    = verb;
                                                   >> 125   massFactor = 1.0;
                                                   >> 126   eth        = 2.0*CLHEP::MeV;
                                                   >> 127   nbinCorr   = 20;
                                                   >> 128   eCorrMin   = 25.*CLHEP::keV;
                                                   >> 129   eCorrMax   = 250.*CLHEP::MeV;
117                                                   130 
118   ionTable = G4ParticleTable::GetParticleTable    131   ionTable = G4ParticleTable::GetParticleTable()->GetIonTable();
119   g4calc = G4Pow::GetInstance();                  132   g4calc = G4Pow::GetInstance();
120                                                   133 
                                                   >> 134   nIons = ncouples = numberOfElements = idx = currentZ = 0;
                                                   >> 135   mass = tau = gamma = bg2 = beta2 = beta = ba2 = tmax = charge = q2 = 0.0;
                                                   >> 136 
                                                   >> 137   // Constants
                                                   >> 138   theZieglerFactor = CLHEP::eV*CLHEP::cm2*1.0e-15; 
                                                   >> 139   alpha2           = CLHEP::fine_structure_const*CLHEP::fine_structure_const;
                                                   >> 140   lossFlucFlag     = true;
                                                   >> 141 
                                                   >> 142   // G.S. Khandelwal Nucl. Phys. A116(1968)97 - 111.
                                                   >> 143   // "Shell corrections for K- and L- electrons
                                                   >> 144 
                                                   >> 145   nK = 20;
                                                   >> 146   nL = 26;
                                                   >> 147   nEtaK = 29;
                                                   >> 148   nEtaL = 28;
                                                   >> 149 
                                                   >> 150   isMaster = false;
                                                   >> 151 
121   // fill vectors                                 152   // fill vectors
122   if (nullptr == sBarkasCorr) {                << 153   if(BarkasCorr == nullptr) { Initialise(); }
123     Initialise();                              << 
124     isInitializer = true;                      << 
125   }                                            << 
126 }                                                 154 }
127                                                   155 
128 //....oooOO0OOooo........oooOO0OOooo........oo    156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
129                                                   157 
130 G4EmCorrections::~G4EmCorrections()               158 G4EmCorrections::~G4EmCorrections()
131 {                                                 159 {
132   for (G4int i=0; i<nIons; ++i) { delete stopD << 160   for(G4int i=0; i<nIons; ++i) {delete stopData[i];}
133   if (isInitializer) {                         << 161   if(isMaster) { 
134     delete sBarkasCorr;                        << 162     delete BarkasCorr;
135     delete sThetaK;                            << 163     delete ThetaK;
136     delete sThetaL;                            << 164     delete ThetaL;
137     sBarkasCorr = sThetaK = sThetaL = nullptr; << 165     BarkasCorr = ThetaK = ThetaL = nullptr;
138   }                                            << 
139 }                                              << 
140                                                << 
141 void G4EmCorrections::SetupKinematics(const G4 << 
142               const G4Material* mat,           << 
143               const G4double kineticEnergy)    << 
144 {                                              << 
145   if(kineticEnergy != kinEnergy || p != partic << 
146     particle = p;                              << 
147     kinEnergy = kineticEnergy;                 << 
148     mass  = p->GetPDGMass();                   << 
149     tau   = kineticEnergy / mass;              << 
150     gamma = 1.0 + tau;                         << 
151     bg2   = tau * (tau+2.0);                   << 
152     beta2 = bg2/(gamma*gamma);                 << 
153     beta  = std::sqrt(beta2);                  << 
154     ba2   = beta2/alpha2;                      << 
155     const G4double ratio = CLHEP::electron_mas << 
156     tmax  = 2.0*CLHEP::electron_mass_c2*bg2    << 
157       /(1. + 2.0*gamma*ratio + ratio*ratio);   << 
158     charge  = p->GetPDGCharge()*inveplus;      << 
159     if(charge > 1.5) { charge = effCharge.Effe << 
160     q2 = charge*charge;                        << 
161   }                                            << 
162   if(mat != material) {                        << 
163     material = mat;                            << 
164     theElementVector = material->GetElementVec << 
165     atomDensity  = material->GetAtomicNumDensi << 
166     numberOfElements = (G4int)material->GetNum << 
167   }                                               166   }
168 }                                                 167 }
169                                                   168 
170 //....oooOO0OOooo........oooOO0OOooo........oo    169 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
171                                                   170 
172 G4double G4EmCorrections::HighOrderCorrections    171 G4double G4EmCorrections::HighOrderCorrections(const G4ParticleDefinition* p,
173                                                   172                                                const G4Material* mat,
174                                                << 173                                                G4double e, G4double)
175 {                                                 174 {
176   // . Z^3 Barkas effect in the stopping power    175   // . Z^3 Barkas effect in the stopping power of matter for charged particles
177   //   J.C Ashley and R.H.Ritchie                 176   //   J.C Ashley and R.H.Ritchie
178   //   Physical review B Vol.5 No.7 1 April 19    177   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
179   //   and ICRU49 report                          178   //   and ICRU49 report
180   //   valid for kineticEnergy < 0.5 MeV          179   //   valid for kineticEnergy < 0.5 MeV
181   //   Other corrections from S.P.Ahlen Rev. M    180   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
182                                                   181 
183   SetupKinematics(p, mat, e);                     182   SetupKinematics(p, mat, e);
184   if(tau <= 0.0) { return 0.0; }                  183   if(tau <= 0.0) { return 0.0; }
185                                                   184 
186   const G4double Barkas = BarkasCorrection(p,  << 185   G4double Barkas = BarkasCorrection (p, mat, e);
187   const G4double Bloch  = BlochCorrection(p, m << 186   G4double Bloch  = BlochCorrection (p, mat, e);
188   const G4double Mott = MottCorrection(p, mat, << 187   G4double Mott   = MottCorrection (p, mat, e);
189                                                   188 
190   G4double sum = 2.0*(Barkas + Bloch) + Mott;  << 189   G4double sum = (2.0*(Barkas + Bloch) + Mott);
191                                                   190 
192   if(verbose > 1) {                               191   if(verbose > 1) {
193     G4cout << "EmCorrections: E(MeV)= " << e/M    192     G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
194            << " Bloch= " << Bloch << " Mott= "    193            << " Bloch= " << Bloch << " Mott= " << Mott 
195            << " Sum= " << sum << " q2= " << q2    194            << " Sum= " << sum << " q2= " << q2 << G4endl; 
196     G4cout << " ShellCorrection: " << ShellCor    195     G4cout << " ShellCorrection: " << ShellCorrection(p, mat, e) 
197            << " Kshell= " << KShellCorrection(    196            << " Kshell= " << KShellCorrection(p, mat, e)
198            << " Lshell= " << LShellCorrection(    197            << " Lshell= " << LShellCorrection(p, mat, e)
199            << "   " << mat->GetName() << G4end    198            << "   " << mat->GetName() << G4endl;
200   }                                               199   }
201   sum *= material->GetElectronDensity()*q2*CLH << 200   sum *= material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
202   return sum;                                     201   return sum;
203 }                                                 202 }
204                                                   203 
205 //....oooOO0OOooo........oooOO0OOooo........oo    204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
206                                                   205 
207 G4double G4EmCorrections::IonBarkasCorrection(    206 G4double G4EmCorrections::IonBarkasCorrection(const G4ParticleDefinition* p,
208                                                   207                                               const G4Material* mat,
209                                                << 208                                               G4double e)
210 {                                                 209 {
                                                   >> 210   // . Z^3 Barkas effect in the stopping power of matter for charged particles
                                                   >> 211   //   J.C Ashley and R.H.Ritchie
                                                   >> 212   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
                                                   >> 213   //   and ICRU49 report
                                                   >> 214   //   valid for kineticEnergy < 0.5 MeV
                                                   >> 215 
211   SetupKinematics(p, mat, e);                     216   SetupKinematics(p, mat, e);
212   return 2.0*BarkasCorrection(p, mat, e, true) << 217   G4double res = 0.0;
213     material->GetElectronDensity() * q2 * CLHE << 218   if(tau > 0.0) 
                                                   >> 219     res = 2.0*BarkasCorrection(p, mat, e)*
                                                   >> 220       material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
                                                   >> 221   return res;
214 }                                                 222 }
215                                                   223 
216 //....oooOO0OOooo........oooOO0OOooo........oo    224 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
217                                                   225 
218 G4double G4EmCorrections::ComputeIonCorrection    226 G4double G4EmCorrections::ComputeIonCorrections(const G4ParticleDefinition* p,
219                                                   227                                                 const G4Material* mat,
220                                                << 228                                                 G4double e)
221 {                                                 229 {
222   // . Z^3 Barkas effect in the stopping power    230   // . Z^3 Barkas effect in the stopping power of matter for charged particles
223   //   J.C Ashley and R.H.Ritchie                 231   //   J.C Ashley and R.H.Ritchie
224   //   Physical review B Vol.5 No.7 1 April 19    232   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
225   //   and ICRU49 report                          233   //   and ICRU49 report
226   //   valid for kineticEnergy < 0.5 MeV          234   //   valid for kineticEnergy < 0.5 MeV
227   //   Other corrections from S.P.Ahlen Rev. M    235   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
228   SetupKinematics(p, mat, e);                     236   SetupKinematics(p, mat, e);
229   if(tau <= 0.0) { return 0.0; }                  237   if(tau <= 0.0) { return 0.0; }
230                                                   238 
231   const G4double Barkas = BarkasCorrection (p, << 239   G4double Barkas = BarkasCorrection (p, mat, e);
232   const G4double Bloch  = BlochCorrection (p,  << 240   G4double Bloch  = BlochCorrection (p, mat, e);
233   const G4double Mott = MottCorrection (p, mat << 241   G4double Mott   = MottCorrection (p, mat, e);
234                                                   242 
235   G4double sum = 2.0*(Barkas*(charge - 1.0)/ch    243   G4double sum = 2.0*(Barkas*(charge - 1.0)/charge + Bloch) + Mott;
236                                                   244 
237   if(verbose > 1) {                               245   if(verbose > 1) {
238     G4cout << "EmCorrections: E(MeV)= " << e/M    246     G4cout << "EmCorrections: E(MeV)= " << e/MeV << " Barkas= " << Barkas
239            << " Bloch= " << Bloch << " Mott= "    247            << " Bloch= " << Bloch << " Mott= " << Mott 
240            << " Sum= " << sum << G4endl;          248            << " Sum= " << sum << G4endl; 
241   }                                               249   }
242   sum *= material->GetElectronDensity() * q2 * << 250   sum *= material->GetElectronDensity() * q2 *  twopi_mc2_rcl2 /beta2;
243                                                   251 
244   if(verbose > 1) { G4cout << " Sum= " << sum     252   if(verbose > 1) { G4cout << " Sum= " << sum << G4endl; } 
245   return sum;                                     253   return sum;
246 }                                                 254 }
247                                                   255 
248 //....oooOO0OOooo........oooOO0OOooo........oo    256 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
249                                                   257 
250 G4double G4EmCorrections::IonHighOrderCorrecti    258 G4double G4EmCorrections::IonHighOrderCorrections(const G4ParticleDefinition* p,
251                                                   259                                                   const G4MaterialCutsCouple* couple,
252                                                << 260                                                   G4double e)
253 {                                                 261 {
254   // . Z^3 Barkas effect in the stopping power    262   // . Z^3 Barkas effect in the stopping power of matter for charged particles
255   //   J.C Ashley and R.H.Ritchie                 263   //   J.C Ashley and R.H.Ritchie
256   //   Physical review B Vol.5 No.7 1 April 19    264   //   Physical review B Vol.5 No.7 1 April 1972 pagg. 2393-2397
257   //   and ICRU49 report                          265   //   and ICRU49 report
258   //   valid for kineticEnergy < 0.5 MeV          266   //   valid for kineticEnergy < 0.5 MeV
259   //   Other corrections from S.P.Ahlen Rev. M    267   //   Other corrections from S.P.Ahlen Rev. Mod. Phys., Vol 52, No1, 1980
260                                                   268 
261   G4double sum = 0.0;                             269   G4double sum = 0.0;
262                                                   270 
263   if (nullptr != ionHEModel) {                 << 271   if(ionHEModel) {
264     G4int Z = G4lrint(p->GetPDGCharge()*invepl    272     G4int Z = G4lrint(p->GetPDGCharge()*inveplus);
265     Z = std::max(std::min(Z, 99), 1);          << 273     if(Z >= 100)   Z = 99;
                                                   >> 274     else if(Z < 1) Z = 1;
266                                                   275 
267     const G4double ethscaled = eth*p->GetPDGMa << 276     G4double ethscaled = eth*p->GetPDGMass()/proton_mass_c2;
268     const G4int ionPDG = p->GetPDGEncoding();  << 277     G4int ionPDG = p->GetPDGEncoding();
269     auto iter = thcorr.find(ionPDG);           << 278     if(thcorr.find(ionPDG)==thcorr.end()) {  // Not found: fill the map
270     if (iter == thcorr.end()) {  // Not found: << 
271       std::vector<G4double> v;                    279       std::vector<G4double> v;
272       for(std::size_t i=0; i<ncouples; ++i){   << 280       for(size_t i=0; i<ncouples; ++i){
273         v.push_back(ethscaled*ComputeIonCorrec    281         v.push_back(ethscaled*ComputeIonCorrections(p,currmat[i],ethscaled));
274       }                                           282       }
275       thcorr.insert(std::pair< G4int, std::vec    283       thcorr.insert(std::pair< G4int, std::vector<G4double> >(ionPDG,v)); 
276     }                                             284     }
277     G4double rest = 0.0;                       << 285 
278     iter = thcorr.find(ionPDG);                << 286     //G4cout << " map size=" << thcorr.size() << G4endl;
279     if (iter != thcorr.end()) { rest = (iter-> << 287     //for(std::map< G4int, std::vector<G4double> >::iterator 
                                                   >> 288     //    it = thcorr.begin(); it != thcorr.end(); ++it){
                                                   >> 289     //  G4cout << "\t map element: first (key)=" << it->first  
                                                   >> 290     //     << "\t second (vector): vec size=" << (it->second).size() << G4endl;
                                                   >> 291     //  for(size_t i=0; i<(it->second).size(); ++i){
                                                   >> 292     // G4cout << "\t \t vec element: [" << i << "]=" << (it->second)[i]
                                                   >> 293     //<< G4endl; } }
                                                   >> 294 
                                                   >> 295     G4double rest = (thcorr.find(ionPDG)->second)[couple->GetIndex()];
280                                                   296 
281     sum = ComputeIonCorrections(p,couple->GetM    297     sum = ComputeIonCorrections(p,couple->GetMaterial(),e) - rest/e;
282                                                   298 
283     if(verbose > 1) {                             299     if(verbose > 1) { 
284       G4cout << " Sum= " << sum << " dSum= " <    300       G4cout << " Sum= " << sum << " dSum= " << rest/e << G4endl; 
285     }                                             301     } 
286   }                                               302   }
287   return sum;                                     303   return sum;
288 }                                                 304 }
289                                                   305 
290 //....oooOO0OOooo........oooOO0OOooo........oo    306 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
291                                                   307 
292 G4double G4EmCorrections::Bethe(const G4Partic    308 G4double G4EmCorrections::Bethe(const G4ParticleDefinition* p,
293                                 const G4Materi    309                                 const G4Material* mat, 
294                                 const G4double << 310                                 G4double e)
295 {                                                 311 {
296   SetupKinematics(p, mat, e);                     312   SetupKinematics(p, mat, e);
297   const G4double eexc  = material->GetIonisati << 313   G4double eexc  = material->GetIonisation()->GetMeanExcitationEnergy();
298   const G4double eexc2 = eexc*eexc;            << 314   G4double eexc2 = eexc*eexc;
299   return 0.5*G4Log(2.0*electron_mass_c2*bg2*tm << 315   G4double dedx = 0.5*G4Log(2.0*electron_mass_c2*bg2*tmax/eexc2)-beta2;
                                                   >> 316   return dedx;
300 }                                                 317 }
301                                                   318 
302 //....oooOO0OOooo........oooOO0OOooo........oo    319 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
303                                                   320 
304 G4double G4EmCorrections::SpinCorrection(const    321 G4double G4EmCorrections::SpinCorrection(const G4ParticleDefinition* p,
305                                          const    322                                          const G4Material* mat,
306                                          const << 323                                          G4double e)
307 {                                                 324 {
308   SetupKinematics(p, mat, e);                     325   SetupKinematics(p, mat, e);
309   const G4double dedx  = 0.5*tmax/(kinEnergy + << 326   G4double dedx  = 0.5*tmax/(kinEnergy + mass);
310   return 0.5*dedx*dedx;                           327   return 0.5*dedx*dedx;
311 }                                                 328 }
312                                                   329 
313 //....oooOO0OOooo........oooOO0OOooo........oo    330 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
314                                                   331 
315 G4double G4EmCorrections:: KShellCorrection(co    332 G4double G4EmCorrections:: KShellCorrection(const G4ParticleDefinition* p,
316                                             co    333                                             const G4Material* mat, 
317                                             co << 334                                             G4double e)
318 {                                                 335 {
319   SetupKinematics(p, mat, e);                     336   SetupKinematics(p, mat, e);
320   G4double term = 0.0;                            337   G4double term = 0.0;
321   for (G4int i = 0; i<numberOfElements; ++i) {    338   for (G4int i = 0; i<numberOfElements; ++i) {
322                                                   339 
323     G4double Z = (*theElementVector)[i]->GetZ(    340     G4double Z = (*theElementVector)[i]->GetZ();
324     G4int   iz = (*theElementVector)[i]->GetZa << 341     G4int   iz = G4lrint(Z);
325     G4double f = 1.0;                             342     G4double f = 1.0;
326     G4double Z2= (Z-0.3)*(Z-0.3);                 343     G4double Z2= (Z-0.3)*(Z-0.3);
327     if(1 == iz) {                                 344     if(1 == iz) {
328       f  = 0.5;                                   345       f  = 0.5;
329       Z2 = 1.0;                                   346       Z2 = 1.0;
330     }                                             347     }
331     const G4double eta = ba2/Z2;               << 348     G4double eta = ba2/Z2;
332     const G4double tet = (11 < iz) ? sThetaK-> << 349     G4double tet = Z2*(1. + Z2*0.25*alpha2);
                                                   >> 350     if(11 < iz) { tet = ThetaK->Value(Z); }
333     term += f*atomDensity[i]*KShell(tet,eta)/Z    351     term += f*atomDensity[i]*KShell(tet,eta)/Z;
334   }                                               352   }
335                                                   353 
336   term /= material->GetTotNbOfAtomsPerVolume()    354   term /= material->GetTotNbOfAtomsPerVolume();
337                                                   355 
338   return term;                                    356   return term;
339 }                                                 357 }
340                                                   358 
341 //....oooOO0OOooo........oooOO0OOooo........oo    359 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
342                                                   360 
343 G4double G4EmCorrections:: LShellCorrection(co    361 G4double G4EmCorrections:: LShellCorrection(const G4ParticleDefinition* p,
344                                             co    362                                             const G4Material* mat, 
345                                             co << 363                                             G4double e)
346 {                                                 364 {
347   SetupKinematics(p, mat, e);                     365   SetupKinematics(p, mat, e);
348   G4double term = 0.0;                            366   G4double term = 0.0;
349   for (G4int i = 0; i<numberOfElements; ++i) {    367   for (G4int i = 0; i<numberOfElements; ++i) {
350                                                   368 
351     const G4double Z = (*theElementVector)[i]- << 369     G4double Z = (*theElementVector)[i]->GetZ();
352     const G4int iz = (*theElementVector)[i]->G << 370     G4int   iz = G4lrint(Z);
353     if(2 < iz) {                                  371     if(2 < iz) {
354       const G4double Zeff = (iz < 10) ? Z - ZD << 372       G4double Zeff = Z - ZD[10];
355       const G4double Z2= Zeff*Zeff;            << 373       if(iz < 10) { Zeff = Z - ZD[iz]; }
356       const G4double eta = ba2/Z2;             << 374       G4double Z2= Zeff*Zeff;
357       G4double tet = sThetaL->Value(Z);        << 375       G4double f = 0.125;
358       G4int nmax = std::min(4, G4AtomicShells: << 376       G4double eta = ba2/Z2;
359       for (G4int j=1; j<nmax; ++j) {           << 377       G4double tet = ThetaL->Value(Z);
                                                   >> 378       G4int nmax = std::min(4,G4AtomicShells::GetNumberOfShells(iz));
                                                   >> 379       for(G4int j=1; j<nmax; ++j) {
360         G4int ne = G4AtomicShells::GetNumberOf    380         G4int ne = G4AtomicShells::GetNumberOfElectrons(iz,j);
361         if (15 >= iz) {                        << 381         if(15 >= iz) {
362           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2* << 382           if(3 > j) { tet = 0.25*Z2*(1.0 + 5*Z2*alpha2/16.); }
363             0.25*Z2*(1.0 + Z2*alpha2/16.);     << 383           else      { tet = 0.25*Z2*(1.0 + Z2*alpha2/16.); }
364         }                                         384         }
365         //G4cout << " LShell: j= " << j << " n    385         //G4cout << " LShell: j= " << j << " ne= " << ne << " e(eV)= " << e/eV
366         //       << " ThetaL= " << tet << G4en    386         //       << " ThetaL= " << tet << G4endl;
367         term += 0.125*ne*atomDensity[i]*LShell << 387         term += f*ne*atomDensity[i]*LShell(tet,eta)/Z;
368       }                                           388       }
369     }                                             389     }
370   }                                               390   }
371                                                   391 
372   term /= material->GetTotNbOfAtomsPerVolume()    392   term /= material->GetTotNbOfAtomsPerVolume();
373                                                   393 
374   return term;                                    394   return term;
375 }                                                 395 }
376                                                   396 
377 //....oooOO0OOooo........oooOO0OOooo........oo    397 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
378                                                   398 
379 G4double G4EmCorrections::KShell(const G4doubl << 399 G4double G4EmCorrections::KShell(G4double tet, G4double eta)
380 {                                                 400 {
381   G4double corr = 0.0;                            401   G4double corr = 0.0;
382                                                   402 
383   static const G4double TheK[20] =                403   static const G4double TheK[20] = 
384     {0.64, 0.65, 0.66, 0.68, 0.70, 0.72, 0.74,    404     {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,    405      0.80, 0.82, 0.84, 0.85, 0.86, 0.88, 0.90, 0.92, 0.94, 0.95};
386                                                   406 
387                                                   407 
388   G4double x = tet;                               408   G4double x = tet;
389   G4int itet = 0;                                 409   G4int itet = 0;
390   G4int ieta = 0;                                 410   G4int ieta = 0;
391   if(tet < TheK[0]) {                             411   if(tet < TheK[0]) { 
392     x =  TheK[0];                                 412     x =  TheK[0]; 
393   } else if(tet > TheK[nK-1]) {                   413   } else if(tet > TheK[nK-1]) { 
394     x =  TheK[nK-1];                              414     x =  TheK[nK-1];
395     itet = nK-2;                                  415     itet = nK-2; 
396   } else {                                        416   } else { 
397     itet = Index(x, TheK, nK);                    417     itet = Index(x, TheK, nK);
398   }                                               418   }
399   // asymptotic case                           << 419   // assimptotic case
400   if(eta >= Eta[nEtaK-1]) {                       420   if(eta >= Eta[nEtaK-1]) {
401     corr =                                        421     corr = 
402       (Value(x, TheK[itet], TheK[itet+1], UK[i    422       (Value(x, TheK[itet], TheK[itet+1], UK[itet], UK[itet+1]) + 
403        Value(x, TheK[itet], TheK[itet+1], VK[i    423        Value(x, TheK[itet], TheK[itet+1], VK[itet], VK[itet+1])/eta +
404        Value(x, TheK[itet], TheK[itet+1], ZK[i    424        Value(x, TheK[itet], TheK[itet+1], ZK[itet], ZK[itet+1])/(eta*eta))/eta;
405   } else {                                        425   } else {
406     G4double y = eta;                             426     G4double y = eta;
407     if(eta < Eta[0]) {                            427     if(eta < Eta[0]) { 
408       y = Eta[0];                              << 428       y =  Eta[0]; 
409     } else {                                      429     } else { 
410       ieta = Index(y, Eta, nEtaK);                430       ieta = Index(y, Eta, nEtaK);
411     }                                             431     }
412     corr = Value2(x, y, TheK[itet], TheK[itet+    432     corr = Value2(x, y, TheK[itet], TheK[itet+1], Eta[ieta], Eta[ieta+1],
413                   CK[itet][ieta], CK[itet+1][i    433                   CK[itet][ieta], CK[itet+1][ieta], 
414                   CK[itet][ieta+1], CK[itet+1]    434                   CK[itet][ieta+1], CK[itet+1][ieta+1]);
415     //G4cout << "   x= " <<x<<" y= "<<y<<" tet    435     //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheK[itet]
416     //           <<" "<< TheK[itet+1]<<" eta=     436     //           <<" "<< TheK[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
417     //           <<" CK= " << CK[itet][ieta]<<    437     //           <<" CK= " << CK[itet][ieta]<<" "<< CK[itet+1][ieta]
418     //           <<" "<< CK[itet][ieta+1]<<" "    438     //           <<" "<< CK[itet][ieta+1]<<" "<< CK[itet+1][ieta+1]<<G4endl;
419   }                                               439   }
420   //G4cout << "Kshell:  tet= " << tet << " eta    440   //G4cout << "Kshell:  tet= " << tet << " eta= " << eta << "  C= " << corr
421   //         << " itet= " << itet << "  ieta=     441   //         << " itet= " << itet << "  ieta= " << ieta <<G4endl;
422   return corr;                                    442   return corr;
423 }                                                 443 }
424                                                   444 
425 //....oooOO0OOooo........oooOO0OOooo........oo    445 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
426                                                   446 
427 G4double G4EmCorrections::LShell(const G4doubl << 447 G4double G4EmCorrections::LShell(G4double tet, G4double eta)
428 {                                                 448 {
429   G4double corr = 0.0;                            449   G4double corr = 0.0;
430                                                   450 
431   static const G4double TheL[26] =                451   static const G4double TheL[26] = 
432     {0.24, 0.26, 0.28, 0.30, 0.32,   0.34, 0.3    452     {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    453      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};       454      0.58, 0.60, 0.62, 0.64, 0.65,   0.66};
435                                                   455 
436   G4double x = tet;                               456   G4double x = tet;
437   G4int itet = 0;                                 457   G4int itet = 0;
438   G4int ieta = 0;                                 458   G4int ieta = 0;
439   if(tet < TheL[0]) {                             459   if(tet < TheL[0]) { 
440     x =  TheL[0];                                 460     x =  TheL[0]; 
441   } else if(tet > TheL[nL-1]) {                   461   } else if(tet > TheL[nL-1]) { 
442     x =  TheL[nL-1];                              462     x =  TheL[nL-1];
443     itet = nL-2;                                  463     itet = nL-2; 
444   } else {                                        464   } else { 
445     itet = Index(x, TheL, nL);                    465     itet = Index(x, TheL, nL);
446   }                                               466   }
447                                                   467 
448   // asymptotic case                           << 468   // assimptotic case
449   if(eta >= Eta[nEtaL-1]) {                       469   if(eta >= Eta[nEtaL-1]) {
450     corr = (Value(x, TheL[itet], TheL[itet+1],    470     corr = (Value(x, TheL[itet], TheL[itet+1], UL[itet], UL[itet+1])
451               + Value(x, TheL[itet], TheL[itet    471               + Value(x, TheL[itet], TheL[itet+1], VL[itet], VL[itet+1])/eta
452             )/eta;                                472             )/eta;
453   } else {                                        473   } else {
454     G4double y = eta;                             474     G4double y = eta;
455     if(eta < Eta[0]) {                            475     if(eta < Eta[0]) { 
456       y =  Eta[0];                                476       y =  Eta[0]; 
457     } else {                                      477     } else { 
458       ieta = Index(y, Eta, nEtaL);                478       ieta = Index(y, Eta, nEtaL);
459     }                                             479     }
460     corr = Value2(x, y, TheL[itet], TheL[itet+    480     corr = Value2(x, y, TheL[itet], TheL[itet+1], Eta[ieta], Eta[ieta+1],
461                   CL[itet][ieta], CL[itet+1][i    481                   CL[itet][ieta], CL[itet+1][ieta], 
462                   CL[itet][ieta+1], CL[itet+1]    482                   CL[itet][ieta+1], CL[itet+1][ieta+1]);
463     //G4cout << "   x= " <<x<<" y= "<<y<<" tet    483     //G4cout << "   x= " <<x<<" y= "<<y<<" tet= " <<TheL[itet]
464     //           <<" "<< TheL[itet+1]<<" eta=     484     //           <<" "<< TheL[itet+1]<<" eta= "<< Eta[ieta]<<" "<< Eta[ieta+1]
465     //           <<" CL= " << CL[itet][ieta]<<    485     //           <<" CL= " << CL[itet][ieta]<<" "<< CL[itet+1][ieta]
466     //           <<" "<< CL[itet][ieta+1]<<" "    486     //           <<" "<< CL[itet][ieta+1]<<" "<< CL[itet+1][ieta+1]<<G4endl;
467   }                                               487   }
468   //G4cout<<"Lshell:  tet= "<<tet<<" eta= "<<e    488   //G4cout<<"Lshell:  tet= "<<tet<<" eta= "<<eta<<" itet= "<<itet
469   //        <<" ieta= "<<ieta<<"  Corr= "<<cor    489   //        <<" ieta= "<<ieta<<"  Corr= "<<corr<<G4endl;
470   return corr;                                    490   return corr;
471 }                                                 491 }
472                                                   492 
473 //....oooOO0OOooo........oooOO0OOooo........oo    493 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
474                                                   494 
475 G4double G4EmCorrections::ShellCorrectionSTD(c    495 G4double G4EmCorrections::ShellCorrectionSTD(const G4ParticleDefinition* p,
476                                              c    496                                              const G4Material* mat, 
477                                              c << 497                                              G4double e)
478 {                                                 498 {
479   SetupKinematics(p, mat, e);                     499   SetupKinematics(p, mat, e);
480   G4double taulim= 8.0*MeV/mass;                  500   G4double taulim= 8.0*MeV/mass;
481   G4double bg2lim= taulim * (taulim+2.0);         501   G4double bg2lim= taulim * (taulim+2.0);
482                                                   502 
483   G4double* shellCorrectionVector =               503   G4double* shellCorrectionVector =
484             material->GetIonisation()->GetShel    504             material->GetIonisation()->GetShellCorrectionVector();
485   G4double sh = 0.0;                              505   G4double sh = 0.0;
486   G4double x  = 1.0;                              506   G4double x  = 1.0;
487   G4double taul  = material->GetIonisation()->    507   G4double taul  = material->GetIonisation()->GetTaul();
488                                                   508 
489   if ( bg2 >= bg2lim ) {                          509   if ( bg2 >= bg2lim ) {
490     for (G4int k=0; k<3; ++k) {                   510     for (G4int k=0; k<3; ++k) {
491         x *= bg2 ;                                511         x *= bg2 ;
492         sh += shellCorrectionVector[k]/x;         512         sh += shellCorrectionVector[k]/x;
493     }                                             513     }
494                                                   514 
495   } else {                                        515   } else {
496     for (G4int k=0; k<3; ++k) {                   516     for (G4int k=0; k<3; ++k) {
497         x *= bg2lim ;                             517         x *= bg2lim ;
498         sh += shellCorrectionVector[k]/x;         518         sh += shellCorrectionVector[k]/x;
499     }                                             519     }
500     sh *= G4Log(tau/taul)/G4Log(taulim/taul);     520     sh *= G4Log(tau/taul)/G4Log(taulim/taul);
501   }                                               521   }
502   sh *= 0.5;                                      522   sh *= 0.5;
503   return sh;                                      523   return sh;
504 }                                                 524 }
505                                                   525 
506                                                   526 
507 //....oooOO0OOooo........oooOO0OOooo........oo    527 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
508                                                   528 
509 G4double G4EmCorrections::ShellCorrection(cons    529 G4double G4EmCorrections::ShellCorrection(const G4ParticleDefinition* p,
510                                           cons    530                                           const G4Material* mat,
511                                           cons << 531                                           G4double ekin)
512 {                                                 532 {
513   SetupKinematics(p, mat, ekin);                  533   SetupKinematics(p, mat, ekin);
                                                   >> 534 
514   G4double term = 0.0;                            535   G4double term = 0.0;
515   //G4cout << "### G4EmCorrections::ShellCorre    536   //G4cout << "### G4EmCorrections::ShellCorrection " << mat->GetName()
516   //       << "   " << ekin/MeV << " MeV " <<  << 537   //         << "   " << ekin/MeV << " MeV " << G4endl;
517   for (G4int i = 0; i<numberOfElements; ++i) {    538   for (G4int i = 0; i<numberOfElements; ++i) {
518                                                   539 
519     G4double res = 0.0;                           540     G4double res = 0.0;
520     G4double res0 = 0.0;                          541     G4double res0 = 0.0;
521     const G4double Z = (*theElementVector)[i]- << 542     G4double Z = (*theElementVector)[i]->GetZ();
522     const G4int iz = (*theElementVector)[i]->G << 543     G4int   iz = G4lrint(Z);
523     G4double Z2= (Z-0.3)*(Z-0.3);                 544     G4double Z2= (Z-0.3)*(Z-0.3);
524     G4double f = 1.0;                             545     G4double f = 1.0;
525     if(1 == iz) {                                 546     if(1 == iz) {
526       f  = 0.5;                                   547       f  = 0.5;
527       Z2 = 1.0;                                   548       Z2 = 1.0;
528     }                                             549     }
529     G4double eta = ba2/Z2;                        550     G4double eta = ba2/Z2;
530     G4double tet = (11 < iz) ? sThetaK->Value( << 551     G4double tet = Z2*(1. + Z2*0.25*alpha2);
                                                   >> 552     if(11 < iz) { tet = ThetaK->Value(Z); }
531     res0 = f*KShell(tet,eta);                     553     res0 = f*KShell(tet,eta);
532     res += res0;                                  554     res += res0;
533     //G4cout << " Z= " << iz << " Shell 0" <<     555     //G4cout << " Z= " << iz << " Shell 0" << " tet= " << tet 
534     //       << " eta= " << eta << "  resK= "     556     //       << " eta= " << eta << "  resK= " << res0 << G4endl;
535                                                << 
536     if(2 < iz) {                                  557     if(2 < iz) {
537       const G4double Zeff = (iz < 10) ? Z - ZD << 558       G4double Zeff = Z - ZD[10];
                                                   >> 559       if(iz < 10) { Zeff = Z - ZD[iz]; }
538       Z2= Zeff*Zeff;                              560       Z2= Zeff*Zeff;
539       eta = ba2/Z2;                               561       eta = ba2/Z2;
540       tet = sThetaL->Value(Z);                 << 
541       f = 0.125;                                  562       f = 0.125;
542       const G4int ntot = G4AtomicShells::GetNu << 563       tet = ThetaL->Value(Z);
543       const G4int nmax = std::min(4, ntot);    << 564       G4int ntot = G4AtomicShells::GetNumberOfShells(iz);
                                                   >> 565       G4int nmax = std::min(4, ntot);
544       G4double norm   = 0.0;                      566       G4double norm   = 0.0;
545       G4double eshell = 0.0;                      567       G4double eshell = 0.0;
546       for(G4int j=1; j<nmax; ++j) {               568       for(G4int j=1; j<nmax; ++j) {
547         G4int ne = G4AtomicShells::GetNumberOf    569         G4int ne = G4AtomicShells::GetNumberOfElectrons(iz,j);
548         if(15 >= iz) {                            570         if(15 >= iz) {
549           tet = (3 > j) ? 0.25*Z2*(1.0 + 5*Z2* << 571           if(3 > j) { tet = 0.25*Z2*(1.0 + 5*Z2*alpha2/16.); }
550       0.25*Z2*(1.0 + Z2*alpha2/16.);           << 572           else      { tet = 0.25*Z2*(1.0 + Z2*alpha2/16.); }
551         }                                         573         }
552         norm   += ne;                             574         norm   += ne;
553         eshell += tet*ne;                         575         eshell += tet*ne;
554         res0 = f*ne*LShell(tet,eta);              576         res0 = f*ne*LShell(tet,eta);
555         res += res0;                              577         res += res0;
556         //G4cout << " Zeff= " << Zeff << " She << 578         //G4cout << " Z= " << iz << " Shell " << j << " Ne= " << ne
557         //       << " tet= " << tet << " eta=     579         //       << " tet= " << tet << " eta= " << eta 
558         //       << "  resL= " << res0 << G4en    580         //       << "  resL= " << res0 << G4endl;
559       }                                           581       }
560       if(ntot > nmax) {                           582       if(ntot > nmax) {
561   if (norm > 0.0) { norm = 1.0/norm; }         << 583         eshell /= norm;
562         eshell *= norm;                        << 
563                                                   584 
564   static const G4double HM[53] = {                585   static const G4double HM[53] = {
565     12.0, 12.0, 12.0, 12.0, 11.9, 11.7, 11.5,     586     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,    587     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,    588     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,    589     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,    590     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 };                           591     3.90, 3.92, 3.93 };
571   static const G4double HN[31] = {                592   static const G4double HN[31] = {
572     75.5, 61.9, 52.2, 45.1, 39.6, 35.4, 31.9,     593     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,     594     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,     595     19.5, 19.3, 19.2, 19.1, 18.4, 18.8, 18.7, 18.6, 18.5, 18.4, 
575     18.2};                                        596     18.2};
576                                                   597 
577         // Add M-shell                            598         // Add M-shell
578         if(28 > iz) {                             599         if(28 > iz) {
579           res += f*(iz - 10)*LShell(eshell,HM[    600           res += f*(iz - 10)*LShell(eshell,HM[iz-11]*eta);
580         } else if(63 > iz) {                      601         } else if(63 > iz) { 
581           res += f*18*LShell(eshell,HM[iz-11]*    602           res += f*18*LShell(eshell,HM[iz-11]*eta);
582         } else {                                  603         } else {
583           res += f*18*LShell(eshell,HM[52]*eta    604           res += f*18*LShell(eshell,HM[52]*eta);
584         }                                         605         }
585         // Add N-shell                            606         // Add N-shell
586         if(32 < iz) {                             607         if(32 < iz) {
587           if(60 > iz) {                           608           if(60 > iz) {
588             res += f*(iz - 28)*LShell(eshell,H    609             res += f*(iz - 28)*LShell(eshell,HN[iz-33]*eta);
589           } else if(63 > iz) {                    610           } else if(63 > iz) {
590             res += 4*LShell(eshell,HN[iz-33]*e    611             res += 4*LShell(eshell,HN[iz-33]*eta);
591           } else {                                612           } else {
592             res += 4*LShell(eshell,HN[30]*eta)    613             res += 4*LShell(eshell,HN[30]*eta);
593           }                                       614           }
594           // Add O-P-shells                       615           // Add O-P-shells
595           if(60 < iz) {                           616           if(60 < iz) {
596             res += f*(iz - 60)*LShell(eshell,1    617             res += f*(iz - 60)*LShell(eshell,150*eta);
597           }                                       618           }
598         }                                         619         }
599       }                                           620       }
600     }                                             621     }
601     term += res*atomDensity[i]/Z;                 622     term += res*atomDensity[i]/Z;
602   }                                               623   }
603                                                   624 
604   term /= material->GetTotNbOfAtomsPerVolume()    625   term /= material->GetTotNbOfAtomsPerVolume();
605   //G4cout << "##Shell Correction=" << term << << 626   //G4cout << "#     Shell Correction= " << term << G4endl;
606   return term;                                    627   return term;
607 }                                                 628 }
608                                                   629 
609 //....oooOO0OOooo........oooOO0OOooo........oo    630 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
610                                                   631 
611 G4double G4EmCorrections::DensityCorrection(co    632 G4double G4EmCorrections::DensityCorrection(const G4ParticleDefinition* p,
612                                             co    633                                             const G4Material* mat,
613                                             co << 634                                             G4double e)
614 {                                                 635 {
615   SetupKinematics(p, mat, e);                     636   SetupKinematics(p, mat, e);
616                                                   637 
617   G4double cden  = material->GetIonisation()->    638   G4double cden  = material->GetIonisation()->GetCdensity();
618   G4double mden  = material->GetIonisation()->    639   G4double mden  = material->GetIonisation()->GetMdensity();
619   G4double aden  = material->GetIonisation()->    640   G4double aden  = material->GetIonisation()->GetAdensity();
620   G4double x0den = material->GetIonisation()->    641   G4double x0den = material->GetIonisation()->GetX0density();
621   G4double x1den = material->GetIonisation()->    642   G4double x1den = material->GetIonisation()->GetX1density();
622                                                   643 
623   G4double dedx = 0.0;                            644   G4double dedx = 0.0;
624                                                   645 
625   // density correction                           646   // density correction
626   static const G4double twoln10 = 2.0*G4Log(10    647   static const G4double twoln10 = 2.0*G4Log(10.0);
627   G4double x = G4Log(bg2)/twoln10;                648   G4double x = G4Log(bg2)/twoln10;
628   if ( x >= x0den ) {                             649   if ( x >= x0den ) {
629     dedx = twoln10*x - cden ;                     650     dedx = twoln10*x - cden ;
630     if ( x < x1den ) dedx += aden*G4Exp(G4Log(    651     if ( x < x1den ) dedx += aden*G4Exp(G4Log(x1den-x)*mden) ;
631   }                                               652   }
632                                                   653 
633   return dedx;                                    654   return dedx;
634 }                                                 655 }
635                                                   656 
636 //....oooOO0OOooo........oooOO0OOooo........oo    657 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
637                                                   658 
638 G4double G4EmCorrections::BarkasCorrection(con    659 G4double G4EmCorrections::BarkasCorrection(const G4ParticleDefinition* p,
639                                            con    660                                            const G4Material* mat, 
640                                            con << 661                                            G4double e)
641                                            con << 
642 {                                                 662 {
643   // . Z^3 Barkas effect in the stopping power    663   // . Z^3 Barkas effect in the stopping power of matter for charged particles
644   //   J.C Ashley and R.H.Ritchie                 664   //   J.C Ashley and R.H.Ritchie
645   //   Physical review B Vol.5 No.7 1 April 19    665   //   Physical review B Vol.5 No.7 1 April 1972 pp. 2393-2397
646   //   valid for kineticEnergy > 0.5 MeV          666   //   valid for kineticEnergy > 0.5 MeV
647                                                   667 
648   if (!isInitialized) { SetupKinematics(p, mat << 668   SetupKinematics(p, mat, e);
649   G4double BarkasTerm = 0.0;                      669   G4double BarkasTerm = 0.0;
650                                                   670 
651   for (G4int i = 0; i<numberOfElements; ++i) {    671   for (G4int i = 0; i<numberOfElements; ++i) {
652                                                   672 
653     const G4int iz = (*theElementVector)[i]->G << 673     G4double Z = (*theElementVector)[i]->GetZ();
                                                   >> 674     G4int iz = G4lrint(Z);
654     if(iz == 47) {                                675     if(iz == 47) {
655       BarkasTerm += atomDensity[i]*0.006812*G4    676       BarkasTerm += atomDensity[i]*0.006812*G4Exp(-G4Log(beta)*0.9);
656     } else if(iz >= 64) {                         677     } else if(iz >= 64) {
657       BarkasTerm += atomDensity[i]*0.002833*G4    678       BarkasTerm += atomDensity[i]*0.002833*G4Exp(-G4Log(beta)*1.2);
658     } else {                                      679     } else {    
659                                                   680 
660       const G4double Z = (*theElementVector)[i << 681       G4double X = ba2 / Z;
661       const G4double X = ba2 / Z;              << 
662       G4double b = 1.3;                           682       G4double b = 1.3;
663       if(1 == iz) { b = (material->GetName() = << 683       if(1 == iz) {
                                                   >> 684         if(material->GetName() == "G4_lH2") { b = 0.6; }
                                                   >> 685         else                                { b = 1.8; }
                                                   >> 686       }
664       else if(2 == iz)  { b = 0.6; }              687       else if(2 == iz)  { b = 0.6; }
665       else if(10 >= iz) { b = 1.8; }              688       else if(10 >= iz) { b = 1.8; }
666       else if(17 >= iz) { b = 1.4; }              689       else if(17 >= iz) { b = 1.4; }
667       else if(18 == iz) { b = 1.8; }              690       else if(18 == iz) { b = 1.8; }
668       else if(25 >= iz) { b = 1.4; }              691       else if(25 >= iz) { b = 1.4; }
669       else if(50 >= iz) { b = 1.35;}              692       else if(50 >= iz) { b = 1.35;}
670                                                   693 
671       const G4double W = b/std::sqrt(X);       << 694       G4double W = b/std::sqrt(X);
672                                                   695 
673       G4double val = sBarkasCorr->Value(W, idx << 696       G4double val = BarkasCorr->Value(W);
674       if (W > sWmaxBarkas) { val *= (sWmaxBark << 697       if(W > BarkasCorr->Energy(46)) { 
                                                   >> 698         val *= BarkasCorr->Energy(46)/W; 
                                                   >> 699       } 
675       //    G4cout << "i= " << i << " b= " <<     700       //    G4cout << "i= " << i << " b= " << b << " W= " << W 
676       // << " Z= " << Z << " X= " << X << " va    701       // << " Z= " << Z << " X= " << X << " val= " << val<< G4endl;
677       BarkasTerm += val*atomDensity[i] / (std:    702       BarkasTerm += val*atomDensity[i] / (std::sqrt(Z*X)*X);
678     }                                             703     }
679   }                                               704   }
680                                                   705 
681   BarkasTerm *= 1.29*charge/material->GetTotNb    706   BarkasTerm *= 1.29*charge/material->GetTotNbOfAtomsPerVolume();
682                                                   707 
683   return BarkasTerm;                              708   return BarkasTerm;
684 }                                                 709 }
685                                                   710 
686 //....oooOO0OOooo........oooOO0OOooo........oo    711 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
687                                                   712 
688 G4double G4EmCorrections::BlochCorrection(cons    713 G4double G4EmCorrections::BlochCorrection(const G4ParticleDefinition* p,
689                                           cons    714                                           const G4Material* mat,
690                                           cons << 715                                           G4double e)
691                                           cons << 
692 {                                                 716 {
693   if (!isInitialized) { SetupKinematics(p, mat << 717   SetupKinematics(p, mat, e);
694                                                   718 
695   G4double y2 = q2/ba2;                           719   G4double y2 = q2/ba2;
696                                                   720 
697   G4double term = 1.0/(1.0 + y2);                 721   G4double term = 1.0/(1.0 + y2);
698   G4double del;                                   722   G4double del;
699   G4double j = 1.0;                               723   G4double j = 1.0;
700   do {                                            724   do {
701     j += 1.0;                                     725     j += 1.0;
702     del = 1.0/(j* (j*j + y2));                    726     del = 1.0/(j* (j*j + y2));
703     term += del;                                  727     term += del;
704     // Loop checking, 03-Aug-2015, Vladimir Iv    728     // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
705   } while (del > 0.01*term);                      729   } while (del > 0.01*term);
706                                                   730 
707   return -y2*term;                             << 731   G4double res = -y2*term;
                                                   >> 732   return res;
708 }                                                 733 }
709                                                   734 
710 //....oooOO0OOooo........oooOO0OOooo........oo    735 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
711                                                   736 
712 G4double G4EmCorrections::MottCorrection(const    737 G4double G4EmCorrections::MottCorrection(const G4ParticleDefinition* p,
713                                          const    738                                          const G4Material* mat, 
714                                          const << 739                                          G4double e)
715                                          const << 
716 {                                                 740 {
717   if (!isInitialized) { SetupKinematics(p, mat << 741   SetupKinematics(p, mat, e);
718   return CLHEP::pi*CLHEP::fine_structure_const << 742   G4double mterm = CLHEP::pi*fine_structure_const*beta*charge;
                                                   >> 743   return mterm;
                                                   >> 744 }
                                                   >> 745 
                                                   >> 746 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >> 747 
                                                   >> 748 G4double G4EmCorrections::NuclearDEDX(const G4ParticleDefinition* p,
                                                   >> 749                                       const G4Material* mat,
                                                   >> 750                                       G4double e,
                                                   >> 751                                       G4bool fluct)
                                                   >> 752 {
                                                   >> 753   G4double nloss = 0.0;
                                                   >> 754   if(e <= 0.0) return nloss; 
                                                   >> 755   SetupKinematics(p, mat, e);
                                                   >> 756 
                                                   >> 757   lossFlucFlag = fluct;
                                                   >> 758 
                                                   >> 759   // Projectile nucleus
                                                   >> 760   G4double z1 = std::abs(particle->GetPDGCharge()*inveplus);
                                                   >> 761   G4double mass1 = mass/amu_c2;
                                                   >> 762 
                                                   >> 763   //  loop for the elements in the material
                                                   >> 764   for (G4int iel=0; iel<numberOfElements; iel++) {
                                                   >> 765     const G4Element* element = (*theElementVector)[iel] ;
                                                   >> 766     G4double z2 = element->GetZ();
                                                   >> 767     G4double mass2 = element->GetN();
                                                   >> 768     nloss += (NuclearStoppingPower(kinEnergy, z1, z2, mass1, mass2))
                                                   >> 769            * atomDensity[iel] ;
                                                   >> 770   }
                                                   >> 771   nloss *= theZieglerFactor;
                                                   >> 772   return nloss;
                                                   >> 773 }
                                                   >> 774 
                                                   >> 775 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >> 776 
                                                   >> 777 G4double G4EmCorrections::NuclearStoppingPower(G4double kineticEnergy,
                                                   >> 778                                                G4double z1, G4double z2,
                                                   >> 779                                                G4double mass1, G4double mass2)
                                                   >> 780 {
                                                   >> 781   G4double energy = kineticEnergy/CLHEP::keV ;  // energy in keV
                                                   >> 782   G4double nloss = 0.0;
                                                   >> 783   
                                                   >> 784   G4double rm;
                                                   >> 785   if(z1 > 1.5) rm = (mass1 + mass2) * ( g4calc->Z23(G4lrint(z1)) + g4calc->Z23(G4lrint(z2)) ) ;
                                                   >> 786   else         rm = (mass1 + mass2) * g4calc->Z13(G4lrint(z2));
                                                   >> 787 
                                                   >> 788   G4double er = 32.536 * mass2 * energy / ( z1 * z2 * rm ) ;  // reduced energy
                                                   >> 789 
                                                   >> 790   static const G4double nuca[104][2] = {
                                                   >> 791   { 1.0E+8, 5.831E-8},
                                                   >> 792   { 8.0E+7, 7.288E-8},
                                                   >> 793   { 6.0E+7, 9.719E-8},
                                                   >> 794   { 5.0E+7, 1.166E-7},
                                                   >> 795   { 4.0E+7, 1.457E-7},
                                                   >> 796   { 3.0E+7, 1.942E-7},
                                                   >> 797   { 2.0E+7, 2.916E-7},
                                                   >> 798   { 1.5E+7, 3.887E-7},
                                                   >> 799 
                                                   >> 800   { 1.0E+7, 5.833E-7},
                                                   >> 801   { 8.0E+6, 7.287E-7},
                                                   >> 802   { 6.0E+6, 9.712E-7},
                                                   >> 803   { 5.0E+6, 1.166E-6},
                                                   >> 804   { 4.0E+6, 1.457E-6},
                                                   >> 805   { 3.0E+6, 1.941E-6},
                                                   >> 806   { 2.0E+6, 2.911E-6},
                                                   >> 807   { 1.5E+6, 3.878E-6},
                                                   >> 808 
                                                   >> 809   { 1.0E+6, 5.810E-6},
                                                   >> 810   { 8.0E+5, 7.262E-6},
                                                   >> 811   { 6.0E+5, 9.663E-6},
                                                   >> 812   { 5.0E+5, 1.157E-5},
                                                   >> 813   { 4.0E+5, 1.442E-5},
                                                   >> 814   { 3.0E+5, 1.913E-5},
                                                   >> 815   { 2.0E+5, 2.845E-5},
                                                   >> 816   { 1.5E+5, 3.762E-5},
                                                   >> 817 
                                                   >> 818   { 1.0E+5, 5.554E-5},
                                                   >> 819   { 8.0E+4, 6.866E-5},
                                                   >> 820   { 6.0E+4, 9.020E-5},
                                                   >> 821   { 5.0E+4, 1.070E-4},
                                                   >> 822   { 4.0E+4, 1.319E-4},
                                                   >> 823   { 3.0E+4, 1.722E-4},
                                                   >> 824   { 2.0E+4, 2.499E-4},
                                                   >> 825   { 1.5E+4, 3.248E-4},
                                                   >> 826 
                                                   >> 827   { 1.0E+4, 4.688E-4},
                                                   >> 828   { 8.0E+3, 5.729E-4},
                                                   >> 829   { 6.0E+3, 7.411E-4},
                                                   >> 830   { 5.0E+3, 8.718E-4},
                                                   >> 831   { 4.0E+3, 1.063E-3},
                                                   >> 832   { 3.0E+3, 1.370E-3},
                                                   >> 833   { 2.0E+3, 1.955E-3},
                                                   >> 834   { 1.5E+3, 2.511E-3},
                                                   >> 835 
                                                   >> 836   { 1.0E+3, 3.563E-3},
                                                   >> 837   { 8.0E+2, 4.314E-3},
                                                   >> 838   { 6.0E+2, 5.511E-3},
                                                   >> 839   { 5.0E+2, 6.430E-3},
                                                   >> 840   { 4.0E+2, 7.756E-3},
                                                   >> 841   { 3.0E+2, 9.855E-3},
                                                   >> 842   { 2.0E+2, 1.375E-2},
                                                   >> 843   { 1.5E+2, 1.736E-2},
                                                   >> 844 
                                                   >> 845   { 1.0E+2, 2.395E-2},
                                                   >> 846   { 8.0E+1, 2.850E-2},
                                                   >> 847   { 6.0E+1, 3.552E-2},
                                                   >> 848   { 5.0E+1, 4.073E-2},
                                                   >> 849   { 4.0E+1, 4.802E-2},
                                                   >> 850   { 3.0E+1, 5.904E-2},
                                                   >> 851   { 1.5E+1, 9.426E-2},
                                                   >> 852 
                                                   >> 853   { 1.0E+1, 1.210E-1},
                                                   >> 854   { 8.0E+0, 1.377E-1},
                                                   >> 855   { 6.0E+0, 1.611E-1},
                                                   >> 856   { 5.0E+0, 1.768E-1},
                                                   >> 857   { 4.0E+0, 1.968E-1},
                                                   >> 858   { 3.0E+0, 2.235E-1},
                                                   >> 859   { 2.0E+0, 2.613E-1},
                                                   >> 860   { 1.5E+0, 2.871E-1},
                                                   >> 861 
                                                   >> 862   { 1.0E+0, 3.199E-1},
                                                   >> 863   { 8.0E-1, 3.354E-1},
                                                   >> 864   { 6.0E-1, 3.523E-1},
                                                   >> 865   { 5.0E-1, 3.609E-1},
                                                   >> 866   { 4.0E-1, 3.693E-1},
                                                   >> 867   { 3.0E-1, 3.766E-1},
                                                   >> 868   { 2.0E-1, 3.803E-1},
                                                   >> 869   { 1.5E-1, 3.788E-1},
                                                   >> 870 
                                                   >> 871   { 1.0E-1, 3.711E-1},
                                                   >> 872   { 8.0E-2, 3.644E-1},
                                                   >> 873   { 6.0E-2, 3.530E-1},
                                                   >> 874   { 5.0E-2, 3.444E-1},
                                                   >> 875   { 4.0E-2, 3.323E-1},
                                                   >> 876   { 3.0E-2, 3.144E-1},
                                                   >> 877   { 2.0E-2, 2.854E-1},
                                                   >> 878   { 1.5E-2, 2.629E-1},
                                                   >> 879 
                                                   >> 880   { 1.0E-2, 2.298E-1},
                                                   >> 881   { 8.0E-3, 2.115E-1},
                                                   >> 882   { 6.0E-3, 1.883E-1},
                                                   >> 883   { 5.0E-3, 1.741E-1},
                                                   >> 884   { 4.0E-3, 1.574E-1},
                                                   >> 885   { 3.0E-3, 1.372E-1},
                                                   >> 886   { 2.0E-3, 1.116E-1},
                                                   >> 887   { 1.5E-3, 9.559E-2},
                                                   >> 888 
                                                   >> 889   { 1.0E-3, 7.601E-2},
                                                   >> 890   { 8.0E-4, 6.668E-2},
                                                   >> 891   { 6.0E-4, 5.605E-2},
                                                   >> 892   { 5.0E-4, 5.008E-2},
                                                   >> 893   { 4.0E-4, 4.352E-2},
                                                   >> 894   { 3.0E-4, 3.617E-2},
                                                   >> 895   { 2.0E-4, 2.768E-2},
                                                   >> 896   { 1.5E-4, 2.279E-2},
                                                   >> 897 
                                                   >> 898   { 1.0E-4, 1.723E-2},
                                                   >> 899   { 8.0E-5, 1.473E-2},
                                                   >> 900   { 6.0E-5, 1.200E-2},
                                                   >> 901   { 5.0E-5, 1.052E-2},
                                                   >> 902   { 4.0E-5, 8.950E-3},
                                                   >> 903   { 3.0E-5, 7.246E-3},
                                                   >> 904   { 2.0E-5, 5.358E-3},
                                                   >> 905   { 1.5E-5, 4.313E-3},
                                                   >> 906   { 0.0, 3.166E-3}
                                                   >> 907   };
                                                   >> 908 
                                                   >> 909   if (er >= nuca[0][0]) { nloss = nuca[0][1]; }
                                                   >> 910   else {
                                                   >> 911     // the table is inverse in energy
                                                   >> 912     for (G4int i=102; i>=0; --i) {
                                                   >> 913       G4double edi = nuca[i][0];
                                                   >> 914       if (er <= edi) {
                                                   >> 915         G4double edi1 = nuca[i+1][0];
                                                   >> 916         G4double ai   = nuca[i][1];
                                                   >> 917         G4double ai1  = nuca[i+1][1];
                                                   >> 918         nloss = (ai - ai1)*(er - edi1)/(edi - edi1) + ai1;
                                                   >> 919         break;
                                                   >> 920       }
                                                   >> 921     }
                                                   >> 922   }
                                                   >> 923 
                                                   >> 924   // Stragling
                                                   >> 925   if(lossFlucFlag) {
                                                   >> 926     G4double sig = 4.0 * mass1 * mass2 / ((mass1 + mass2)*(mass1 + mass2)*
                                                   >> 927                                     (4.0 + 0.197/(er*er) + 6.584/er));
                                                   >> 928 
                                                   >> 929     nloss *= G4RandGauss::shoot(1.0,sig) ;
                                                   >> 930   }
                                                   >> 931    
                                                   >> 932   nloss *= 8.462 * z1 * z2 * mass1 / rm ; // Return to [ev/(10^15 atoms/cm^2]
                                                   >> 933 
                                                   >> 934   nloss = std::max(nloss, 0.0);
                                                   >> 935 
                                                   >> 936   return nloss;
719 }                                                 937 }
720                                                   938 
721 //....oooOO0OOooo........oooOO0OOooo........oo    939 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
722                                                   940 
723 G4double                                          941 G4double 
724 G4EmCorrections::EffectiveChargeCorrection(con    942 G4EmCorrections::EffectiveChargeCorrection(const G4ParticleDefinition* p,
725                                            con    943                                            const G4Material* mat,
726                                            con << 944                                            G4double ekin)
727 {                                                 945 {
728   G4double factor = 1.0;                          946   G4double factor = 1.0;
729   if(p->GetPDGCharge() <= 2.5*CLHEP::eplus ||     947   if(p->GetPDGCharge() <= 2.5*CLHEP::eplus || nIons <= 0) { return factor; }
730                                                   948   
731   if(verbose > 1) {                               949   if(verbose > 1) {
732     G4cout << "EffectiveChargeCorrection: " <<    950     G4cout << "EffectiveChargeCorrection: " << p->GetParticleName() 
733            << " in " << mat->GetName()            951            << " in " << mat->GetName()
734            << " ekin(MeV)= " << ekin/MeV << G4    952            << " ekin(MeV)= " << ekin/MeV << G4endl;
735   }                                               953   }
736                                                   954 
737   if(p != curParticle || mat != curMaterial) {    955   if(p != curParticle || mat != curMaterial) {
738     curParticle = p;                              956     curParticle = p;
739     curMaterial = mat;                            957     curMaterial = mat;
740     curVector   = nullptr;                        958     curVector   = nullptr;
741     currentZ = p->GetAtomicNumber();              959     currentZ = p->GetAtomicNumber();
742     if(verbose > 1) {                             960     if(verbose > 1) {
743       G4cout << "G4EmCorrections::EffectiveCha    961       G4cout << "G4EmCorrections::EffectiveChargeCorrection: Zion= " 
744              << currentZ << " Aion= " << p->Ge    962              << currentZ << " Aion= " << p->GetPDGMass()/amu_c2 << G4endl;
745     }                                             963     }
746     massFactor = CLHEP::proton_mass_c2/p->GetP << 964     massFactor = proton_mass_c2/p->GetPDGMass();
747     idx = -1;                                     965     idx = -1;
748                                                   966 
749     for(G4int i=0; i<nIons; ++i) {                967     for(G4int i=0; i<nIons; ++i) {
750       if(materialList[i] == mat && currentZ ==    968       if(materialList[i] == mat && currentZ == Zion[i]) {
751         idx = i;                                  969         idx = i;
752         break;                                    970         break;
753       }                                           971       }
754     }                                             972     }
755     //G4cout << " idx= " << idx << " dz= " <<     973     //G4cout << " idx= " << idx << " dz= " << G4endl;
756     if(idx >= 0) {                                974     if(idx >= 0) {
757       if(nullptr == ionList[idx]) { BuildCorre << 975       if(!ionList[idx]) { BuildCorrectionVector(); } 
758       curVector = stopData[idx];               << 976       if(ionList[idx])  { curVector = stopData[idx]; }
759     } else {                                   << 977     } else { return factor; }
760       return factor;                           << 
761     }                                          << 
762   }                                               978   }
763   if(nullptr != curVector) {                   << 979   if(curVector) {
764     factor = curVector->Value(ekin*massFactor)    980     factor = curVector->Value(ekin*massFactor);
765     if(verbose > 1) {                             981     if(verbose > 1) {
766       G4cout << "E= " << ekin << " factor= " <    982       G4cout << "E= " << ekin << " factor= " << factor << " massfactor= " 
767              << massFactor << G4endl;             983              << massFactor << G4endl;
768     }                                             984     }
769   }                                               985   }
770   return factor;                                  986   return factor;
771 }                                                 987 }
772                                                   988 
773 //....oooOO0OOooo........oooOO0OOooo........oo    989 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
774                                                   990 
775 void G4EmCorrections::AddStoppingData(const G4 << 991 void G4EmCorrections::AddStoppingData(G4int Z, G4int A,
776                                       const G4    992                                       const G4String& mname,
777                                       G4Physic    993                                       G4PhysicsVector* dVector)
778 {                                                 994 {
779   G4int i = 0;                                    995   G4int i = 0;
780   for(; i<nIons; ++i) {                           996   for(; i<nIons; ++i) {
781     if(Z == Zion[i] && A == Aion[i] && mname =    997     if(Z == Zion[i] && A == Aion[i] && mname == materialName[i]) break;
782   }                                               998   }
783   if(i == nIons) {                                999   if(i == nIons) {
784     Zion.push_back(Z);                            1000     Zion.push_back(Z);
785     Aion.push_back(A);                            1001     Aion.push_back(A);
786     materialName.push_back(mname);                1002     materialName.push_back(mname);
787     materialList.push_back(nullptr);              1003     materialList.push_back(nullptr);
788     ionList.push_back(nullptr);                   1004     ionList.push_back(nullptr);
789     stopData.push_back(dVector);                  1005     stopData.push_back(dVector);
790     nIons++;                                      1006     nIons++;
791     if(verbose > 1) {                             1007     if(verbose > 1) {
792       G4cout << "AddStoppingData Z= " << Z <<     1008       G4cout << "AddStoppingData Z= " << Z << " A= " << A << " " << mname
793              << "  idx= " << i << G4endl;         1009              << "  idx= " << i << G4endl;
794     }                                             1010     }
795   }                                               1011   }
796 }                                                 1012 }
797                                                   1013 
798 //....oooOO0OOooo........oooOO0OOooo........oo    1014 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
799                                                   1015 
800 void G4EmCorrections::BuildCorrectionVector()     1016 void G4EmCorrections::BuildCorrectionVector()
801 {                                                 1017 {
802   if(nullptr == ionLEModel || nullptr == ionHE << 1018   if(!ionLEModel || !ionHEModel) {
803     return;                                       1019     return;
804   }                                               1020   }
805                                                   1021 
806   const G4ParticleDefinition* ion = curParticl    1022   const G4ParticleDefinition* ion = curParticle;
807   const G4ParticleDefinition* gion = G4Generic << 
808   G4int Z = Zion[idx];                            1023   G4int Z = Zion[idx];
809   G4double A = Aion[idx];                      << 1024   if(currentZ != Z) {
                                                   >> 1025     ion = ionTable->GetIon(Z, Aion[idx], 0);
                                                   >> 1026   }
                                                   >> 1027   //G4cout << "BuildCorrectionVector: idx= " << idx << " Z= " << Z 
                                                   >> 1028   //       << " curZ= " << currentZ << G4endl;
                                                   >> 1029 
                                                   >> 1030   G4double A = G4double(ion->GetBaryonNumber());
810   G4PhysicsVector* v = stopData[idx];             1031   G4PhysicsVector* v = stopData[idx];
811                                                << 1032     
                                                   >> 1033   const G4ParticleDefinition* p = G4GenericIon::GenericIon();
                                                   >> 1034   G4double massRatio = proton_mass_c2/ion->GetPDGMass();
                                                   >> 1035 
812   if(verbose > 1) {                               1036   if(verbose > 1) {
813     G4cout << "BuildCorrectionVector: Stopping    1037     G4cout << "BuildCorrectionVector: Stopping for "
814            << curParticle->GetParticleName() <    1038            << curParticle->GetParticleName() << " in " 
815            << materialName[idx] << " Ion Z= "     1039            << materialName[idx] << " Ion Z= " << Z << " A= " << A
816            << " massFactor= " << massFactor << << 1040            << " massRatio= " << massRatio << G4endl;
817     G4cout << "    Nbins=" << nbinCorr << " Em << 
818      << " Emax(MeV)=" << eCorrMax << " ion: "  << 
819            << ion->GetParticleName() << G4endl << 
820   }                                               1041   }
821                                                   1042 
822   auto vv = new G4PhysicsLogVector(eCorrMin,eC << 1043   G4PhysicsLogVector* vv = 
823   const G4double eth0 = v->Energy(0);          << 1044     new G4PhysicsLogVector(eCorrMin,eCorrMax,nbinCorr);
824   const G4double escal = eth/massFactor;       << 1045   vv->SetSpline(true);
                                                   >> 1046   G4double e, eion, dedx, dedx1;
                                                   >> 1047   G4double eth0 = v->Energy(0);
                                                   >> 1048   G4double escal = eth/massRatio;
825   G4double qe =                                   1049   G4double qe = 
826     effCharge.EffectiveChargeSquareRatio(curPa << 1050     effCharge.EffectiveChargeSquareRatio(ion, curMaterial, escal); 
827   const G4double dedxt =                       << 1051   G4double dedxt = 
828     ionLEModel->ComputeDEDXPerVolume(curMateri << 1052     ionLEModel->ComputeDEDXPerVolume(curMaterial, p, eth, eth)*qe;
829   const G4double dedx1t =                      << 1053   G4double dedx1t = 
830     ionHEModel->ComputeDEDXPerVolume(curMateri << 1054     ionHEModel->ComputeDEDXPerVolume(curMaterial, p, eth, eth)*qe 
831     + ComputeIonCorrections(curParticle, curMa    1055     + ComputeIonCorrections(curParticle, curMaterial, escal);
832   const G4double rest = escal*(dedxt - dedx1t) << 1056   G4double rest = escal*(dedxt - dedx1t);
833   if(verbose > 1) {                            << 1057   //G4cout << "Escal(MeV)= "<<escal<<" dedxt0= " <<dedxt 
834     G4cout << "Escal(MeV)= " << escal << " qe= << 1058   //       << " dedxt1= " << dedx1t << G4endl;   
835            << " dedxt= " << dedxt << " dedx1t= << 1059 
836   }                                            << 
837   for(G4int i=0; i<=nbinCorr; ++i) {              1060   for(G4int i=0; i<=nbinCorr; ++i) {
838     // energy in the local table (GenericIon)  << 1061     e = vv->Energy(i);
839     G4double e = vv->Energy(i);                << 1062     escal = e/massRatio;
840     // energy of the real ion                  << 1063     eion  = escal/A;
841     G4double eion = e/massFactor;              << 1064     if(eion <= eth0) {
842     // energy in the imput stopping data vecto << 1065       dedx = v->Value(eth0)*std::sqrt(eion/eth0);
843     G4double e1 = eion/A;                      << 1066     } else {
844     G4double dedx = (e1 < eth0)                << 1067       dedx = v->Value(eion);
845       ? v->Value(eth0)*std::sqrt(e1/eth0) : v- << 1068     }
846     qe = effCharge.EffectiveChargeSquareRatio( << 1069     qe = effCharge.EffectiveChargeSquareRatio(curParticle,curMaterial,escal); 
847     G4double dedx1 = (e <= eth)                << 1070     if(e <= eth) {
848       ? ionLEModel->ComputeDEDXPerVolume(curMa << 1071       dedx1 = ionLEModel->ComputeDEDXPerVolume(curMaterial, p, e, e)*qe;
849       : ionHEModel->ComputeDEDXPerVolume(curMa << 1072     } else {
850       ComputeIonCorrections(curParticle, curMa << 1073       dedx1 = ionHEModel->ComputeDEDXPerVolume(curMaterial, p, e, e)*qe +
                                                   >> 1074         ComputeIonCorrections(curParticle, curMaterial, escal) + rest/escal;
                                                   >> 1075     }
851     vv->PutValue(i, dedx/dedx1);                  1076     vv->PutValue(i, dedx/dedx1);
852     if(verbose > 1) {                             1077     if(verbose > 1) {
853       G4cout << "E(MeV)=" << e/CLHEP::MeV << " << 1078       G4cout << "  E(meV)= " << e/MeV << "   Correction= " << dedx/dedx1
854        << " e1=" << e1 << " dedxRatio= " << de << 1079              << "   "  << dedx << " " << dedx1 
855              << " dedx="  << dedx << " dedx1=" << 1080              << "  massF= " << massFactor << G4endl;
856              << " qe=" << qe << " rest/eion="  << 
857     }                                             1081     }
858   }                                               1082   }
859   delete v;                                       1083   delete v;
860   ionList[idx]  = ion;                            1084   ionList[idx]  = ion;
861   stopData[idx] = vv;                             1085   stopData[idx] = vv;
862   if(verbose > 1) { G4cout << "End data set "     1086   if(verbose > 1) { G4cout << "End data set " << G4endl; }
863 }                                                 1087 }
864                                                   1088 
865 //....oooOO0OOooo........oooOO0OOooo........oo    1089 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
866                                                   1090 
867 void G4EmCorrections::InitialiseForNewRun()       1091 void G4EmCorrections::InitialiseForNewRun()
868 {                                                 1092 {
869   G4ProductionCutsTable* tb = G4ProductionCuts    1093   G4ProductionCutsTable* tb = G4ProductionCutsTable::GetProductionCutsTable();
870   ncouples = tb->GetTableSize();                  1094   ncouples = tb->GetTableSize();
871   if(currmat.size() != ncouples) {                1095   if(currmat.size() != ncouples) {
872     currmat.resize(ncouples);                     1096     currmat.resize(ncouples);
873     for(auto it = thcorr.begin(); it != thcorr << 1097     for(std::map< G4int, std::vector<G4double> >::iterator it = 
                                                   >> 1098         thcorr.begin(); it != thcorr.end(); ++it){
874       (it->second).clear();                       1099       (it->second).clear();
875     }                                             1100     }
876     thcorr.clear();                               1101     thcorr.clear();
877     for(std::size_t i=0; i<ncouples; ++i) {    << 1102     for(size_t i=0; i<ncouples; ++i) {
878       currmat[i] = tb->GetMaterialCutsCouple(( << 1103       currmat[i] = tb->GetMaterialCutsCouple(i)->GetMaterial();
879       G4String nam = currmat[i]->GetName();       1104       G4String nam = currmat[i]->GetName();
880       for(G4int j=0; j<nIons; ++j) {              1105       for(G4int j=0; j<nIons; ++j) {
881         if(nam == materialName[j]) { materialL    1106         if(nam == materialName[j]) { materialList[j] = currmat[i]; }
882       }                                           1107       }
883     }                                             1108     }
884   }                                               1109   }
885 }                                                 1110 }
886                                                   1111 
887 //....oooOO0OOooo........oooOO0OOooo........oo    1112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
888                                                   1113 
889 void G4EmCorrections::Initialise()                1114 void G4EmCorrections::Initialise()
890 {                                                 1115 {
                                                   >> 1116   if(G4Threading::IsMasterThread()) { isMaster = true; }
                                                   >> 1117 
891   // Z^3 Barkas effect in the stopping power o    1118   // Z^3 Barkas effect in the stopping power of matter for charged particles
892   // J.C Ashley and R.H.Ritchie                   1119   // J.C Ashley and R.H.Ritchie
893   // Physical review B Vol.5 No.7 1 April 1972    1120   // 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;                                     1121   G4int i, j;
898   static const G4double fTable[47][2] = {         1122   static const G4double fTable[47][2] = {
899    { 0.02, 21.5},                                 1123    { 0.02, 21.5},
900    { 0.03, 20.0},                                 1124    { 0.03, 20.0},
901    { 0.04, 18.0},                                 1125    { 0.04, 18.0},
902    { 0.05, 15.6},                                 1126    { 0.05, 15.6},
903    { 0.06, 15.0},                                 1127    { 0.06, 15.0},
904    { 0.07, 14.0},                                 1128    { 0.07, 14.0},
905    { 0.08, 13.5},                                 1129    { 0.08, 13.5},
906    { 0.09, 13.},                                  1130    { 0.09, 13.},
907    { 0.1,  12.2},                                 1131    { 0.1,  12.2},
908    { 0.2,  9.25},                                 1132    { 0.2,  9.25},
909    { 0.3,  7.0},                                  1133    { 0.3,  7.0},
910    { 0.4,  6.0},                                  1134    { 0.4,  6.0},
911    { 0.5,  4.5},                                  1135    { 0.5,  4.5},
912    { 0.6,  3.5},                                  1136    { 0.6,  3.5},
913    { 0.7,  3.0},                                  1137    { 0.7,  3.0},
914    { 0.8,  2.5},                                  1138    { 0.8,  2.5},
915    { 0.9,  2.0},                                  1139    { 0.9,  2.0},
916    { 1.0,  1.7},                                  1140    { 1.0,  1.7},
917    { 1.2,  1.2},                                  1141    { 1.2,  1.2},
918    { 1.3,  1.0},                                  1142    { 1.3,  1.0},
919    { 1.4,  0.86},                                 1143    { 1.4,  0.86},
920    { 1.5,  0.7},                                  1144    { 1.5,  0.7},
921    { 1.6,  0.61},                                 1145    { 1.6,  0.61},
922    { 1.7,  0.52},                                 1146    { 1.7,  0.52},
923    { 1.8,  0.5},                                  1147    { 1.8,  0.5},
924    { 1.9,  0.43},                                 1148    { 1.9,  0.43},
925    { 2.0,  0.42},                                 1149    { 2.0,  0.42},
926    { 2.1,  0.3},                                  1150    { 2.1,  0.3},
927    { 2.4,  0.2},                                  1151    { 2.4,  0.2},
928    { 3.0,  0.13},                                 1152    { 3.0,  0.13},
929    { 3.08, 0.1},                                  1153    { 3.08, 0.1},
930    { 3.1,  0.09},                                 1154    { 3.1,  0.09},
931    { 3.3,  0.08},                                 1155    { 3.3,  0.08},
932    { 3.5,  0.07},                                 1156    { 3.5,  0.07},
933    { 3.8,  0.06},                                 1157    { 3.8,  0.06},
934    { 4.0,  0.051},                                1158    { 4.0,  0.051},
935    { 4.1,  0.04},                                 1159    { 4.1,  0.04},
936    { 4.8,  0.03},                                 1160    { 4.8,  0.03},
937    { 5.0,  0.024},                                1161    { 5.0,  0.024},
938    { 5.1,  0.02},                                 1162    { 5.1,  0.02},
939    { 6.0,  0.013},                                1163    { 6.0,  0.013},
940    { 6.5,  0.01},                                 1164    { 6.5,  0.01},
941    { 7.0,  0.009},                                1165    { 7.0,  0.009},
942    { 7.1,  0.008},                                1166    { 7.1,  0.008},
943    { 8.0,  0.006},                                1167    { 8.0,  0.006},
944    { 9.0,  0.0032},                               1168    { 9.0,  0.0032},
945    { 10.0, 0.0025} };                             1169    { 10.0, 0.0025} };
946                                                   1170 
947   sBarkasCorr = new G4PhysicsFreeVector(47, fa << 1171   BarkasCorr = new G4LPhysicsFreeVector(47, 0.02, 10.);
948   for(i=0; i<47; ++i) { sBarkasCorr->PutValues << 1172   for(i=0; i<47; ++i) { BarkasCorr->PutValues(i, fTable[i][0], fTable[i][1]); }
                                                   >> 1173   BarkasCorr->SetSpline(true);
949                                                   1174 
950   const G4double SK[20] = {1.9477, 1.9232, 1.8 << 1175   static const G4double SK[20] = {1.9477, 1.9232, 1.8996, 1.8550, 1.8137,
951                            1.7754, 1.7396, 1.7    1176                            1.7754, 1.7396, 1.7223, 1.7063, 1.6752,
952                            1.6461, 1.6189, 1.5    1177                            1.6461, 1.6189, 1.5933, 1.5811, 1.5693,
953                            1.5467, 1.5254, 1.5    1178                            1.5467, 1.5254, 1.5053, 1.4863, 1.4772};
954   const G4double TK[20] = {2.5222, 2.5125, 2.5 << 1179   static const G4double TK[20] = {2.5222, 2.5125, 2.5026, 2.4821, 2.4608,
955                            2.4388, 2.4163, 2.4    1180                            2.4388, 2.4163, 2.4044, 2.3933, 2.3701,
956                            2.3466, 2.3229, 2.2    1181                            2.3466, 2.3229, 2.2992, 2.2872, 2.2753,
957                            2.2515, 2.2277, 2.2    1182                            2.2515, 2.2277, 2.2040, 2.1804, 2.1686};
958                                                   1183 
959   const G4double SL[26] = {15.3343, 13.9389, 1 << 1184   static const G4double SL[26] = {15.3343, 13.9389, 12.7909, 11.8343, 11.0283,
960                            10.3424, 10.0371,      1185                            10.3424, 10.0371,  9.7537,  9.2443,  8.8005,
961                            8.4114,  8.0683,       1186                            8.4114,  8.0683,   7.9117, 7.7641, 7.4931,
962                            7.2506,  7.0327,       1187                            7.2506,  7.0327,   6.8362, 6.7452, 6.6584,
963                            6.4969,  6.3498,       1188                            6.4969,  6.3498,   6.2154, 6.0923, 6.0345, 5.9792};
964   const G4double TL[26] = {35.0669, 33.4344, 3 << 1189   static const G4double TL[26] = {35.0669, 33.4344, 32.0073, 30.7466, 29.6226,
965                            28.6128, 28.1449, 2    1190                            28.6128, 28.1449, 27.6991, 26.8674, 26.1061,
966                            25.4058, 24.7587, 2    1191                            25.4058, 24.7587, 24.4531, 24.1583, 23.5992,
967                            23.0771, 22.5880, 2    1192                            23.0771, 22.5880, 22.1285, 21.9090, 21.6958,
968                            21.2872, 20.9006, 2    1193                            21.2872, 20.9006, 20.5341, 20.1859, 20.0183, 19.8546};
969                                                   1194 
970   const G4double bk1[29][11] = {               << 1195   static const G4double bk1[29][11] = { 
971   {0.005, 1.34782E-8, 1.46132E-8, 1.72179E-8,     1196   {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,     1197   {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    1198   {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,     1199   {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    1200   {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    1201   {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    1202   {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    1203   {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    1204   {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    1205   {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.    1206   {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    1207   {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.    1208   {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.    1209   {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.    1210   {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.    1211   {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.    1212   {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.    1213   {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.    1214   {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.    1215   {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.    1216   {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.    1217   {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.    1218   {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.    1219   {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.    1220   {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.    1221   {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.    1222   {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.    1223   {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    1224   {10.0, 5.32590, 5.35848, 5.42560, 5.49547, 5.56830, 5.64429, 5.68353, 5.72366, 5.80666, 5.89359}
1000   };                                             1225   }; 
1001                                                  1226 
1002   const G4double bk2[29][11] = {              << 1227   static const G4double bk2[29][11] = { 
1003   {0.005, 5.98040E-8, 7.25636E-8, 8.00602E-8,    1228   {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,    1229   {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,     1230   {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,    1231   {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,     1232   {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,     1233   {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,     1234   {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,     1235   {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,     1236   {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,     1237   {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    1238   {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,     1239   {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    1240   {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    1241   {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    1242   {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    1243   {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    1244   {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    1245   {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    1246   {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    1247   {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    1248   {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    1249   {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    1250   {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    1251   {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    1252   {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    1253   {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    1254   {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    1255   {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,     1256   {10.0, 5.98474, 6.08046, 6.13015, 6.18112, 6.28715, 6.39903, 6.51728, 6.64249, 6.70792, 6.77535}
1032   };                                             1257   }; 
1033                                                  1258 
1034   const G4double bls1[28][10] = {             << 1259   static const G4double bls1[28][10] = { 
1035   {0.005, 2.4111E-4, 2.5612E-4, 2.7202E-4, 3.    1260   {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.    1261   {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    1262   {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.    1263   {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    1264   {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    1265   {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    1266   {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    1267   {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    1268   {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    1269   {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    1270   {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    1271   {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    1272   {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    1273   {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    1274   {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    1275   {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    1276   {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    1277   {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    1278   {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    1279   {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    1280   {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    1281   {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    1282   {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    1283   {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    1284   {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    1285   {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    1286   {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    1287   {7.0, 6.8634, 6.9194, 6.9767, 7.0957, 7.2208, 7.3526, 7.4915, 7.5639, 7.6384}
1063   };                                             1288   };
1064                                                  1289  
1065   const G4double bls2[28][10] = {             << 1290   static const G4double bls2[28][10] = { 
1066   {0.005, 5.4561E-4, 6.0905E-4, 6.7863E-4, 7.    1291   {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.    1292   {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    1293   {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.    1294   {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    1295   {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    1296   {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    1297   {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    1298   {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    1299   {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    1300   {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    1301   {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    1302   {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    1303   {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    1304   {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    1305   {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    1306   {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    1307   {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    1308   {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    1309   {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    1310   {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    1311   {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    1312   {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    1313   {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    1314   {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    1315   {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    1316   {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    1317   {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    1318   {7.0, 7.7938, 7.9588, 8.1342, 8.3211, 8.4193, 8.5209, 8.7350, 8.9651, 9.2133}
1094   };                                             1319   }; 
1095                                                  1320  
1096   const G4double bls3[28][9] = {              << 1321   static const G4double bls3[28][9] = { 
1097   {0.005, 1.2895E-3, 1.3670E-3, 1.4524E-3, 1.    1322   {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.    1323   {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    1324   {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    1325   {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    1326   {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    1327   {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    1328   {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    1329   {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    1330   {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    1331   {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    1332   {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    1333   {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    1334   {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    1335   {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    1336   {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    1337   {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    1338   {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    1339   {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    1340   {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    1341   {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    1342   {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    1343   {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    1344   {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    1345   {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    1346   {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    1347   {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    1348   {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    1349   {7.0, 9.4819, 9.6248, 9.7739, 10.0926, 10.4423, 10.8282, 11.2565, 11.7356}
1125   };                                             1350   }; 
1126                                                  1351 
1127   const G4double bll1[28][10] = {             << 1352   static const G4double bll1[28][10] = { 
1128   {0.005, 3.6324E-5, 4.0609E-5, 4.5430E-5, 5.    1353   {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.    1354   {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    1355   {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.    1356   {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    1357   {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    1358   {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    1359   {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    1360   {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    1361   {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    1362   {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    1363   {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    1364   {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    1365   {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    1366   {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    1367   {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    1368   {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    1369   {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    1370   {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    1371   {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    1372   {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    1373   {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    1374   {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    1375   {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    1376   {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    1377   {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    1378   {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    1379   {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    1380   {7.0, 7.7362, 7.8079, 7.8821, 8.0383, 8.2061, 8.3866, 8.5816, 8.6850, 8.7927}
1156   };                                             1381   }; 
1157                                                  1382 
1158   const G4double bll2[28][10] = {             << 1383   static const G4double bll2[28][10] = { 
1159   {0.005, 1.8339E-4, 2.3330E-4, 2.9738E-4, 3.    1384   {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.    1385   {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    1386   {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.    1387   {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    1388   {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    1389   {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    1390   {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    1391   {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    1392   {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    1393   {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    1394   {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    1395   {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    1396   {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    1397   {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    1398   {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    1399   {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    1400   {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    1401   {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    1402   {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    1403   {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    1404   {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    1405   {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    1406   {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    1407   {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    1408   {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    1409   {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    1410   {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    1411   {7.0, 9.0221, 9.2724, 9.5464, 9.8477, 10.0099, 10.1805, 10.5499, 10.9622, 11.4250}
1187   };                                             1412   }; 
1188                                                  1413 
1189   const G4double bll3[28][9] = {              << 1414   static const G4double bll3[28][9] = { 
1190   {0.005, 1.3190E-3, 1.4961E-3, 1.6974E-3, 2.    1415   {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.    1416   {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    1417   {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.    1418   {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    1419   {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    1420   {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    1421   {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    1422   {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    1423   {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    1424   {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    1425   {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    1426   {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    1427   {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    1428   {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    1429   {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    1430   {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    1431   {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    1432   {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    1433   {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    1434   {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    1435   {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    1436   {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    1437   {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    1438   {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    1439   {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    1440   {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    1441   {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    1442   {7.0, 11.9480, 12.2357, 12.5432, 13.2260, 14.0164, 14.9404, 16.0330, 17.3420}
1218   };                                             1443   };
1219                                                  1444                              
1220   G4double b, bs;                                1445   G4double b, bs; 
1221   for(i=0; i<nEtaK; ++i) {                       1446   for(i=0; i<nEtaK; ++i) {
1222                                                  1447 
1223     G4double et = Eta[i];                        1448     G4double et = Eta[i];
1224     G4double loget = G4Log(et);                  1449     G4double loget = G4Log(et);
1225                                                  1450 
1226     for(j=0; j<nK; ++j) {                        1451     for(j=0; j<nK; ++j) {
1227                                                  1452 
1228       if(j < 10) { b = bk2[i][10-j]; }           1453       if(j < 10) { b = bk2[i][10-j]; }
1229       else       { b = bk1[i][20-j]; }           1454       else       { b = bk1[i][20-j]; }
1230                                                  1455 
1231       CK[j][i] = SK[j]*loget + TK[j] - b;        1456       CK[j][i] = SK[j]*loget + TK[j] - b;
1232                                                  1457 
1233       if(i == nEtaK-1) {                         1458       if(i == nEtaK-1) { 
1234         ZK[j] = et*(et*et*CK[j][i] - et*UK[j]    1459         ZK[j] = et*(et*et*CK[j][i] - et*UK[j] - VK[j]); 
1235         //G4cout << "i= " << i << " j= " << j    1460         //G4cout << "i= " << i << " j= " << j 
1236         //       << " CK[j][i]= " <<  CK[j][i    1461         //       << " CK[j][i]= " <<  CK[j][i]
1237         //       << " ZK[j]= " << ZK[j] << "     1462         //       << " ZK[j]= " << ZK[j] << "  b= " << b << G4endl;  
1238       }                                          1463       } 
1239     }                                            1464     }
1240     //G4cout << G4endl;                          1465     //G4cout << G4endl;
1241     if(i < nEtaL) {                              1466     if(i < nEtaL) {
1242       //G4cout << "  LShell:" <<G4endl;          1467       //G4cout << "  LShell:" <<G4endl;
1243       for(j=0; j<nL; ++j) {                      1468       for(j=0; j<nL; ++j) {
1244                                                  1469 
1245         if(j < 8) {                              1470         if(j < 8) {
1246           bs = bls3[i][8-j];                     1471           bs = bls3[i][8-j];
1247           b  = bll3[i][8-j];                     1472           b  = bll3[i][8-j];
1248         } else if(j < 17) {                      1473         } else if(j < 17) {
1249           bs = bls2[i][17-j];                    1474           bs = bls2[i][17-j];
1250           b  = bll2[i][17-j];                    1475           b  = bll2[i][17-j];
1251         } else {                                 1476         } else {
1252           bs = bls1[i][26-j];                    1477           bs = bls1[i][26-j];
1253           b  = bll1[i][26-j];                    1478           b  = bll1[i][26-j];
1254         }                                        1479         }
1255         G4double c = SL[j]*loget + TL[j];        1480         G4double c = SL[j]*loget + TL[j]; 
1256         CL[j][i] = c - bs - 3.0*b;               1481         CL[j][i] = c - bs - 3.0*b;
1257         if(i == nEtaL-1) {                       1482         if(i == nEtaL-1) { 
1258           VL[j] = et*(et*CL[j][i] - UL[j]);      1483           VL[j] = et*(et*CL[j][i] - UL[j]); 
1259           //G4cout << "i= " << i << " j= " <<    1484           //G4cout << "i= " << i << " j= " << j 
1260           //         << " CL[j][i]= " <<  CL[    1485           //         << " CL[j][i]= " <<  CL[j][i]
1261           //         << " VL[j]= " << VL[j] <    1486           //         << " VL[j]= " << VL[j] << " b= " << b << " bs= " << bs 
1262           //         << " et= " << et << G4en    1487           //         << " et= " << et << G4endl; 
1263           //" UL= " << UL[j] << " TL= " << TL    1488           //" UL= " << UL[j] << " TL= " << TL[j] << " SL= " << SL[j] <<G4endl;  
1264         }                                        1489         }
1265       }                                          1490       }
1266       //G4cout << G4endl;                        1491       //G4cout << G4endl;
1267     }                                            1492     }
1268   }                                              1493   }
1269                                                  1494 
1270   const G4double xzk[34] = { 11.7711,         << 1495   static const G4double xzk[34] = { 11.7711,
1271     13.3669, 15.5762, 17.1715, 18.7667, 20.85    1496     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    1497     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    1498     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    1499                              93.4549, 96.2753, 99.709};
1275   const G4double yzk[34] = { 0.70663,         << 1500   static const G4double yzk[34] = { 0.70663,
1276     0.72033, 0.73651, 0.74647, 0.75518, 0.763    1501     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    1502     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    1503     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    1504                              0.86891, 0.87011, 0.87381};
1280                                                  1505 
1281   const G4double xzl[36] = { 15.5102,         << 1506   static const G4double xzl[36] = { 15.5102,
1282     16.7347, 17.9592, 19.551, 21.0204, 22.612    1507     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    1508     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    1509     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,    1510                              91.551, 94.2449, 96.449, 98.4082, 99.7551};
1286   const G4double yzl[36] = { 0.29875,         << 1511   static const G4double yzl[36] = { 0.29875,
1287     0.31746, 0.33368, 0.35239, 0.36985, 0.387    1512     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    1513     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    1514     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    1515                               0.6368, 0.64054, 0.64304, 0.64428, 0.64678};
1291                                                  1516 
1292   sThetaK = new G4PhysicsFreeVector(34, false << 1517   ThetaK = new G4LPhysicsFreeVector(34, xzk[0], xzk[33]);
1293   for(i=0; i<34; ++i) { sThetaK->PutValues(i, << 1518   ThetaL = new G4LPhysicsFreeVector(36, xzl[0], xzl[35]);
1294   sThetaL = new G4PhysicsFreeVector(36, false << 1519   for(i=0; i<34; ++i) { ThetaK->PutValues(i, xzk[i], yzk[i]); }
1295   for(i=0; i<36; ++i) { sThetaL->PutValues(i, << 1520   for(i=0; i<36; ++i) { ThetaL->PutValues(i, xzl[i], yzl[i]); }
                                                   >> 1521   ThetaK->SetSpline(true);
                                                   >> 1522   ThetaL->SetSpline(true);
1296 }                                                1523 }
1297                                                  1524 
1298 //....oooOO0OOooo........oooOO0OOooo........o    1525 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
1299                                                  1526 
1300                                                  1527