Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.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 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 //
 27 // -------------------------------------------------------------
 28 //      GEANT 4 class implementation file
 29 //
 30 //      History: New Implementation
 31 //
 32 //      ---------- G4QAOLowEnergyLoss physics process -------
 33 //                  by Stephane Chauvie, 5 May 2000
 34 // Modified:
 35 //
 36 // 24/05/2000 MGP  Modified to remove compilation warnings on Linux and DEC
 37 //                 Introduced sizes of L0, L1, L2 arrays
 38 // 23/05/2000 MGP  Made compliant to design
 39 // 02/08/2000 V.Ivanchenko Clean up according new design
 40 // 16/09/2000 S. Chauvie  Oscillator for all materials
 41 // 03/10/2000 V.Ivanchenko CodeWizard clean up
 42 // 05/11/2000 V.Ivanchenko "Aluminum" - correct name, end of cycle
 43 //            over shells, and two bugs from previous edition
 44 // 10/05/2001 V.Ivanchenko Clean up againist Linux compilation with -Wall
 45 // 13/05/2001 S. Chauvie corrected bugs
 46 // 01/06/2001 V.Ivanchenko replace names by Z, change the validity range
 47 //                         from 50 keV to 5 KeV and change sign of the
 48 //                         Barkas term
 49 // 4/06/2001 S. Chauvie  Corrected small bugs
 50 //
 51 // ************************************************************
 52 // It is the Quantal Harmonic Oscillator Model for energy loss
 53 // of slow antiproton
 54 // ************************************************************
 55 // --------------------------------------------------------------
 56 
 57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 58 
 59 #include "G4QAOLowEnergyLoss.hh"
 60 #include "G4PhysicalConstants.hh"
 61 #include "G4SystemOfUnits.hh"
 62 #include "G4DynamicParticle.hh"
 63 #include "G4Material.hh"
 64 #include "G4ParticleDefinition.hh"
 65 #include "G4AntiProton.hh"
 66 #include "G4Exp.hh"
 67 
 68 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 69 
 70 G4QAOLowEnergyLoss::G4QAOLowEnergyLoss(const G4String& name)
 71   : G4VLowEnergyModel(name)
 72 {
 73   numberOfMaterials = 6;
 74   sizeL0 = 67;
 75   sizeL1 = 22;
 76   sizeL2 = 14;
 77 }
 78 
 79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 80 
 81 G4QAOLowEnergyLoss::~G4QAOLowEnergyLoss()
 82 {;}
 83 
 84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 85 
 86 G4double G4QAOLowEnergyLoss::HighEnergyLimit(const G4ParticleDefinition* ,
 87                const G4Material* ) const
 88 {
 89   return 2.0*MeV ;
 90 }
 91 
 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 93 
 94 G4double G4QAOLowEnergyLoss::LowEnergyLimit(const G4ParticleDefinition* ,
 95               const G4Material* ) const
 96 {
 97   return 5.0*keV ;
 98 }
 99 
