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 333 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 ; >> 381 348 } 382 } 349 383 350 //....oooOO0OOooo........oooOO0OOooo........oo << 351 << 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 G4double G4QAOLowEnergyLoss::alShellEnergy[3] ={ 2795e-6, 202e-6, 16.9e-6}; 393 const G4double G4QAOLowEnergyLoss::alShellStre << 434 G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264}; 394 const G4double G4QAOLowEnergyLoss::siShellEner << 435 G4double G4QAOLowEnergyLoss::siShellEnergy[3] ={ 3179e-6, 249e-6, 20.3e-6 }; 395 const G4double G4QAOLowEnergyLoss::siShellStre << 436 G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806}; 396 const G4double G4QAOLowEnergyLoss::cuShellEner << 437 G4double G4QAOLowEnergyLoss::cuShellEnergy[4] ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6}; 397 const G4double G4QAOLowEnergyLoss::cuShellStre << 438 G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021}; 398 const G4double G4QAOLowEnergyLoss::taShellEner << 439 G4double G4QAOLowEnergyLoss::taShellEnergy[6] ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6}; 399 const G4double G4QAOLowEnergyLoss::taShellStre << 440 G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908}; 400 const G4double G4QAOLowEnergyLoss::auShellEner << 441 G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6}; 401 const G4double G4QAOLowEnergyLoss::auShellStre << 442 G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231}; 402 const G4double G4QAOLowEnergyLoss::ptShellEner << 443 G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6}; 403 const G4double G4QAOLowEnergyLoss::ptShellStre << 444 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 >> 517 476 const G4double G4QAOLowEnergyLoss::L1[22][2] = 518 const G4double G4QAOLowEnergyLoss::L1[22][2] = 477 { 519 { 478 {0.00, -0.000001}, 520 {0.00, -0.000001}, 479 {0.10, -0.00001}, 521 {0.10, -0.00001}, 480 {0.20, -0.00049}, 522 {0.20, -0.00049}, 481 {0.30, -0.00084}, 523 {0.30, -0.00084}, 482 {0.40, 0.00085}, 524 {0.40, 0.00085}, 483 {0.50, 0.00519}, 525 {0.50, 0.00519}, 484 {0.60, 0.01198}, 526 {0.60, 0.01198}, 485 {0.70, 0.02074}, 527 {0.70, 0.02074}, 486 {0.80, 0.03133}, 528 {0.80, 0.03133}, 487 {0.90, 0.04369}, 529 {0.90, 0.04369}, 488 {1.00, 0.06035}, 530 {1.00, 0.06035}, 489 {2.00, 0.24023}, 531 {2.00, 0.24023}, 490 {3.00, 0.44284}, 532 {3.00, 0.44284}, 491 {4.00, 0.62012}, 533 {4.00, 0.62012}, 492 {5.00, 0.77031}, 534 {5.00, 0.77031}, 493 {6.00, 0.90390}, 535 {6.00, 0.90390}, 494 {7.00, 1.02705}, 536 {7.00, 1.02705}, 495 {8.00, 1.10867}, 537 {8.00, 1.10867}, 496 {9.00, 1.17546}, 538 {9.00, 1.17546}, 497 {10.00, 1.21599}, 539 {10.00, 1.21599}, 498 {15.00, 1.24349}, 540 {15.00, 1.24349}, 499 {20.00, 1.16752} 541 {20.00, 1.16752} 500 }; 542 }; 501 543 >> 544 502 const G4double G4QAOLowEnergyLoss::L2[14][2] = 545 const G4double G4QAOLowEnergyLoss::L2[14][2] = 503 { 546 { 504 {0.00, 0.000001}, 547 {0.00, 0.000001}, 505 {0.10, 0.00001}, 548 {0.10, 0.00001}, 506 {0.20, 0.00000}, 549 {0.20, 0.00000}, 507 {0.40, -0.00120}, 550 {0.40, -0.00120}, 508 {0.60, -0.00036}, 551 {0.60, -0.00036}, 509 {0.80, 0.00372}, 552 {0.80, 0.00372}, 510 {1.00, 0.01298}, 553 {1.00, 0.01298}, 511 {2.00, 0.08296}, 554 {2.00, 0.08296}, 512 {4.00, 0.21953}, 555 {4.00, 0.21953}, 513 {6.00, 0.23903}, 556 {6.00, 0.23903}, 514 {8.00, 0.20893}, 557 {8.00, 0.20893}, 515 {10.00, 0.10879}, 558 {10.00, 0.10879}, 516 {20.00, -0.88409}, << 559 {20.00, -0.88409}, 517 {40.00, -1.13902} 560 {40.00, -1.13902} 518 }; 561 }; 519 562 520 const G4int G4QAOLowEnergyLoss::nbOfElectronPe << 563 >> 564 const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] = 521 { 565 { 522 0, // consistency with G4AtomicShells 566 0, // consistency with G4AtomicShells 523 1,//------ H 567 1,//------ H 524 2,//------ He 568 2,//------ He 525 2, 1,//------ Li 569 2, 1,//------ Li 526 2, 2,//------ Be 570 2, 2,//------ Be 527 2, 2, 1,//------ B 571 2, 2, 1,//------ B 528 2, 2, 2,//------ C 572 2, 2, 2,//------ C 529 2, 2, 2, 1,//------ N 573 2, 2, 2, 1,//------ N 530 2, 2, 2, 2,//------ O 574 2, 2, 2, 2,//------ O 531 2, 2, 5,//------ F 575 2, 2, 5,//------ F 532 2, 2, 2, 4,//------ Ne 576 2, 2, 2, 4,//------ Ne 533 2, 2, 2, 4, 1,//------ Na 577 2, 2, 2, 4, 1,//------ Na 534 2, 2, 2, 4, 2,//------ Mg 578 2, 2, 2, 4, 2,//------ Mg 535 2, 2, 2, 4, 2, 1,//------ Al 579 2, 2, 2, 4, 2, 1,//------ Al 536 2, 2, 2, 4, 2, 2,//------ Si 580 2, 2, 2, 4, 2, 2,//------ Si 537 2, 2, 2, 4, 2, 3,//------ P 581 2, 2, 2, 4, 2, 3,//------ P 538 2, 2, 2, 4, 2, 4,//------ 582 2, 2, 2, 4, 2, 4,//------ 539 2, 2, 2, 4, 2, 5,//------ 583 2, 2, 2, 4, 2, 5,//------ 540 2, 2, 2, 4, 2, 2, 4,//------ 584 2, 2, 2, 4, 2, 2, 4,//------ 541 2, 2, 2, 4, 2, 2, 4, 1,//------ 585 2, 2, 2, 4, 2, 2, 4, 1,//------ 542 2, 2, 2, 4, 2, 2, 4, 2,//------ 586 2, 2, 2, 4, 2, 2, 4, 2,//------ 543 2, 2, 2, 4, 2, 2, 4, 1, 2,//------ 587 2, 2, 2, 4, 2, 2, 4, 1, 2,//------ 544 2, 2, 2, 4, 2, 2, 4, 2, 2,//------ 588 2, 2, 2, 4, 2, 2, 4, 2, 2,//------ 545 2, 2, 2, 4, 2, 2, 4, 3, 2,//------ 589 2, 2, 2, 4, 2, 2, 4, 3, 2,//------ 546 2, 2, 2, 4, 2, 2, 4, 4, 2,//------ 590 2, 2, 2, 4, 2, 2, 4, 4, 2,//------ 547 2, 2, 2, 4, 2, 2, 4, 5, 2,//------ 591 2, 2, 2, 4, 2, 2, 4, 5, 2,//------ 548 2, 2, 2, 4, 2, 2, 4, 6, 2,//------ 592 2, 2, 2, 4, 2, 2, 4, 6, 2,//------ 549 2, 2, 2, 4, 2, 2, 4, 7, 2,//------ 593 2, 2, 2, 4, 2, 2, 4, 7, 2,//------ 550 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,//---- 594 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,//------ 551 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,//---- 595 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,//------ 552 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,//---- 596 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,//------ 553 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,// 597 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,//------ 554 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,// 598 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,//------ 555 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,// 599 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,//------ 556 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,// 600 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,//------ 557 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,// 601 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,//------ 558 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 602 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,//------ 559 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,//------ 560 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,//------ 561 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 605 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, 606 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, 607 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, 608 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, 609 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, 610 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, 611 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, 612 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, 613 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, 614 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, 615 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, 616 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, 617 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, 618 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, 619 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, 620 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, 621 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, 622 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, 623 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, 624 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, 625 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, 626 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, 627 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, 628 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, 629 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, 630 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, 631 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, 632 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, 633 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, 634 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, 635 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, 636 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, 637 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, 638 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, 639 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, 640 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, 641 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, 642 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, 643 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, 644 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, 645 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, 646 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, 647 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, 648 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, 649 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, 650 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, 651 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, 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,//------ 609 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,//------ 610 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,//------ 611 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, 4, 1, 2,//------ 612 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, 2, 2, 4, 2, 2,//------ 613 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, 2, 2, 2, 4, 1, 2,//------ 614 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, 3, 2, 2, 4, 1, 2,//------ 615 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, 4, 2, 2, 4, 1, 2,//------ 616 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, 6, 2, 2, 4, 2,//------ 617 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, 7, 2, 2, 4, 2,//------ 618 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, 7, 2, 2, 4, 1, 2,//------ 619 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, 8, 2, 2, 4, 1, 2,//------ 620 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, 10, 2, 2, 4, 2,//------ 621 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 665 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,//------ 622 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 666 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2 //----- 623 }; 667 }; 624 668 625 const G4int G4QAOLowEnergyLoss::fNumberOfShell 669 const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] = 626 { 670 { 627 0 , // nonexisting zero element 671 0 , // nonexisting zero element 628 672 629 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 673 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 , // 1 - 10 630 674 631 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 675 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 , // 11 - 20 632 676 633 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 677 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , // 21 - 30 634 678 635 11 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 679 11 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 , // 31 - 40 636 680 637 14 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 681 14 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 , // 41 - 50 638 682 639 // ------------------------------------------- 683 // ---------------------------------------------------------- 640 684 641 16 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 685 16 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 , // 51 - 60 642 686 643 19 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 687 19 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 , // 61 - 70 644 688 645 21 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 689 21 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 , // 71 - 80 646 690 647 23 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 691 23 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , // 81 - 90 648 692 649 27 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 693 27 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26 // 91 - 100 650 694 651 }; 695 }; >> 696 >> 697 652 698