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 8.1.p1)


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