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 ]

Diff markup

Differences between /processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.cc (Version 11.3.0) and /processes/electromagnetic/lowenergy/src/G4QAOLowEnergyLoss.cc (Version 10.3)


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