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