Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/src/G4hIonEffChargeSquare.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/lowenergy/src/G4hIonEffChargeSquare.cc (Version 11.3.0) and /processes/electromagnetic/lowenergy/src/G4hIonEffChargeSquare.cc (Version 5.0.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
 26 //                                                 23 //
 27 // -------------------------------------------     24 // -------------------------------------------------------------------
 28 //                                                 25 //
 29 // GEANT4 Class file                               26 // GEANT4 Class file
 30 //                                                 27 //
 31 //                                                 28 //
 32 // File name:     G4hIonEffChargeSquare            29 // File name:     G4hIonEffChargeSquare
 33 //                                                 30 //
 34 // Author:        V.Ivanchenko (Vladimir.Ivanc     31 // Author:        V.Ivanchenko (Vladimir.Ivanchenko@cern.ch)
 35 //                                             <<  32 // 
 36 // Creation date: 20 July 2000                     33 // Creation date: 20 July 2000
 37 //                                                 34 //
 38 // Modifications:                              <<  35 // Modifications: 
 39 // 20/07/2000  V.Ivanchenko First implementati     36 // 20/07/2000  V.Ivanchenko First implementation
 40 // 18/06/2001  V.Ivanchenko Continuation for e     37 // 18/06/2001  V.Ivanchenko Continuation for eff.charge (small change of y)
 41 // 08/10/2002  V.Ivanchenko The charge of the  <<  38 // 08/10/2002  V.Ivanchenko The charge of the nucleus is used not charge of 
 42 //                          DynamicParticle        39 //                          DynamicParticle
 43 //                                                 40 //
 44 // Class Description:                          <<  41 // Class Description: 
 45 //                                                 42 //
 46 // Ion effective charge model                      43 // Ion effective charge model
 47 // J.F.Ziegler and J.M.Manoyan, The stopping o     44 // J.F.Ziegler and J.M.Manoyan, The stopping of ions in compaunds,
 48 // Nucl. Inst. & Meth. in Phys. Res. B35 (1988     45 // Nucl. Inst. & Meth. in Phys. Res. B35 (1988) 215-228.
 49 //                                                 46 //
 50 // Class Description: End                      <<  47 // Class Description: End 
 51 //                                                 48 //
 52 // -------------------------------------------     49 // -------------------------------------------------------------------
 53 //                                                 50 //
 54 //....oooOO0OOooo........oooOO0OOooo........oo     51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 55                                                    52 
 56 #include "G4hIonEffChargeSquare.hh"                53 #include "G4hIonEffChargeSquare.hh"
 57 #include "G4PhysicalConstants.hh"              << 
 58 #include "G4SystemOfUnits.hh"                  << 
 59 #include "G4DynamicParticle.hh"                    54 #include "G4DynamicParticle.hh"
 60 #include "G4ParticleDefinition.hh"                 55 #include "G4ParticleDefinition.hh"
 61 #include "G4Material.hh"                           56 #include "G4Material.hh"
 62 #include "G4Element.hh"                            57 #include "G4Element.hh"
 63 #include "G4Exp.hh"                            << 
 64                                                    58 
 65 //....oooOO0OOooo........oooOO0OOooo........oo     59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 66                                                    60 
 67 G4hIonEffChargeSquare::G4hIonEffChargeSquare(c     61 G4hIonEffChargeSquare::G4hIonEffChargeSquare(const G4String& name)
 68   : G4VLowEnergyModel(name),                   <<  62   : G4VLowEnergyModel(name), 
 69     theHeMassAMU(4.0026)                           63     theHeMassAMU(4.0026)
 70 {;}                                                64 {;}
 71                                                    65 
 72 //....oooOO0OOooo........oooOO0OOooo........oo     66 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 73                                                    67 
 74 G4hIonEffChargeSquare::~G4hIonEffChargeSquare( <<  68 G4hIonEffChargeSquare::~G4hIonEffChargeSquare() 
 75 {;}                                                69 {;}
 76                                                    70 
 77 //....oooOO0OOooo........oooOO0OOooo........oo     71 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 78                                                    72 
 79 G4double G4hIonEffChargeSquare::TheValue(const     73 G4double G4hIonEffChargeSquare::TheValue(const G4DynamicParticle* particle,
 80                                    const G4Mat <<  74                                    const G4Material* material) 
 81 {                                                  75 {
 82   G4double energy = particle->GetKineticEnergy     76   G4double energy = particle->GetKineticEnergy() ;
 83   G4double particleMass = particle->GetMass()      77   G4double particleMass = particle->GetMass() ;
 84   G4double charge = (particle->GetDefinition()     78   G4double charge = (particle->GetDefinition()->GetPDGCharge())/eplus ;
 85                                                    79 
 86   G4double q = IonEffChargeSquare(material,ene     80   G4double q = IonEffChargeSquare(material,energy,particleMass,charge) ;
 87                                                    81 
 88   return q ;                                       82   return q ;
 89 }                                                  83 }
 90                                                    84 
 91 //....oooOO0OOooo........oooOO0OOooo........oo     85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 92                                                    86 
 93 G4double G4hIonEffChargeSquare::TheValue(const     87 G4double G4hIonEffChargeSquare::TheValue(const G4ParticleDefinition* aParticle,
 94                                    const G4Mat     88                                    const G4Material* material,
 95            G4double kineticEnergy)             <<  89                                                G4double kineticEnergy) 
 96 {                                                  90 {
 97   //  SetRateMass(aParticle) ;                     91   //  SetRateMass(aParticle) ;
 98   G4double particleMass = aParticle->GetPDGMas     92   G4double particleMass = aParticle->GetPDGMass() ;
 99   G4double charge = (aParticle->GetPDGCharge()     93   G4double charge = (aParticle->GetPDGCharge())/eplus ;
100                                                    94 
101   G4double q = IonEffChargeSquare(material,kin     95   G4double q = IonEffChargeSquare(material,kineticEnergy,particleMass,charge) ;
102                                                    96 
103   return q ;                                       97   return q ;
104 }                                                  98 }
105                                                    99 
106 //....oooOO0OOooo........oooOO0OOooo........oo    100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
107                                                   101 
108 G4double G4hIonEffChargeSquare::HighEnergyLimi    102 G4double G4hIonEffChargeSquare::HighEnergyLimit(
109             const G4ParticleDefinition* ,      << 103                              const G4ParticleDefinition* aParticle,
110             const G4Material* ) const          << 104                              const G4Material* material) const
111 {                                                 105 {
112   return 1.0*TeV ;                                106   return 1.0*TeV ;
113 }                                                 107 }
114                                                   108 
115 //....oooOO0OOooo........oooOO0OOooo........oo    109 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
116                                                   110 
117 G4double G4hIonEffChargeSquare::LowEnergyLimit    111 G4double G4hIonEffChargeSquare::LowEnergyLimit(
118                  const G4ParticleDefinition* , << 112                           const G4ParticleDefinition* aParticle,
119                  const G4Material* ) const     << 113                           const G4Material* material) const
120 {                                                 114 {
121   return 0.0 ;                                    115   return 0.0 ;
122 }                                                 116 }
123                                                   117 
124 //....oooOO0OOooo........oooOO0OOooo........oo    118 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
125                                                   119 
126 G4double G4hIonEffChargeSquare::HighEnergyLimi    120 G4double G4hIonEffChargeSquare::HighEnergyLimit(
127             const G4ParticleDefinition* ) cons << 121                           const G4ParticleDefinition* aParticle) const
128 {                                                 122 {
129   return 1.0*TeV ;                                123   return 1.0*TeV ;
130 }                                                 124 }
131                                                   125 
132 //....oooOO0OOooo........oooOO0OOooo........oo    126 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
133                                                   127 
134 G4double G4hIonEffChargeSquare::LowEnergyLimit    128 G4double G4hIonEffChargeSquare::LowEnergyLimit(
135                  const G4ParticleDefinition* ) << 129                           const G4ParticleDefinition* aParticle) const
136 {                                                 130 {
137   return 0.0 ;                                    131   return 0.0 ;
138 }                                                 132 }
139                                                   133 
140 //....oooOO0OOooo........oooOO0OOooo........oo    134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
141                                                << 135  
142 G4bool G4hIonEffChargeSquare::IsInCharge(const << 136 G4bool G4hIonEffChargeSquare::IsInCharge(const G4DynamicParticle* particle,
143                              const G4Material* << 137                              const G4Material* material) const
144 {                                                 138 {
145   return true ;                                   139   return true ;
146 }                                                 140 }
147                                                   141 
148 //....oooOO0OOooo........oooOO0OOooo........oo    142 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
149                                                << 143  
150 G4bool G4hIonEffChargeSquare::IsInCharge(const << 144 G4bool G4hIonEffChargeSquare::IsInCharge(const G4ParticleDefinition* aParticle,
151                                    const G4Mat << 145                                    const G4Material* material) const
152 {                                                 146 {
153   return true ;                                   147   return true ;
154 }                                                 148 }
155                                                   149 
156 //....oooOO0OOooo........oooOO0OOooo........oo    150 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
157                                                   151 
158 G4double G4hIonEffChargeSquare::IonEffChargeSq    152 G4double G4hIonEffChargeSquare::IonEffChargeSquare(
159                const G4Material* material,     << 153                                 const G4Material* material,
160                G4double kineticEnergy,         << 154                                       G4double kineticEnergy,
161                G4double particleMass,          << 155                                       G4double particleMass,
162                G4double ionCharge) const       << 156                                       G4double ionCharge) const
163 {                                                 157 {
164   // The aproximation of ion effective charge  << 158   // The aproximation of ion effective charge from: 
165   // J.F.Ziegler, J.P. Biersack, U. Littmark      159   // J.F.Ziegler, J.P. Biersack, U. Littmark
166   // The Stopping and Range of Ions in Matter,    160   // The Stopping and Range of Ions in Matter,
167   // Vol.1, Pergamon Press, 1985                  161   // Vol.1, Pergamon Press, 1985
168                                                   162 
169   // Fast ions or hadrons                         163   // Fast ions or hadrons
170   G4double reducedEnergy = kineticEnergy * pro    164   G4double reducedEnergy = kineticEnergy * proton_mass_c2/particleMass ;
171   if(reducedEnergy < 1.0*keV) reducedEnergy =  << 165   if( (reducedEnergy > ionCharge * 10.0 * MeV) || 
172   if( (reducedEnergy > ionCharge * 10.0 * MeV) << 
173       (ionCharge < 1.5) ) return ionCharge*ion    166       (ionCharge < 1.5) ) return ionCharge*ionCharge ;
174                                                   167 
175   static const G4double vFermi[92] = {         << 168   static G4double vFermi[92] = {
176     1.0309,  0.15976, 0.59782, 1.0781,  1.0486    169     1.0309,  0.15976, 0.59782, 1.0781,  1.0486,  1.0,     1.058,   0.93942, 0.74562, 0.3424,
177     0.45259, 0.71074, 0.90519, 0.97411, 0.9718    170     0.45259, 0.71074, 0.90519, 0.97411, 0.97184, 0.89852, 0.70827, 0.39816, 0.36552, 0.62712,
178     0.81707, 0.9943,  1.1423,  1.2381,  1.1222    171     0.81707, 0.9943,  1.1423,  1.2381,  1.1222,  0.92705, 1.0047,  1.2,     1.0661,  0.97411,
179     0.84912, 0.95,    1.0903,  1.0429,  0.4971    172     0.84912, 0.95,    1.0903,  1.0429,  0.49715, 0.37755, 0.35211, 0.57801, 0.77773, 1.0207,
180     1.029,   1.2542,  1.122,   1.1241,  1.0882    173     1.029,   1.2542,  1.122,   1.1241,  1.0882,  1.2709,  1.2542,  0.90094, 0.74093, 0.86054,
181     0.93155, 1.0047,  0.55379, 0.43289, 0.3263    174     0.93155, 1.0047,  0.55379, 0.43289, 0.32636, 0.5131,  0.695,   0.72591, 0.71202, 0.67413,
182     0.71418, 0.71453, 0.5911,  0.70263, 0.6804    175     0.71418, 0.71453, 0.5911,  0.70263, 0.68049, 0.68203, 0.68121, 0.68532, 0.68715, 0.61884,
183     0.71801, 0.83048, 1.1222,  1.2381,  1.045,    176     0.71801, 0.83048, 1.1222,  1.2381,  1.045,   1.0733,  1.0953,  1.2381,  1.2879,  0.78654,
184     0.66401, 0.84912, 0.88433, 0.80746, 0.4335    177     0.66401, 0.84912, 0.88433, 0.80746, 0.43357, 0.41923, 0.43638, 0.51464, 0.73087, 0.81065,
185     1.9578,  1.0257} ;                            178     1.9578,  1.0257} ;
186                                                   179 
187   static const G4double c[6] = {0.2865,  0.126 << 180   static G4double lFactor[92] = {
                                                   >> 181     1.0,  1.0,  1.1,  1.06, 1.01, 1.03, 1.04, 0.99, 0.95, 0.9,
                                                   >> 182     0.82, 0.81, 0.83, 0.88, 1.0,  0.95, 0.97, 0.99, 0.98, 0.97,
                                                   >> 183     0.98, 0.97, 0.96, 0.93, 0.91, 0.9,  0.88, 0.9,  0.9,  0.9,
                                                   >> 184     0.9,  0.85, 0.9,  0.9,  0.91, 0.92, 0.9,  0.9,  0.9,  0.9,
                                                   >> 185     0.9,  0.88, 0.9,  0.88, 0.88, 0.9,  0.9,  0.88, 0.9,  0.9,
                                                   >> 186     0.9,  0.9,  0.96, 1.2,  0.9,  0.88, 0.88, 0.85, 0.9,  0.9, 
                                                   >> 187     0.92, 0.95, 0.99, 1.03, 1.05, 1.07, 1.08, 1.1,  1.08, 1.08,
                                                   >> 188     1.08, 1.08, 1.09, 1.09, 1.1,  1.11, 1.12, 1.13, 1.14, 1.15,
                                                   >> 189     1.17, 1.2,  1.18, 1.17, 1.17, 1.16, 1.16, 1.16, 1.16, 1.16,
                                                   >> 190     1.16, 1.16} ; 
                                                   >> 191 
                                                   >> 192   static G4double c[6] = {0.2865,  0.1266, -0.001429,
188                           0.02402,-0.01135, 0.    193                           0.02402,-0.01135, 0.001475} ;
189                                                   194 
190   // get elements in the actual material,         195   // get elements in the actual material,
191   const G4ElementVector* theElementVector = ma    196   const G4ElementVector* theElementVector = material->GetElementVector() ;
192   const G4double* theAtomicNumDensityVector =  << 197   const G4double* theAtomicNumDensityVector = 
193                          material->GetAtomicNu    198                          material->GetAtomicNumDensityVector() ;
194   const G4int NumberOfElements = (G4int)materi << 199   const G4int NumberOfElements = material->GetNumberOfElements() ;
195                                                << 200   
196   //  loop for the elements in the material       201   //  loop for the elements in the material
197   //  to find out average values Z, vF, lF        202   //  to find out average values Z, vF, lF
198   G4double z = 0.0, vF = 0.0, norm = 0.0 ;     << 203   G4double z = 0.0, vF = 0.0, lF = 0.0, norm = 0.0 ; 
199                                                   204 
200   if( 1 == NumberOfElements ) {                   205   if( 1 == NumberOfElements ) {
201     z = material->GetZ() ;                        206     z = material->GetZ() ;
202     G4int iz = G4int(z) - 1 ;                     207     G4int iz = G4int(z) - 1 ;
203     if(iz < 0) iz = 0 ;                           208     if(iz < 0) iz = 0 ;
204     else if(iz > 91) iz = 91 ;                    209     else if(iz > 91) iz = 91 ;
205     vF   = vFermi[iz] ;                           210     vF   = vFermi[iz] ;
                                                   >> 211     lF   = lFactor[iz] ;
206                                                   212 
207   } else {                                        213   } else {
208     for (G4int iel=0; iel<NumberOfElements; ie    214     for (G4int iel=0; iel<NumberOfElements; iel++)
209       {                                           215       {
210         const G4Element* element = (*theElemen    216         const G4Element* element = (*theElementVector)[iel] ;
211         G4double z2 = element->GetZ() ;           217         G4double z2 = element->GetZ() ;
212         const G4double weight = theAtomicNumDe    218         const G4double weight = theAtomicNumDensityVector[iel] ;
213         norm += weight ;                          219         norm += weight ;
214         z    += z2 * weight ;                     220         z    += z2 * weight ;
215         G4int iz = G4int(z2) - 1 ;                221         G4int iz = G4int(z2) - 1 ;
216         if(iz < 0) iz = 0 ;                       222         if(iz < 0) iz = 0 ;
217         else if(iz > 91) iz =91 ;                 223         else if(iz > 91) iz =91 ;
218         vF   += vFermi[iz] * weight ;             224         vF   += vFermi[iz] * weight ;
                                                   >> 225         lF   += lFactor[iz] * weight ;
219       }                                           226       }
220     if (norm > 0.0) {                          << 227     z  /= norm ;
221       z  /= norm ;                             << 228     vF /= norm ;
222       vF /= norm ;                             << 229     lF /= norm ;
223     }                                          << 
224   }                                               230   }
225                                                   231 
226   // Helium ion case                              232   // Helium ion case
227   if( ionCharge < 2.5 ) {                         233   if( ionCharge < 2.5 ) {
228                                                   234 
229     G4double e = std::log(std::max(1.0, kineti << 235     G4double e = log(G4std::max(1.0, kineticEnergy / (keV*theHeMassAMU) )) ; 
230     G4double x = c[0] ;                           236     G4double x = c[0] ;
231     G4double y = 1.0 ;                            237     G4double y = 1.0 ;
232     for (G4int i=1; i<6; i++) {                   238     for (G4int i=1; i<6; i++) {
233       y *= e ;                                    239       y *= e ;
234       x += y * c[i] ;                             240       x += y * c[i] ;
235     }                                             241     }
236     G4double q = 7.6 -  e ;                    << 242     G4double q = 7.6 -  e ; 
237     q = 1.0 + ( 0.007 + 0.00005 * z ) * G4Exp( << 243     q = 1.0 + ( 0.007 + 0.00005 * z ) * exp( -q*q ) ;
238     return  4.0 * q * q * (1.0 - G4Exp(-x)) ;  << 244     return  4.0 * q * q * (1.0 - exp(-x)) ;
239                                                   245 
240     // Heavy ion case                             246     // Heavy ion case
241   } else {                                        247   } else {
242                                                   248 
243     // v1 is ion velocity in vF unit              249     // v1 is ion velocity in vF unit
244     G4double v1{0.0}, v2{0.0};                 << 250     G4double v1 = sqrt( reducedEnergy / (25.0 * keV) )/ vF ;
245     if (vF > 0.0) {                            << 
246       v1 = std::sqrt( reducedEnergy / (25.0 *  << 
247       v2 = 1.0/ (vF*vF);                       << 
248     }                                          << 
249     G4double y ;                                  251     G4double y ;
250     G4double z13 = std::pow(ionCharge, 0.3333) << 252     G4double z13 = pow(ionCharge, 0.3333) ;
251                                                   253 
252     // Faster than Fermi velocity                 254     // Faster than Fermi velocity
253     if ( v1 > 1.0 ) {                             255     if ( v1 > 1.0 ) {
254       y = vF * v1 * ( 1.0 + 0.2 / (v1*v1) ) /     256       y = vF * v1 * ( 1.0 + 0.2 / (v1*v1) ) / (z13*z13) ;
255                                                   257 
256       // Slower than Fermi velocity               258       // Slower than Fermi velocity
257     } else {                                      259     } else {
258       y = 0.6923 * vF * (1.0 + 2.0*v1*v1/3.0 +    260       y = 0.6923 * vF * (1.0 + 2.0*v1*v1/3.0 + v1*v1*v1*v1/15.0) / (z13*z13) ;
259     }                                             261     }
260                                                   262 
261     G4double y3 = std::pow(y, 0.3) ;           << 263     G4double y3 = pow(y, 0.3) ;
262     G4double q = 1.0 - G4Exp( 0.803*y3 - 1.316 << 264     G4double q = 1.0 - exp( 0.803*y3 - 1.3167*y3*y3 - 
263                             0.38157*y - 0.0089 << 265                             0.38157*y - 0.008983*y*y ) ;     
264     if( q < 0.0 ) q = 0.0 ;                       266     if( q < 0.0 ) q = 0.0 ;
265                                                   267 
266     G4double sLocal = 7.6 -  std::log(std::max << 268     G4double s = 7.6 -  log(G4std::max(1.0, reducedEnergy/keV)) ; 
267     sLocal = 1.0 + ( 0.18 + 0.0015 * z ) * G4E << 269     s = 1.0 + ( 0.18 + 0.0015 * z ) * exp( -s*s )/ (ionCharge*ionCharge) ;
268                                                   270 
269     // Screen length according to                 271     // Screen length according to
270     // J.F.Ziegler and J.M.Manoyan, The stoppi    272     // J.F.Ziegler and J.M.Manoyan, The stopping of ions in compaunds,
271     // Nucl. Inst. & Meth. in Phys. Res. B35 (    273     // Nucl. Inst. & Meth. in Phys. Res. B35 (1988) 215-228.
272                                                   274 
273     G4double lambda = 10.0 * vF * std::pow(1.0 << 275     G4double lambda = 10.0 * vF * pow(1.0-q, 0.6667) / (z13 * (6.0 + q)) ;
274     G4double qeff   = ionCharge * sLocal *     << 276     G4double qeff   = ionCharge * s *
275       ( q + 0.5*(1.0-q) * std::log(1.0 + lambd << 277       ( q + 0.5*(1.0-q) * log(1.0 + lambda*lambda) / (vF*vF) ) ;
276     if( 0.1 > qeff ) qeff = 0.1 ;              << 278     if( 1.0 > qeff ) qeff = 1.0 ; 
277     return qeff*qeff ;                         << 279     return qeff*qeff ;    
278   }                                               280   }
279 }                                                 281 }
                                                   >> 282 
                                                   >> 283 
280                                                   284