100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
101 
102 G4double G4QAOLowEnergyLoss::HighEnergyLimit(const G4ParticleDefinition* ) const
103 {
104   return 2.0*MeV ;
105 }
106 
107 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
108 
109 G4double G4QAOLowEnergyLoss::LowEnergyLimit(const G4ParticleDefinition* ) const
110 {
111   return 5.0*keV ;
112 }
113 
114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
115 
116 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4DynamicParticle* particle,
117               const G4Material* material) const
118 {
119   G4bool isInCharge = false;
120   G4bool hasMaterial = false;
121 
122   if (material->GetNumberOfElements() == 1) hasMaterial = true;
123 
124   if ((particle->GetDefinition()) == (G4AntiProton::AntiProtonDefinition())
125                && hasMaterial) isInCharge = true;
126 
127   return isInCharge;
128 }
129 
130 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
131 
132 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4ParticleDefinition* aParticle,
133               const G4Material* material) const
134 {
135 
136   G4bool isInCharge = false;
137   G4bool hasMaterial = false;
138 
139   if (material->GetNumberOfElements() == 1) hasMaterial = true;
140 
141   if (aParticle == (G4AntiProton::AntiProtonDefinition())
142                 && hasMaterial) isInCharge = true;
143   return isInCharge;
144 }
145 
146 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
147 
148 G4double G4QAOLowEnergyLoss::TheValue(const G4DynamicParticle* particle,
149                                 const G4Material* material)
150 {
151   G4double zParticle = (G4int)(particle->GetCharge())/eplus;
152 
153   G4double energy = particle->GetKineticEnergy() ;
154   G4double eloss  = EnergyLoss(material,energy,zParticle) ;
155 
156   return eloss ;
157 }
158 
159 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
160 
161 G4double G4QAOLowEnergyLoss::TheValue(const G4ParticleDefinition* aParticle,
162                                 const G4Material* material,
163               G4double kineticEnergy)
164 {
165   G4double zParticle = (aParticle->GetPDGCharge())/eplus;
166 
167   G4double eloss  = EnergyLoss(material,kineticEnergy,zParticle) ;
168 
169   return eloss ;
170 }
171 
172 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
173 
174 G4double G4QAOLowEnergyLoss::EnergyLoss(const G4Material* material,
175           G4double kineticEnergy,
176           G4double zParticle) const
177 {
178   G4int nbOfShell = GetNumberOfShell(material);
179   if(nbOfShell < 1) nbOfShell = 1; 
180   G4double dedx=0;
181 
182   G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
183   G4double coeff = twopi * proton_mass_c2 *
184                   (material-> GetTotNbOfElectPerVolume()) /
185                    electron_mass_c2 ;
186   G4double fBetheVelocity = fine_structure_const * c_light / v;
187   coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
188            kineticEnergy ;
189 
190   G4double l0Term = 0, l1Term = 0, l2Term = 0;
191 
192   for (G4int nos = 0 ; nos < nbOfShell ; nos++){
193 
194     G4double l0 = 0, l1 = 0, l2 = 0;
195     G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v  ) /
196                           ( c_squared * GetShellEnergy(material,nos) );
197 
198     G4double shStrength = GetShellStrength(material,nos);
199 
200     l0 = GetL0(NormalizedEnergy);
201     l0Term += shStrength  * l0;
202 
203     l1 = GetL1(NormalizedEnergy);
204     l1Term += shStrength * l1;
205 
206     l2 = GetL2(NormalizedEnergy);
207     l2Term += shStrength * l2;
208   }
209 
210   dedx = coeff * zParticle * zParticle * (l0Term
211        + zParticle * fBetheVelocity * l1Term
212        + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
213 
214   return dedx ;
215 
216 }
217 
218 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
219 
220 G4int G4QAOLowEnergyLoss::GetNumberOfShell(const G4Material* material) const
221 {
222   // Set return value from table
223   G4int Z = (G4int)(material->GetZ());
224   G4int nShell = 0;
225 
226   // Set return value if in material available from Aahrus
227   for(G4int i=0; i<numberOfMaterials; i++) {
228 
229     if(materialAvailable[i] == Z){
230       nShell = nbofShellForMaterial[i];
231   break;
232     }
233     else 
234       nShell = fNumberOfShells[Z];
235   }
236    return nShell;
237 }
238 
239 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
240 
241 G4double G4QAOLowEnergyLoss::GetShellEnergy(const G4Material* material,
242                                             G4int nbOfTheShell) const
243 {
244     //
245     G4double shellEnergy = alShellEnergy[0];
246 
247     if(material->GetZ() == 13) shellEnergy =  alShellEnergy[nbOfTheShell];
248     else if(material->GetZ() == 14)shellEnergy = siShellEnergy[nbOfTheShell];
249     else if(material->GetZ() == 29)shellEnergy = cuShellEnergy[nbOfTheShell];
250     else if(material->GetZ() == 73)shellEnergy =  taShellEnergy[nbOfTheShell];
251     else if(material->GetZ() == 79)shellEnergy =  auShellEnergy[nbOfTheShell];
252     else if(material->GetZ() == 78)shellEnergy =  ptShellEnergy[nbOfTheShell];
253     else if  (material->GetNumberOfElements() == 1)
254       shellEnergy = GetOscillatorEnergy(material, nbOfTheShell);
255     else 
256       { 
257     G4ExceptionDescription ed;    
258     ed << "The model is not available for "
259        << material->GetName()
260        << G4endl;
261     G4Exception("G4QAOLowEnergyLoss::GetShellEnergy()",
262           "em2638",JustWarning,ed);
263       }
264 
265   return  shellEnergy;
266 }
267 
268 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
269 
270 G4double G4QAOLowEnergyLoss::GetOscillatorEnergy(const G4Material* material,
271                                                  G4int nbOfTheShell) const
272 {
273 
274   const G4Element* element = material->GetElement(0);
275 
276   G4int Z = (G4int)(element->GetZ());
277 
278   G4double squaredPlasmonEnergy = 28.816 * 28.816  * 1e-6
279         * material->GetDensity()/g/cm3
280         * (Z/element->GetN()) ;
281 
282   G4double plasmonTerm = 0.66667 * GetOccupationNumber(Z,nbOfTheShell)
283                        * squaredPlasmonEnergy / (Z*Z) ;
284 
285   G4double ionTerm = G4Exp(0.5) * (element->GetAtomicShell(nbOfTheShell)) ;
286   ionTerm = ionTerm*ionTerm ;
287 
288   G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
289   return  oscShellEnergy;
290 }
291 
292 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
293 
294 G4double G4QAOLowEnergyLoss::GetShellStrength(const G4Material* material,
295                                               G4int nbOfTheShell) const
296 {
297   G4double shellStrength = alShellStrength[0];
298 
299   if(material->GetZ() == 13) shellStrength = alShellStrength[nbOfTheShell];
300   else if(material->GetZ() == 14)shellStrength =siShellStrength[nbOfTheShell];
301   else if(material->GetZ() == 29)shellStrength =cuShellStrength[nbOfTheShell];
302   else if(material->GetZ() == 73)shellStrength =taShellStrength[nbOfTheShell];
303   else if(material->GetZ() == 79)shellStrength =auShellStrength[nbOfTheShell];
304   else if(material->GetZ() == 78)shellStrength =ptShellStrength[nbOfTheShell];
305   else if  (material->GetNumberOfElements() == 1){
306     G4int Z = (G4int)(material->GetZ());
307     shellStrength = GetOccupationNumber(Z,nbOfTheShell) / Z ;}
308   else
309     {
310        G4ExceptionDescription ed;       
311        ed << "The model is not available for "
312     << material->GetName()
313     << G4endl;
314        G4Exception("G4QAOLowEnergyLoss::GetShellStrength()",
315        "em2639",JustWarning,ed);
316     }
317   return shellStrength;
318 }
319 
320 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
321 
322 G4double G4QAOLowEnergyLoss::GetOccupationNumber(G4int Z, G4int ShellNb) const
323 {
324 
325   G4int indice = ShellNb ;
326   for (G4int z = 1 ; z < Z ; z++) {indice += fNumberOfShells[z];}
327 
328   return nbOfElectronPerSubShell[indice+1];
329 }
330 
331 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
332 
333 G4double G4QAOLowEnergyLoss::GetL0(G4double normEnergy) const
334 {
335   G4int n;
336 
337   for(n = 0; n < sizeL0; n++) {
338     if( normEnergy < L0[n][0] ) break;
339   }
340   if(0 == n) n = 1 ;
341   if(n >= sizeL0) n = sizeL0 - 1 ;
342 
343   G4double l0    = L0[n][1];
344   G4double l0p   = L0[n-1][1];
345   G4double bethe = l0p + (l0 - l0p) * ( normEnergy - L0[n-1][0]) /
346                   (L0[n][0] - L0[n-1][0]);
347   return bethe ;
348 }
349 
350 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
351 
352 G4double G4QAOLowEnergyLoss::GetL1(G4double normEnergy) const
353 {
354   G4int n;
355 
356   for(n = 0; n < sizeL1; n++) {
357     if( normEnergy < L1[n][0] ) break;
358   }
359   if(0 == n) n = 1 ;
360   if(n >= sizeL1) n = sizeL1 - 1 ;
361 
362   G4double l1    = L1[n][1];
363   G4double l1p   = L1[n-1][1];
364   G4double barkas= l1p + (l1 - l1p) * ( normEnergy - L1[n-1][0]) /
365                   (L1[n][0] - L1[n-1][0]);
366   return barkas;
367 }
368 
369 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
370 
371 G4double G4QAOLowEnergyLoss::GetL2(G4double normEnergy) const
372 {
373   G4int n;
374   for(n = 0; n < sizeL2; n++) {
375     if( normEnergy < L2[n][0] ) break;
376   }
377   if(0 == n) n = 1 ;
378   if(n >= sizeL2) n = sizeL2 - 1 ;
379 
380   G4double l2    = L2[n][1];
381   G4double l2p   = L2[n-1][1];
382   G4double bloch = l2p + (l2 - l2p) * ( normEnergy - L2[n-1][0]) /
383                   (L2[n][0] - L2[n-1][0]);
384   return bloch;
385 }
386 
387 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
388 
389 const G4int G4QAOLowEnergyLoss::materialAvailable[6] = {13,14,29,73,79,78};
390 const G4int G4QAOLowEnergyLoss::nbofShellForMaterial[6] = {3,3,4,6,6,6 };
391 
392 const G4double G4QAOLowEnergyLoss::alShellEnergy[3]  ={ 2795e-6, 202e-6,  16.9e-6};
393 const G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
394 const G4double G4QAOLowEnergyLoss::siShellEnergy[3]  ={ 3179e-6, 249e-6, 20.3e-6 };
395 const G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
396 const G4double G4QAOLowEnergyLoss::cuShellEnergy[4]  ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
397 const G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
398 const G4double G4QAOLowEnergyLoss::taShellEnergy[6]  ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
399 const G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
400 const G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
401 const G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
402 const G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
403 const G4double G4QAOLowEnergyLoss::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879};
404 
405 
406 const G4double G4QAOLowEnergyLoss::L0[67][2] =
407 {
408   {0.00,        0.000001},
409   {0.10,  0.000001},
410   {0.12,  0.00001},
411   {0.14,  0.00005},
412   {0.16,  0.00014},
413   {0.18,  0.00030},
414   {0.20,  0.00057},
415   {0.25,  0.00189},
416   {0.30,  0.00429},
417   {0.35,  0.00784},
418   {0.40,  0.01248},
419   {0.45,  0.01811},
420   {0.50,  0.02462},
421   {0.60,  0.03980},
422   {0.70,  0.05731},
423   {0.80,  0.07662},
424   {0.90,  0.09733},
425   {1.00,  0.11916},
426   {1.20,  0.16532},
427   {1.40,  0.21376},
428   {1.60,  0.26362},
429   {1.80,  0.31428},
430   {2.00,  0.36532},
431   {2.50,  0.49272},
432   {3.00,  0.61765},
433   {3.50,  0.73863},
434   {4.00,  0.85496},
435   {4.50,  0.96634},
436   {5.00,  1.07272},
437   {6.00,  1.27086},
438   {7.00,  1.45075},
439   {8.00,  1.61412},
440   {9.00,  1.76277},
441   {10.00,       1.89836},
442   {12.00,       2.13625},
443   {14.00,       2.33787},
444   {16.00,       2.51093},
445   {18.00,       2.66134},
446   {20.00,       2.79358},
447   {25.00, 3.06539},
448   {30.00, 3.27902},
449   {35.00, 3.45430},
450   {40.00, 3.60281},
451   {45.00, 3.73167},
452   {50.00, 3.84555},
453   {60.00, 4.04011},
454   {70.00, 4.20264},
455   {80.00, 4.34229},
456   {90.00,  4.46474},
457   {100.00, 4.57378},
458   {120.00, 4.76155},
459   {140.00, 4.91953},
460   {160.00, 5.05590},
461   {180.00, 5.17588},
462   {200.00, 5.28299},
463   {250.00, 5.50925},
464   {300.00, 5.69364},
465   {350.00, 5.84926},
466   {400.00, 5.98388},
467   {450.00, 6.10252},
468   {500.00, 6.20856},
469   {600.00, 6.39189},
470   {700.00, 6.54677},
471   {800.00, 6.68084},
472   {900.00, 6.79905},
473   {1000.00, 6.90474}
474 };
475 
476 const G4double G4QAOLowEnergyLoss::L1[22][2] =
477 {
478   {0.00,       -0.000001},
479   {0.10,       -0.00001},
480   {0.20,       -0.00049},
481   {0.30,       -0.00084},
482   {0.40,  0.00085},
483   {0.50,  0.00519},
484   {0.60,  0.01198},
485   {0.70,  0.02074},
486   {0.80,  0.03133},
487   {0.90,  0.04369},
488   {1.00,  0.06035},
489   {2.00,  0.24023},
490   {3.00,  0.44284},
491   {4.00,  0.62012},
492   {5.00,  0.77031},
493   {6.00,  0.90390},
494   {7.00,  1.02705},
495   {8.00,  1.10867},
496   {9.00,  1.17546},
497   {10.00,       1.21599},
498   {15.00, 1.24349},
499   {20.00, 1.16752}
500 };
501 
502 const G4double G4QAOLowEnergyLoss::L2[14][2] =
503 {
504   {0.00,  0.000001},
505   {0.10,  0.00001},
506   {0.20,  0.00000},
507   {0.40,       -0.00120},
508   {0.60,       -0.00036},
509   {0.80,  0.00372},
510   {1.00,  0.01298},
511   {2.00,  0.08296},
512   {4.00,  0.21953},
513   {6.00,  0.23903},
514   {8.00,  0.20893},
515   {10.00, 0.10879},
516   {20.00,      -0.88409},
517   {40.00,      -1.13902}
518 };
519 
520 const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] =
521 {
522   0, // consistency with G4AtomicShells
523   1,//------ H
524   2,//------ He
525   2,  1,//------ Li
526   2,  2,//------ Be
527   2,  2,  1,//------ B
528   2,  2,  2,//------ C
529   2,  2,  2,  1,//------ N
530   2,  2,  2,  2,//------ O
531   2,  2,  5,//------ F
532   2,  2,  2,  4,//------ Ne
533   2,  2,  2,  4,  1,//------ Na
534   2,  2,  2,  4,  2,//------ Mg
535   2,  2,  2,  4,  2,  1,//------ Al
536   2,  2,  2,  4,  2,  2,//------ Si
537   2,  2,  2,  4,  2,  3,//------ P
538   2,  2,  2,  4,  2,  4,//------
539   2,  2,  2,  4,  2,  5,//------
540   2,  2,  2,  4,  2,  2,  4,//------
541   2,  2,  2,  4,  2,  2,  4,  1,//------
542   2,  2,  2,  4,  2,  2,  4,  2,//------
543   2,  2,  2,  4,  2,  2,  4,  1,  2,//------
544   2,  2,  2,  4,  2,  2,  4,  2,  2,//------
545   2,  2,  2,  4,  2,  2,  4,  3,  2,//------
546   2,  2,  2,  4,  2,  2,  4,  4,  2,//------
547   2,  2,  2,  4,  2,  2,  4,  5,  2,//------
548   2,  2,  2,  4,  2,  2,  4,  6,  2,//------
549   2,  2,  2,  4,  2,  2,  4,  7,  2,//------
550   2,  2,  2,  4,  2,  2,  4,  4,  4,  2,//------
551   2,  2,  2,  4,  2,  2,  4,  4,  5,  2,//------
552   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,//------
553   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  1,//------
554   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,//------
555   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  3,//------
556   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  4,//------
557   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  5,//------
558   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,//------
559   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  1,//------
560   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  2,//------
561   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  1,  2,//------
562   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  2,  2,//------
563   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  3,  2,//------
564   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  2,//------
565   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  5,  2,//------
566   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  6,  2,//------
567   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  7,  2,//------
568   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  4,  2,//------
569   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  5,  2,//------
570   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,//------
571   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  1,//------
572   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,//------
573   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  3,//------
574   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  4,//------
575   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  5,//------
576   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,//------
577   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,  1,//------
578   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,  2,//------
579   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,  1,  2,//------
580   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  2,  4,  2,//------
581   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  3,  2,  2,  4,  2,//------
582   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  4,  2,  2,  4,  2,//------
583   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  5,  2,  2,  4,  2,//------
584   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  2,  2,  4,  2,//------
585   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  7,  2,  2,  4,  2,//------
586   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  7,  2,  2,  4,  1,  2,//------
587   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  9,  2,  2,  4,  2,//------
588   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 10,  2,  2,  4,  2,//------
589   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 11,  2,  2,  4,  2,//------
590   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 12,  2,  2,  4,  2,//------
591   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 13,  2,  2,  4,  2,//------
592   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  2,//------
593   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  1,  2,//------
594   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  2,  2,//------
595   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  3,  2,//------
596   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  2,//------
597   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  5,  2,//------
598   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  6,  2,//------
599   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  7,  2,//------
600   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  9,  1,//------
601   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  1,//------
602   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,//------
603   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  1,//------
604   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,//------
605   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  3,//------
606   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  4,//------
607   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  3,//------
608   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  4,//------
609   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  4,  1,//------
610   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  4,  2,//------
611   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  4,  1,  2,//------
612   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  4,  2,  2,//------
613   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  2,  4,  1,  2,//------
614   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  3,  2,  2,  4,  1,  2,//------
615   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  4,  2,  2,  4,  1,  2,//------
616   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  6,  2,  2,  4,  2,//------
617   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  7,  2,  2,  4,  2,//------
618   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  7,  2,  2,  4,  1,  2,//------
619   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  8,  2,  2,  4,  1,  2,//------
620   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6, 10,  2,  2,  4,  2,//------
621   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6, 11,  2,  2,  4,  2,//------
622   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6, 12,  2,  2,  4,  2 //-----
623 };
624 
625 const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] =
626 {
627  0 ,  // nonexisting zero element
628 
629  1 ,  1 ,  2 ,  2 ,  3 ,    3 ,  4 ,  4 ,  3 ,  4 ,  //  1 - 10
630 
631  5 ,  5 ,  6 ,  6 ,  6 ,    6 ,  6 ,  7 ,  8 ,  8 ,  // 11 - 20
632 
633  9 ,  9 ,  9 ,  9 ,  9 ,    9 ,  9 , 10 , 10 , 10 ,  // 21 - 30
634 
635 11 , 11 , 11 , 11 , 11 ,   12 , 13 , 13 , 14 , 14 ,  // 31 - 40
636 
637 14 , 14 , 14 , 14 , 14 ,   15 , 15 , 15 , 16 , 16 ,  // 41 - 50
638 
639 // ----------------------------------------------------------
640 
641 16 , 16 , 16 , 17 , 18 ,   18 , 19 , 19 , 19 , 19 ,  // 51 - 60
642 
643 19 , 19 , 19 , 20 , 19 ,   19 , 19 , 19 , 19 , 20 ,  // 61 - 70
644 
645 21 , 21 , 21 , 21 , 21 ,   21 , 21 , 21 , 22 , 22 ,  // 71 - 80
646 
647 23 , 23 , 23 , 23 , 24 ,   24 , 25 , 25 , 26 , 26 ,  // 81 - 90
648 
649 27 , 27 , 27 , 26 , 26 ,   27 , 27 , 26 , 26 , 26    // 91 - 100
650 
651 };
652