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