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