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