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