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 9.6)


  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"                            << 
 67                                                    66 
 68 //....oooOO0OOooo........oooOO0OOooo........oo     67 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 69                                                    68 
 70 G4QAOLowEnergyLoss::G4QAOLowEnergyLoss(const G     69 G4QAOLowEnergyLoss::G4QAOLowEnergyLoss(const G4String& name)
 71   : G4VLowEnergyModel(name)                        70   : G4VLowEnergyModel(name)
 72 {                                                  71 {
 73   numberOfMaterials = 6;                           72   numberOfMaterials = 6;
 74   sizeL0 = 67;                                     73   sizeL0 = 67;
 75   sizeL1 = 22;                                     74   sizeL1 = 22;
 76   sizeL2 = 14;                                     75   sizeL2 = 14;
 77 }                                                  76 }
 78                                                    77 
 79 //....oooOO0OOooo........oooOO0OOooo........oo << 
 80                                                    78 
 81 G4QAOLowEnergyLoss::~G4QAOLowEnergyLoss()          79 G4QAOLowEnergyLoss::~G4QAOLowEnergyLoss()
 82 {;}                                                80 {;}
 83                                                    81 
 84 //....oooOO0OOooo........oooOO0OOooo........oo << 
 85                                                    82 
 86 G4double G4QAOLowEnergyLoss::HighEnergyLimit(c     83 G4double G4QAOLowEnergyLoss::HighEnergyLimit(const G4ParticleDefinition* ,
 87                const G4Material* ) const           84                const G4Material* ) const
 88 {                                                  85 {
 89   return 2.0*MeV ;                                 86   return 2.0*MeV ;
 90 }                                                  87 }
 91                                                    88 
 92 //....oooOO0OOooo........oooOO0OOooo........oo << 
 93                                                    89 
 94 G4double G4QAOLowEnergyLoss::LowEnergyLimit(co     90 G4double G4QAOLowEnergyLoss::LowEnergyLimit(const G4ParticleDefinition* ,
 95               const G4Material* ) const            91               const G4Material* ) const
 96 {                                                  92 {
                                                   >>  93   //  return 50.0*keV ;
 97   return 5.0*keV ;                                 94   return 5.0*keV ;
 98 }                                                  95 }
 99                                                    96 
100 //....oooOO0OOooo........oooOO0OOooo........oo << 
101                                                    97 
102 G4double G4QAOLowEnergyLoss::HighEnergyLimit(c     98 G4double G4QAOLowEnergyLoss::HighEnergyLimit(const G4ParticleDefinition* ) const
103 {                                                  99 {
104   return 2.0*MeV ;                                100   return 2.0*MeV ;
105 }                                                 101 }
106                                                   102 
107 //....oooOO0OOooo........oooOO0OOooo........oo << 
108                                                << 
109 G4double G4QAOLowEnergyLoss::LowEnergyLimit(co    103 G4double G4QAOLowEnergyLoss::LowEnergyLimit(const G4ParticleDefinition* ) const
110 {                                                 104 {
                                                   >> 105   //  return 50.0*keV ;
111   return 5.0*keV ;                                106   return 5.0*keV ;
112 }                                                 107 }
113                                                   108 
114 //....oooOO0OOooo........oooOO0OOooo........oo << 
115                                                   109 
116 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4    110 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4DynamicParticle* particle,
117               const G4Material* material) cons    111               const G4Material* material) const
118 {                                                 112 {
119   G4bool isInCharge = false;                      113   G4bool isInCharge = false;
                                                   >> 114 
120   G4bool hasMaterial = false;                     115   G4bool hasMaterial = false;
121                                                   116 
122   if (material->GetNumberOfElements() == 1) ha    117   if (material->GetNumberOfElements() == 1) hasMaterial = true;
123                                                << 118   
124   if ((particle->GetDefinition()) == (G4AntiPr    119   if ((particle->GetDefinition()) == (G4AntiProton::AntiProtonDefinition())
125                && hasMaterial) isInCharge = tr    120                && hasMaterial) isInCharge = true;
126                                                << 121   
127   return isInCharge;                              122   return isInCharge;
128 }                                              << 
129                                                   123 
130 //....oooOO0OOooo........oooOO0OOooo........oo << 124 }
131                                                   125 
132 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4    126 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4ParticleDefinition* aParticle,
133               const G4Material* material) cons    127               const G4Material* material) const
134 {                                                 128 {
135                                                << 129   
136   G4bool isInCharge = false;                      130   G4bool isInCharge = false;
                                                   >> 131   
137   G4bool hasMaterial = false;                     132   G4bool hasMaterial = false;
138                                                << 133   
139   if (material->GetNumberOfElements() == 1) ha    134   if (material->GetNumberOfElements() == 1) hasMaterial = true;
                                                   >> 135   
140                                                   136 
141   if (aParticle == (G4AntiProton::AntiProtonDe    137   if (aParticle == (G4AntiProton::AntiProtonDefinition())
142                 && hasMaterial) isInCharge = t    138                 && hasMaterial) isInCharge = true;
                                                   >> 139   
143   return isInCharge;                              140   return isInCharge;
                                                   >> 141   
144 }                                                 142 }
145                                                   143 
146 //....oooOO0OOooo........oooOO0OOooo........oo << 
147                                                   144 
148 G4double G4QAOLowEnergyLoss::TheValue(const G4    145 G4double G4QAOLowEnergyLoss::TheValue(const G4DynamicParticle* particle,
149                                 const G4Materi << 146                                 const G4Material* material) 
150 {                                                 147 {
151   G4double zParticle = (G4int)(particle->GetCh    148   G4double zParticle = (G4int)(particle->GetCharge())/eplus;
152                                                   149 
153   G4double energy = particle->GetKineticEnergy    150   G4double energy = particle->GetKineticEnergy() ;
154   G4double eloss  = EnergyLoss(material,energy    151   G4double eloss  = EnergyLoss(material,energy,zParticle) ;
155                                                   152 
156   return eloss ;                                  153   return eloss ;
157 }                                                 154 }
158                                                   155 
159 //....oooOO0OOooo........oooOO0OOooo........oo << 
160                                                   156 
161 G4double G4QAOLowEnergyLoss::TheValue(const G4    157 G4double G4QAOLowEnergyLoss::TheValue(const G4ParticleDefinition* aParticle,
162                                 const G4Materi    158                                 const G4Material* material,
163               G4double kineticEnergy)          << 159               G4double kineticEnergy) 
164 {                                                 160 {
165   G4double zParticle = (aParticle->GetPDGCharg    161   G4double zParticle = (aParticle->GetPDGCharge())/eplus;
166                                                   162 
167   G4double eloss  = EnergyLoss(material,kineti    163   G4double eloss  = EnergyLoss(material,kineticEnergy,zParticle) ;
168                                                   164 
169   return eloss ;                                  165   return eloss ;
170 }                                                 166 }
171                                                   167 
172 //....oooOO0OOooo........oooOO0OOooo........oo << 168 
173                                                   169 
174 G4double G4QAOLowEnergyLoss::EnergyLoss(const     170 G4double G4QAOLowEnergyLoss::EnergyLoss(const G4Material* material,
175           G4double kineticEnergy,                 171           G4double kineticEnergy,
176           G4double zParticle) const            << 172           G4double zParticle) const 
177 {                                                 173 {
178   G4int nbOfShell = GetNumberOfShell(material)    174   G4int nbOfShell = GetNumberOfShell(material);
179   if(nbOfShell < 1) nbOfShell = 1;             << 175   if(nbOfShell < 1) nbOfShell = 1;
                                                   >> 176   
                                                   >> 177   //G4int iz = (G4int)(material->GetZ());
                                                   >> 178   //if(iz < 1) iz = 1;
                                                   >> 179   //else if(iz > 100) iz = 100;
                                                   >> 180   //G4int nbOfShell = fNumberOfShells[iz];
                                                   >> 181   
                                                   >> 182   /*
                                                   >> 183   if(material->GetName()=="Graphite"){
                                                   >> 184   G4cout << " E(MeV)= " << kineticEnergy/MeV << " n= " 
                                                   >> 185          << nbOfShell 
                                                   >> 186          << " for " << material->GetZ() << G4endl; 
                                                   >> 187   }
                                                   >> 188   */
180   G4double dedx=0;                                189   G4double dedx=0;
181                                                   190 
182   G4double v = c_light * std::sqrt( 2.0 * kine    191   G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
183   G4double coeff = twopi * proton_mass_c2 *    << 192   G4double coeff = twopi * proton_mass_c2 * 
184                   (material-> GetTotNbOfElectP << 193                   (material-> GetTotNbOfElectPerVolume()) / 
185                    electron_mass_c2 ;             194                    electron_mass_c2 ;
186   G4double fBetheVelocity = fine_structure_con    195   G4double fBetheVelocity = fine_structure_const * c_light / v;
187   coeff *= fine_structure_const * fine_structu << 196   coeff *= fine_structure_const * fine_structure_const * hbarc_squared / 
188            kineticEnergy ;                        197            kineticEnergy ;
189                                                   198 
190   G4double l0Term = 0, l1Term = 0, l2Term = 0; << 199   //G4double beta = std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
                                                   >> 200   //G4double fBetheVelocity = std::sqrt( 2.0 * 25.0 * keV / proton_mass_c2 )/beta;
                                                   >> 201   //G4double coeff= twopi_mc2_rcl2*(material->GetElectronDensity())/(beta*beta);
191                                                   202 
                                                   >> 203   
                                                   >> 204   G4double l0Term = 0, l1Term = 0, l2Term = 0;
                                                   >> 205   
192   for (G4int nos = 0 ; nos < nbOfShell ; nos++    206   for (G4int nos = 0 ; nos < nbOfShell ; nos++){
193                                                << 207     
194     G4double l0 = 0, l1 = 0, l2 = 0;              208     G4double l0 = 0, l1 = 0, l2 = 0;
195     G4double NormalizedEnergy = ( 2.0 * electr << 209     G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v  ) / 
196                           ( c_squared * GetShe    210                           ( c_squared * GetShellEnergy(material,nos) );
197                                                << 211     //G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * beta * beta  ) / 
                                                   >> 212     //                              GetShellEnergy(material,nos);
198     G4double shStrength = GetShellStrength(mat    213     G4double shStrength = GetShellStrength(material,nos);
199                                                   214 
200     l0 = GetL0(NormalizedEnergy);                 215     l0 = GetL0(NormalizedEnergy);
201     l0Term += shStrength  * l0;                << 216     l0Term += shStrength  * l0; 
202                                                << 217     
203     l1 = GetL1(NormalizedEnergy);                 218     l1 = GetL1(NormalizedEnergy);
204     l1Term += shStrength * l1;                 << 219     l1Term += shStrength * l1; 
205                                                << 220     
206     l2 = GetL2(NormalizedEnergy);                 221     l2 = GetL2(NormalizedEnergy);
207     l2Term += shStrength * l2;                 << 222     l2Term += shStrength * l2; 
208   }                                            << 
209                                                   223 
                                                   >> 224     /*
                                                   >> 225     if(material->GetName()=="Graphite"){
                                                   >> 226     G4cout << nos << ". "
                                                   >> 227            << " E(MeV)= " << kineticEnergy/MeV 
                                                   >> 228            << " normE= "  << NormalizedEnergy
                                                   >> 229            << " sh en= "  << GetShellEnergy(material,nos)
                                                   >> 230            << " str= "  << shStrength
                                                   >> 231            << " v0/v= " << fBetheVelocity
                                                   >> 232            << " l0= " << l0Term
                                                   >> 233            << " l1= " << l1Term
                                                   >> 234            << " l2= " << l2Term
                                                   >> 235            << G4endl;
                                                   >> 236      }
                                                   >> 237      */   
                                                   >> 238   }
                                                   >> 239        
210   dedx = coeff * zParticle * zParticle * (l0Te    240   dedx = coeff * zParticle * zParticle * (l0Term
211        + zParticle * fBetheVelocity * l1Term   << 241        + zParticle * fBetheVelocity * l1Term 
212        + zParticle * zParticle * fBetheVelocit    242        + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
213                                                   243 
214   return dedx ;                                << 244   //  G4cout << " E(MeV)= " << kineticEnergy/MeV 
215                                                << 245   //         << " dedx(Mev/mm)= " << dedx*mm/MeV << G4endl;
                                                   >> 246           
                                                   >> 247   return dedx ; 
                                                   >> 248                             
216 }                                                 249 }
217                                                   250 
218 //....oooOO0OOooo........oooOO0OOooo........oo << 
219                                                   251 
220 G4int G4QAOLowEnergyLoss::GetNumberOfShell(con    252 G4int G4QAOLowEnergyLoss::GetNumberOfShell(const G4Material* material) const
221 {                                                 253 {
222   // Set return value from table                  254   // Set return value from table
223   G4int Z = (G4int)(material->GetZ());            255   G4int Z = (G4int)(material->GetZ());
224   G4int nShell = 0;                               256   G4int nShell = 0;
225                                                   257 
226   // Set return value if in material available    258   // Set return value if in material available from Aahrus
227   for(G4int i=0; i<numberOfMaterials; i++) {      259   for(G4int i=0; i<numberOfMaterials; i++) {
228                                                   260 
229     if(materialAvailable[i] == Z){                261     if(materialAvailable[i] == Z){
230       nShell = nbofShellForMaterial[i];           262       nShell = nbofShellForMaterial[i];
231   break;                                          263   break;
232     }                                             264     }
233     else                                       << 265     else nShell = fNumberOfShells[Z];
234       nShell = fNumberOfShells[Z];             << 
235   }                                               266   }
                                                   >> 267   
236    return nShell;                                 268    return nShell;
237 }                                                 269 }
238                                                   270 
239 //....oooOO0OOooo........oooOO0OOooo........oo << 271 
240                                                   272 
241 G4double G4QAOLowEnergyLoss::GetShellEnergy(co    273 G4double G4QAOLowEnergyLoss::GetShellEnergy(const G4Material* material,
242                                             G4    274                                             G4int nbOfTheShell) const
243 {                                                 275 {
244     //                                         << 276     // 
245     G4double shellEnergy = alShellEnergy[0];      277     G4double shellEnergy = alShellEnergy[0];
246                                                   278 
247     if(material->GetZ() == 13) shellEnergy =      279     if(material->GetZ() == 13) shellEnergy =  alShellEnergy[nbOfTheShell];
248     else if(material->GetZ() == 14)shellEnergy    280     else if(material->GetZ() == 14)shellEnergy = siShellEnergy[nbOfTheShell];
249     else if(material->GetZ() == 29)shellEnergy << 281     else if(material->GetZ() == 29)shellEnergy = cuShellEnergy[nbOfTheShell]; 
250     else if(material->GetZ() == 73)shellEnergy    282     else if(material->GetZ() == 73)shellEnergy =  taShellEnergy[nbOfTheShell];
251     else if(material->GetZ() == 79)shellEnergy    283     else if(material->GetZ() == 79)shellEnergy =  auShellEnergy[nbOfTheShell];
252     else if(material->GetZ() == 78)shellEnergy    284     else if(material->GetZ() == 78)shellEnergy =  ptShellEnergy[nbOfTheShell];
253     else if  (material->GetNumberOfElements()     285     else if  (material->GetNumberOfElements() == 1)
254       shellEnergy = GetOscillatorEnergy(materi    286       shellEnergy = GetOscillatorEnergy(material, nbOfTheShell);
255     else                                       << 287     else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
256       {                                        << 288     << "The model is not available for "
257     G4ExceptionDescription ed;                 << 289     << material->GetName() 
258     ed << "The model is not available for "    << 290     << G4endl;
259        << material->GetName()                  << 
260        << G4endl;                              << 
261     G4Exception("G4QAOLowEnergyLoss::GetShellE << 
262           "em2638",JustWarning,ed);            << 
263       }                                        << 
264                                                   291 
265   return  shellEnergy;                            292   return  shellEnergy;
266 }                                                 293 }
267                                                   294 
268 //....oooOO0OOooo........oooOO0OOooo........oo << 
269                                                   295 
270 G4double G4QAOLowEnergyLoss::GetOscillatorEner    296 G4double G4QAOLowEnergyLoss::GetOscillatorEnergy(const G4Material* material,
271                                                   297                                                  G4int nbOfTheShell) const
272 {                                              << 298 { 
273                                                << 299   
274   const G4Element* element = material->GetElem    300   const G4Element* element = material->GetElement(0);
275                                                << 301   
276   G4int Z = (G4int)(element->GetZ());             302   G4int Z = (G4int)(element->GetZ());
277                                                << 303     
278   G4double squaredPlasmonEnergy = 28.816 * 28. << 304 G4double squaredPlasmonEnergy = 28.816 * 28.816  * 1e-6 
279         * material->GetDensity()/g/cm3            305         * material->GetDensity()/g/cm3
280         * (Z/element->GetN()) ;                   306         * (Z/element->GetN()) ;
                                                   >> 307 //G4double squaredPlasmonEnergy = 28.16 * 28.16 * 1e-6  
                                                   >> 308 //                                * (material->GetDensity()) * (cm3/g)
                                                   >> 309 //              *  Z / (element->GetN()) ;
                                                   >> 310   
                                                   >> 311   G4double plasmonTerm = 0.66667 * GetOccupationNumber(Z,nbOfTheShell)  
                                                   >> 312                        * squaredPlasmonEnergy / (Z*Z) ; 
                                                   >> 313   
                                                   >> 314   G4double ionTerm = std::exp(0.5) * (element->GetAtomicShell(nbOfTheShell)) ;
281                                                   315 
282   G4double plasmonTerm = 0.66667 * GetOccupati << 
283                        * squaredPlasmonEnergy  << 
284                                                << 
285   G4double ionTerm = G4Exp(0.5) * (element->Ge << 
286   ionTerm = ionTerm*ionTerm ;                     316   ionTerm = ionTerm*ionTerm ;
287                                                << 317    
288   G4double oscShellEnergy = std::sqrt( ionTerm    318   G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
                                                   >> 319  
                                                   >> 320 /*  if(material->GetName()=="Graphite"){
                                                   >> 321     G4cout << "\t" << Z 
                                                   >> 322          << "\t" << nbOfTheShell
                                                   >> 323            << "\t" << squaredPlasmonEnergy
                                                   >> 324      << "\t" << plasmonTerm
                                                   >> 325      << "\t" << ionTerm
                                                   >> 326      << "\t" << GetOccupationNumber(Z,nbOfTheShell)
                                                   >> 327      << "\t" << element->GetAtomicShell(nbOfTheShell)
                                                   >> 328      << "\t" << oscShellEnergy << G4endl;}
                                                   >> 329 */
289   return  oscShellEnergy;                         330   return  oscShellEnergy;
290 }                                                 331 }
291                                                   332 
292 //....oooOO0OOooo........oooOO0OOooo........oo << 
293                                                   333 
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 ;
                                                   >> 381   
348 }                                                 382 }
349                                                   383 
350 //....oooOO0OOooo........oooOO0OOooo........oo << 
351                                                << 
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 G4double G4QAOLowEnergyLoss::alShellEnergy[3]  ={ 2795e-6, 202e-6,  16.9e-6};
393 const G4double G4QAOLowEnergyLoss::alShellStre << 434 G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
394 const G4double G4QAOLowEnergyLoss::siShellEner << 435 G4double G4QAOLowEnergyLoss::siShellEnergy[3]  ={ 3179e-6, 249e-6, 20.3e-6 };
395 const G4double G4QAOLowEnergyLoss::siShellStre << 436 G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
396 const G4double G4QAOLowEnergyLoss::cuShellEner << 437 G4double G4QAOLowEnergyLoss::cuShellEnergy[4]  ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
397 const G4double G4QAOLowEnergyLoss::cuShellStre << 438 G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
398 const G4double G4QAOLowEnergyLoss::taShellEner << 439 G4double G4QAOLowEnergyLoss::taShellEnergy[6]  ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
399 const G4double G4QAOLowEnergyLoss::taShellStre << 440 G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
400 const G4double G4QAOLowEnergyLoss::auShellEner << 441 G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
401 const G4double G4QAOLowEnergyLoss::auShellStre << 442 G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
402 const G4double G4QAOLowEnergyLoss::ptShellEner << 443 G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
403 const G4double G4QAOLowEnergyLoss::ptShellStre << 444 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 
                                                   >> 517 
476 const G4double G4QAOLowEnergyLoss::L1[22][2] =    518 const G4double G4QAOLowEnergyLoss::L1[22][2] =
477 {                                                 519 {
478   {0.00,       -0.000001},                        520   {0.00,       -0.000001},
479   {0.10,       -0.00001},                         521   {0.10,       -0.00001},
480   {0.20,       -0.00049},                         522   {0.20,       -0.00049},
481   {0.30,       -0.00084},                         523   {0.30,       -0.00084},
482   {0.40,  0.00085},                               524   {0.40,  0.00085},
483   {0.50,  0.00519},                               525   {0.50,  0.00519},
484   {0.60,  0.01198},                               526   {0.60,  0.01198},
485   {0.70,  0.02074},                               527   {0.70,  0.02074},
486   {0.80,  0.03133},                               528   {0.80,  0.03133},
487   {0.90,  0.04369},                               529   {0.90,  0.04369},
488   {1.00,  0.06035},                               530   {1.00,  0.06035},
489   {2.00,  0.24023},                               531   {2.00,  0.24023},
490   {3.00,  0.44284},                               532   {3.00,  0.44284},
491   {4.00,  0.62012},                               533   {4.00,  0.62012},
492   {5.00,  0.77031},                               534   {5.00,  0.77031},
493   {6.00,  0.90390},                               535   {6.00,  0.90390},
494   {7.00,  1.02705},                               536   {7.00,  1.02705},
495   {8.00,  1.10867},                               537   {8.00,  1.10867},
496   {9.00,  1.17546},                               538   {9.00,  1.17546},
497   {10.00,       1.21599},                         539   {10.00,       1.21599},
498   {15.00, 1.24349},                               540   {15.00, 1.24349},
499   {20.00, 1.16752}                                541   {20.00, 1.16752}
500 };                                                542 };
501                                                   543 
                                                   >> 544 
502 const G4double G4QAOLowEnergyLoss::L2[14][2] =    545 const G4double G4QAOLowEnergyLoss::L2[14][2] =
503 {                                                 546 {
504   {0.00,  0.000001},                              547   {0.00,  0.000001},
505   {0.10,  0.00001},                               548   {0.10,  0.00001},
506   {0.20,  0.00000},                               549   {0.20,  0.00000},
507   {0.40,       -0.00120},                         550   {0.40,       -0.00120},
508   {0.60,       -0.00036},                         551   {0.60,       -0.00036},
509   {0.80,  0.00372},                               552   {0.80,  0.00372},
510   {1.00,  0.01298},                               553   {1.00,  0.01298},
511   {2.00,  0.08296},                               554   {2.00,  0.08296},
512   {4.00,  0.21953},                               555   {4.00,  0.21953},
513   {6.00,  0.23903},                               556   {6.00,  0.23903},
514   {8.00,  0.20893},                               557   {8.00,  0.20893},
515   {10.00, 0.10879},                               558   {10.00, 0.10879},
516   {20.00,      -0.88409},                      << 559   {20.00,      -0.88409}, 
517   {40.00,      -1.13902}                          560   {40.00,      -1.13902}
518 };                                                561 };
519                                                   562 
520 const G4int G4QAOLowEnergyLoss::nbOfElectronPe << 563 
                                                   >> 564 const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] = 
521 {                                                 565 {
522   0, // consistency with G4AtomicShells           566   0, // consistency with G4AtomicShells
523   1,//------ H                                    567   1,//------ H
524   2,//------ He                                   568   2,//------ He
525   2,  1,//------ Li                               569   2,  1,//------ Li
526   2,  2,//------ Be                               570   2,  2,//------ Be
527   2,  2,  1,//------ B                            571   2,  2,  1,//------ B
528   2,  2,  2,//------ C                            572   2,  2,  2,//------ C
529   2,  2,  2,  1,//------ N                        573   2,  2,  2,  1,//------ N
530   2,  2,  2,  2,//------ O                        574   2,  2,  2,  2,//------ O
531   2,  2,  5,//------ F                            575   2,  2,  5,//------ F
532   2,  2,  2,  4,//------ Ne                       576   2,  2,  2,  4,//------ Ne
533   2,  2,  2,  4,  1,//------ Na                   577   2,  2,  2,  4,  1,//------ Na
534   2,  2,  2,  4,  2,//------ Mg                   578   2,  2,  2,  4,  2,//------ Mg
535   2,  2,  2,  4,  2,  1,//------ Al               579   2,  2,  2,  4,  2,  1,//------ Al
536   2,  2,  2,  4,  2,  2,//------ Si               580   2,  2,  2,  4,  2,  2,//------ Si
537   2,  2,  2,  4,  2,  3,//------ P                581   2,  2,  2,  4,  2,  3,//------ P
538   2,  2,  2,  4,  2,  4,//------                  582   2,  2,  2,  4,  2,  4,//------
539   2,  2,  2,  4,  2,  5,//------                  583   2,  2,  2,  4,  2,  5,//------
540   2,  2,  2,  4,  2,  2,  4,//------              584   2,  2,  2,  4,  2,  2,  4,//------
541   2,  2,  2,  4,  2,  2,  4,  1,//------          585   2,  2,  2,  4,  2,  2,  4,  1,//------
542   2,  2,  2,  4,  2,  2,  4,  2,//------          586   2,  2,  2,  4,  2,  2,  4,  2,//------
543   2,  2,  2,  4,  2,  2,  4,  1,  2,//------      587   2,  2,  2,  4,  2,  2,  4,  1,  2,//------
544   2,  2,  2,  4,  2,  2,  4,  2,  2,//------      588   2,  2,  2,  4,  2,  2,  4,  2,  2,//------
545   2,  2,  2,  4,  2,  2,  4,  3,  2,//------      589   2,  2,  2,  4,  2,  2,  4,  3,  2,//------
546   2,  2,  2,  4,  2,  2,  4,  4,  2,//------      590   2,  2,  2,  4,  2,  2,  4,  4,  2,//------
547   2,  2,  2,  4,  2,  2,  4,  5,  2,//------      591   2,  2,  2,  4,  2,  2,  4,  5,  2,//------
548   2,  2,  2,  4,  2,  2,  4,  6,  2,//------      592   2,  2,  2,  4,  2,  2,  4,  6,  2,//------
549   2,  2,  2,  4,  2,  2,  4,  7,  2,//------      593   2,  2,  2,  4,  2,  2,  4,  7,  2,//------
550   2,  2,  2,  4,  2,  2,  4,  4,  4,  2,//----    594   2,  2,  2,  4,  2,  2,  4,  4,  4,  2,//------
551   2,  2,  2,  4,  2,  2,  4,  4,  5,  2,//----    595   2,  2,  2,  4,  2,  2,  4,  4,  5,  2,//------
552   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,//----    596   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,//------
553   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  1,//    597   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  1,//------
554   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,//    598   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,//------
555   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  3,//    599   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  3,//------
556   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  4,//    600   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  4,//------
557   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  5,//    601   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  5,//------
558   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,      602   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,//------
559   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,      603   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,      604   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,      605   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,      606   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,      607   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,      608   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,      609   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,      610   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,      611   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,      612   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,      613   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,      614   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,      615   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,      616   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,      617   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,      618   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,      619   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,      620   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,      621   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,      622   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,      623   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,      624   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,      625   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,      626   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,      627   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,      628   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,      629   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,      630   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,      631   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,      632   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,      633   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,      634   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,      635   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,      636   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,      637   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,      638   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,      639   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,      640   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,      641   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,      642   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,      643   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,      644   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,      645   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,      646   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,      647   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,      648   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,      649   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,      650   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,      651   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,      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,//------
609   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,  1,//------
610   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,  4,  2,//------
611   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,  2,  2,  4,  1,  2,//------
612   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,  2,  2,  4,  2,  2,//------
613   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,  2,  2,  2,  4,  1,  2,//------
614   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,  3,  2,  2,  4,  1,  2,//------
615   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,  4,  2,  2,  4,  1,  2,//------
616   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,  6,  2,  2,  4,  2,//------
617   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,  7,  2,  2,  4,  2,//------
618   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,  7,  2,  2,  4,  1,  2,//------
619   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,  8,  2,  2,  4,  1,  2,//------
620   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,      664   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,      665   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,      666   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 };                                                667 };
624                                                   668 
625 const G4int G4QAOLowEnergyLoss::fNumberOfShell    669 const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] =
626 {                                                 670 {
627  0 ,  // nonexisting zero element                 671  0 ,  // nonexisting zero element
628                                                   672 
629  1 ,  1 ,  2 ,  2 ,  3 ,    3 ,  4 ,  4 ,  3 ,    673  1 ,  1 ,  2 ,  2 ,  3 ,    3 ,  4 ,  4 ,  3 ,  4 ,  //  1 - 10
630                                                   674 
631  5 ,  5 ,  6 ,  6 ,  6 ,    6 ,  6 ,  7 ,  8 ,    675  5 ,  5 ,  6 ,  6 ,  6 ,    6 ,  6 ,  7 ,  8 ,  8 ,  // 11 - 20
632                                                   676 
633  9 ,  9 ,  9 ,  9 ,  9 ,    9 ,  9 , 10 , 10 ,    677  9 ,  9 ,  9 ,  9 ,  9 ,    9 ,  9 , 10 , 10 , 10 ,  // 21 - 30
634                                                   678 
635 11 , 11 , 11 , 11 , 11 ,   12 , 13 , 13 , 14 ,    679 11 , 11 , 11 , 11 , 11 ,   12 , 13 , 13 , 14 , 14 ,  // 31 - 40
636                                                   680 
637 14 , 14 , 14 , 14 , 14 ,   15 , 15 , 15 , 16 ,    681 14 , 14 , 14 , 14 , 14 ,   15 , 15 , 15 , 16 , 16 ,  // 41 - 50
638                                                   682 
639 // -------------------------------------------    683 // ----------------------------------------------------------
640                                                   684 
641 16 , 16 , 16 , 17 , 18 ,   18 , 19 , 19 , 19 ,    685 16 , 16 , 16 , 17 , 18 ,   18 , 19 , 19 , 19 , 19 ,  // 51 - 60
642                                                   686 
643 19 , 19 , 19 , 20 , 19 ,   19 , 19 , 19 , 19 ,    687 19 , 19 , 19 , 20 , 19 ,   19 , 19 , 19 , 19 , 20 ,  // 61 - 70
644                                                   688 
645 21 , 21 , 21 , 21 , 21 ,   21 , 21 , 21 , 22 ,    689 21 , 21 , 21 , 21 , 21 ,   21 , 21 , 21 , 22 , 22 ,  // 71 - 80
646                                                   690 
647 23 , 23 , 23 , 23 , 24 ,   24 , 25 , 25 , 26 ,    691 23 , 23 , 23 , 23 , 24 ,   24 , 25 , 25 , 26 , 26 ,  // 81 - 90
648                                                   692 
649 27 , 27 , 27 , 26 , 26 ,   27 , 27 , 26 , 26 ,    693 27 , 27 , 27 , 26 , 26 ,   27 , 27 , 26 , 26 , 26    // 91 - 100
650                                                   694 
651 };                                                695 };
                                                   >> 696 
                                                   >> 697 
652                                                   698