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


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