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 // >> 23 // $Id: G4EmCalculator.hh,v 1.9 2005/02/26 22:01:20 vnivanch Exp $ >> 24 // GEANT4 tag $Name: geant4-08-00 $ >> 25 // 26 // 26 // 27 // ------------------------------------------- 27 // ------------------------------------------------------------------- 28 // 28 // 29 // GEANT4 Class header file 29 // GEANT4 Class header file 30 // 30 // 31 // 31 // 32 // File name: G4EmCalculator 32 // File name: G4EmCalculator 33 // 33 // 34 // Author: Vladimir Ivanchenko 34 // Author: Vladimir Ivanchenko 35 // 35 // 36 // Creation date: 27.06.2004 36 // Creation date: 27.06.2004 37 // 37 // 38 // Modifications: 38 // Modifications: 39 // 17.11.2004 Change signature of methods, add 39 // 17.11.2004 Change signature of methods, add new methods (V.Ivanchenko) 40 // 11.01.2006 Add GetCSDARange (V.Ivanchenko) << 40 // 41 // 26.01.2006 Rename GetRange -> GetRangeFromR << 42 // 22.03.2006 Add ComputeElectronicDEDX and Co << 43 // 29.09.2006 Add member loweModel (V.Ivanchen << 44 // 15.03.2007 Add ComputeEnergyCutFromRangeCut << 45 // 02.02.2018 Add parameter to FindLambdaTable << 46 // 41 // 47 // Class Description: 42 // Class Description: 48 // 43 // 49 // Provide access to dE/dx and cross sections 44 // Provide access to dE/dx and cross sections 50 45 51 // ------------------------------------------- 46 // ------------------------------------------------------------------- 52 // 47 // 53 48 54 #ifndef G4EmCalculator_h 49 #ifndef G4EmCalculator_h 55 #define G4EmCalculator_h 1 50 #define G4EmCalculator_h 1 56 51 57 #include <vector> 52 #include <vector> 58 #include "globals.hh" 53 #include "globals.hh" 59 #include "G4VAtomDeexcitation.hh" << 54 #include "G4DataVector.hh" 60 55 61 class G4LossTableManager; 56 class G4LossTableManager; 62 class G4NistManager; << 63 class G4Material; 57 class G4Material; 64 class G4MaterialCutsCouple; 58 class G4MaterialCutsCouple; 65 class G4ParticleDefinition; 59 class G4ParticleDefinition; 66 class G4PhysicsTable; 60 class G4PhysicsTable; 67 class G4VEmModel; 61 class G4VEmModel; 68 class G4VEnergyLossProcess; 62 class G4VEnergyLossProcess; 69 class G4VEmProcess; << 70 class G4VMultipleScattering; << 71 class G4VProcess; << 72 class G4ionEffectiveCharge; 63 class G4ionEffectiveCharge; 73 class G4Region; 64 class G4Region; 74 class G4Element; 65 class G4Element; 75 class G4EmCorrections; 66 class G4EmCorrections; 76 class G4EmParameters; << 77 class G4IonTable; << 78 67 79 class G4EmCalculator 68 class G4EmCalculator 80 { 69 { 81 70 82 public: 71 public: 83 72 84 G4EmCalculator(); 73 G4EmCalculator(); 85 74 86 ~G4EmCalculator(); 75 ~G4EmCalculator(); 87 76 88 //========================================== << 89 // Methods to access precalculated dE/dx and 77 // Methods to access precalculated dE/dx and cross sections 90 // Materials should exist in the list of the 78 // Materials should exist in the list of the G4MaterialCutsCouple 91 //========================================== << 92 79 93 G4double GetDEDX(G4double kinEnergy, const G << 80 G4double GetDEDX(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*, 94 const G4Material*, << 81 const G4Region* r = 0); 95 const G4Region* r = nullptr << 82 G4double GetDEDX(G4double kinEnergy, const G4String& part, const G4String& mat, 96 inline G4double GetDEDX(G4double kinEnergy, << 83 const G4String& s = "world"); 97 const G4String& mat, << 84 98 const G4String& regname = " << 85 G4double GetRange(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*, 99 << 86 const G4Region* r = 0); 100 G4double GetRangeFromRestricteDEDX(G4double << 87 G4double GetRange(G4double kinEnergy, const G4String& part, const G4String& mat, 101 const G4ParticleDefinition*, << 88 const G4String& s = "world"); 102 const G4Material*, << 89 103 const G4Region* r = nullptr); << 90 G4double GetKinEnergy(G4double range, const G4ParticleDefinition*, const G4Material*, 104 inline G4double GetRangeFromRestricteDEDX(G4 << 91 const G4Region* r = 0); 105 const G4String& part, << 92 G4double GetKinEnergy(G4double range, const G4String& part, const G4String& mat, 106 const G4String& mat, << 93 const G4String& s = "world"); 107 const G4String& regname = "world << 108 << 109 G4double GetCSDARange(G4double kinEnergy, co << 110 const G4Material*, << 111 const G4Region* r = nullptr); << 112 inline G4double GetCSDARange(G4double kinEne << 113 const G4String& mat, << 114 const G4String& regname = "world"); << 115 << 116 G4double GetRange(G4double kinEnergy, const << 117 const G4Material*, << 118 const G4Region* r = nullptr); << 119 inline G4double GetRange(G4double kinEnergy, << 120 const G4String& mat, << 121 const G4String& regname = "world"); << 122 << 123 G4double GetKinEnergy(G4double range, const << 124 const G4Material*, << 125 const G4Region* r = nullptr); << 126 inline G4double GetKinEnergy(G4double range, << 127 const G4String& mat, << 128 const G4String& regname = "world"); << 129 94 130 G4double GetCrossSectionPerVolume( 95 G4double GetCrossSectionPerVolume( 131 G4double kinEnergy, const G 96 G4double kinEnergy, const G4ParticleDefinition*, 132 const G4String& processName 97 const G4String& processName, const G4Material*, 133 const G4Region* r = nullptr); << 98 const G4Region* r = 0); 134 inline G4double GetCrossSectionPerVolume( << 99 G4double GetCrossSectionPerVolume( 135 G4double kinEnergy, const G 100 G4double kinEnergy, const G4String& part, const G4String& proc, 136 const G4String& mat, const << 101 const G4String& mat, const G4String& s = "world"); 137 << 102 G4double GetCrossSectionPerAtom( 138 G4double GetShellIonisationCrossSectionPerAt << 103 G4double kinEnergy, const G4ParticleDefinition*, 139 const G4String& part, G4int << 104 const G4String& processName, const G4Material*, 140 G4AtomicShellEnumerator shell, << 105 const G4Region* r = 0); 141 G4double kinEnergy); << 106 G4double GetCrossSectionPerAtom( >> 107 G4double kinEnergy, const G4String& part, const G4String& proc, >> 108 const G4String& mat, const G4String& s = "world"); 142 109 143 G4double GetMeanFreePath(G4double kinEnergy, 110 G4double GetMeanFreePath(G4double kinEnergy, const G4ParticleDefinition*, 144 const G4String& processName, const G << 111 const G4String& processName, const G4Material*, 145 const G4Region* r = nullptr); << 112 const G4Region* r = 0); 146 inline G4double GetMeanFreePath(G4double kin << 113 G4double GetMeanFreePath(G4double kinEnergy, const G4String& part, const G4String& proc, 147 const G4String& proc, const G4String << 114 const G4String& mat, const G4String& s = "world"); 148 const G4String& regname = "world"); << 149 115 150 void PrintDEDXTable(const G4ParticleDefiniti 116 void PrintDEDXTable(const G4ParticleDefinition*); 151 117 152 void PrintRangeTable(const G4ParticleDefinit 118 void PrintRangeTable(const G4ParticleDefinition*); 153 119 154 void PrintInverseRangeTable(const G4Particle 120 void PrintInverseRangeTable(const G4ParticleDefinition*); 155 121 156 //========================================== << 157 // Methods to calculate dE/dx and cross sect 122 // Methods to calculate dE/dx and cross sections "on fly" 158 // Existing tables and G4MaterialCutsCouples 123 // Existing tables and G4MaterialCutsCouples are not used 159 //========================================== << 160 124 161 G4double ComputeDEDX(G4double kinEnergy, con 125 G4double ComputeDEDX(G4double kinEnergy, const G4ParticleDefinition*, 162 const G4String& process 126 const G4String& processName, const G4Material*, 163 G4double cut = DBL_MAX); 127 G4double cut = DBL_MAX); 164 inline G4double ComputeDEDX(G4double kinEner << 128 G4double ComputeDEDX(G4double kinEnergy, const G4String& part, const G4String& proc, 165 const G4String& proc, << 166 const G4String& mat, G4 129 const G4String& mat, G4double cut = DBL_MAX); 167 130 168 G4double ComputeElectronicDEDX(G4double kinE << 131 G4double ComputeNuclearDEDX(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*); 169 const G4ParticleDefinition*, << 132 G4double ComputeNuclearDEDX(G4double kinEnergy, const G4String& part, const G4String& mat); 170 const G4Material* mat, G4double cut = << 171 inline G4double ComputeElectronicDEDX(G4doub << 172 const G4String& mat, G4double cut = D << 173 << 174 G4double ComputeDEDXForCutInRange(G4double k << 175 const G4ParticleDefinition*, << 176 const G4Material* mat, G4double ra << 177 inline G4double ComputeDEDXForCutInRange(G4d << 178 const G4String& mat, << 179 G4double rangecut = DBL_MAX); << 180 << 181 G4double ComputeNuclearDEDX(G4double kinEner << 182 const G4Material*); << 183 inline G4double ComputeNuclearDEDX(G4double << 184 const G4String& mat); << 185 << 186 G4double ComputeTotalDEDX(G4double kinEnergy << 187 const G4Material*, G4double cut = DB << 188 inline G4double ComputeTotalDEDX(G4double ki << 189 const G4String& mat, G4double cut = << 190 133 191 G4double ComputeCrossSectionPerVolume( 134 G4double ComputeCrossSectionPerVolume( 192 G4double kinEnergy, con 135 G4double kinEnergy, const G4ParticleDefinition*, 193 const G4String& process 136 const G4String& processName, const G4Material*, 194 G4double cut = 0.0); 137 G4double cut = 0.0); 195 inline G4double ComputeCrossSectionPerVolume << 138 G4double ComputeCrossSectionPerVolume( 196 G4double kinEnergy, con << 139 G4double kinEnergy, const G4String& part, const G4String& proc, 197 const G4String& proc, << 198 const G4String& mat, G4 140 const G4String& mat, G4double cut = 0.0); 199 141 200 G4double ComputeCrossSectionPerAtom( 142 G4double ComputeCrossSectionPerAtom( 201 G4double kinEnergy, con 143 G4double kinEnergy, const G4ParticleDefinition*, 202 const G4String& process 144 const G4String& processName, G4double Z, G4double A, 203 G4double cut = 0.0); 145 G4double cut = 0.0); 204 inline G4double ComputeCrossSectionPerAtom( << 146 G4double ComputeCrossSectionPerAtom( 205 G4double kinEnergy, con << 206 const G4String& process << 207 G4double cut = 0.0); << 208 << 209 G4double ComputeCrossSectionPerShell( << 210 G4double kinEnergy, con << 211 const G4String& process << 212 G4double cut = 0.0); << 213 inline G4double ComputeCrossSectionPerShell( << 214 G4double kinEnergy, con 147 G4double kinEnergy, const G4String& part, 215 const G4String& process 148 const G4String& processName, const G4Element*, 216 G4int shellIdx, << 217 G4double cut = 0.0); 149 G4double cut = 0.0); 218 150 219 G4double ComputeGammaAttenuationLength(G4dou << 220 const G4Material*); << 221 << 222 G4double ComputeShellIonisationCrossSectionP << 223 const G4String& part, G4int << 224 G4AtomicShellEnumerator shell, << 225 G4double kinEnergy, << 226 const G4Material* mat = nul << 227 << 228 G4double ComputeMeanFreePath( 151 G4double ComputeMeanFreePath( 229 G4double kinEnergy, con 152 G4double kinEnergy, const G4ParticleDefinition*, 230 const G4String& process 153 const G4String& processName, const G4Material*, 231 G4double cut = 0.0); 154 G4double cut = 0.0); 232 inline G4double ComputeMeanFreePath( << 155 G4double ComputeMeanFreePath( 233 G4double kinEnergy, con 156 G4double kinEnergy, const G4String&, const G4String&, 234 const G4String& process 157 const G4String& processName, G4double cut = 0.0); 235 158 236 G4double ComputeEnergyCutFromRangeCut( << 237 G4double range, const G << 238 const G4Material*); << 239 inline G4double ComputeEnergyCutFromRangeCut << 240 G4double range, const G << 241 const G4String&); << 242 << 243 //========================================== << 244 // Methods to access particles, materials, r << 245 //========================================== << 246 << 247 const G4ParticleDefinition* FindParticle(con 159 const G4ParticleDefinition* FindParticle(const G4String&); 248 160 249 const G4ParticleDefinition* FindIon(G4int Z, << 250 << 251 const G4Material* FindMaterial(const G4Strin 161 const G4Material* FindMaterial(const G4String&); 252 162 253 const G4Region* FindRegion(const G4String&); 163 const G4Region* FindRegion(const G4String&); 254 164 255 const G4MaterialCutsCouple* FindCouple(const << 165 const G4MaterialCutsCouple* FindCouple(const G4Material*, const G4Region* r = 0); 256 const G4Region* r = nullptr); << 257 << 258 G4VProcess* FindProcess(const G4ParticleDefi << 259 const G4String& processName); << 260 << 261 void SetupMaterial(const G4Material*); << 262 << 263 void SetupMaterial(const G4String&); << 264 166 265 void SetVerbose(G4int val); 167 void SetVerbose(G4int val); 266 168 267 inline void SetApplySmoothing(G4int val); << 268 << 269 // hide copy and assign << 270 G4EmCalculator & operator=(const G4EmCalcul << 271 G4EmCalculator(const G4EmCalculator&) = del << 272 << 273 private: 169 private: 274 170 275 G4bool UpdateParticle(const G4ParticleDefini 171 G4bool UpdateParticle(const G4ParticleDefinition*, G4double kinEnergy); 276 172 277 G4bool UpdateCouple(const G4Material*, G4dou 173 G4bool UpdateCouple(const G4Material*, G4double cut); 278 174 279 void FindLambdaTable(const G4ParticleDefinit << 175 void FindLambdaTable(const G4ParticleDefinition*, const G4String& processName); 280 const G4String& process << 281 G4double kinEnergy, G4i << 282 176 283 G4bool FindEmModel(const G4ParticleDefinitio 177 G4bool FindEmModel(const G4ParticleDefinition*, 284 const G4String& processNa 178 const G4String& processName, 285 G4double kinEnergy) 179 G4double kinEnergy); 286 180 287 G4VEnergyLossProcess* FindEnLossProcess(cons << 181 const G4VEnergyLossProcess* FindEnergyLossProcess(const G4ParticleDefinition*); 288 const G4String& processName); << 289 << 290 G4VEmProcess* FindDiscreteProcess(const G4Pa << 291 const G4String& processName); << 292 << 293 G4VMultipleScattering* FindMscProcess(const << 294 const G4String& processName); << 295 182 296 G4bool ActiveForParticle(const G4ParticleDef << 183 G4EmCalculator & operator=(const G4EmCalculator &right); 297 G4VProcess* proc); << 184 G4EmCalculator(const G4EmCalculator&); 298 185 299 void CheckMaterial(G4int Z); << 186 std::vector<const G4Material*> localMaterials; >> 187 std::vector<const G4MaterialCutsCouple*> localCouples; 300 188 301 G4EmParameters* theParameters; << 302 G4LossTableManager* manager; 189 G4LossTableManager* manager; 303 G4NistManager* nist; << 304 G4IonTable* ionTable; << 305 G4EmCorrections* corr; 190 G4EmCorrections* corr; >> 191 G4DataVector localCuts; >> 192 G4int nLocalMaterials; 306 193 307 // cache << 194 G4int verbose; 308 const G4MaterialCutsCouple* currentCouple = << 309 const G4Material* currentMaterial << 310 const G4Material* cutMaterial = n << 311 const G4ParticleDefinition* currentParticle << 312 const G4ParticleDefinition* lambdaParticle << 313 const G4ParticleDefinition* baseParticle = << 314 const G4PhysicsTable* currentLambda = << 315 << 316 G4VEmModel* currentModel = << 317 G4VEmModel* loweModel = nul << 318 G4VEnergyLossProcess* currentProcess << 319 G4VProcess* curProcess = nu << 320 G4DynamicParticle* dynParticle = n << 321 195 322 const G4ParticleDefinition* theGenericIon; << 196 // cash 323 G4ionEffectiveCharge* ionEffCharge; << 197 G4int currentCoupleIndex; >> 198 const G4MaterialCutsCouple* currentCouple; >> 199 const G4Material* currentMaterial; >> 200 const G4ParticleDefinition* currentParticle; >> 201 const G4ParticleDefinition* baseParticle; >> 202 const G4PhysicsTable* currentLambda; >> 203 G4VEmModel* currentModel; 324 204 325 G4double currentCut = DB << 205 G4ionEffectiveCharge* ionEffCharge; 326 G4double chargeSquare = << 327 G4double massRatio = 1.0 << 328 G4double mass = 0; << 329 G4double cutenergy[3]; << 330 << 331 G4int currentCoupleIn << 332 G4int nLocalMaterials << 333 G4int verbose = 0; << 334 << 335 G4bool isIon = false; << 336 G4bool isApplicable = << 337 G4bool applySmoothing << 338 206 339 std::vector<const G4Material*> lo << 207 G4String currentName; 340 std::vector<const G4MaterialCutsCouple*> lo << 208 G4double currentCut; 341 std::vector<G4double> lo << 209 G4double chargeSquare; >> 210 G4double massRatio; >> 211 G4bool isIon; >> 212 G4bool isApplicable; 342 213 343 G4String currentName = " << 214 G4String currentParticleName; 344 G4String lambdaName = "" << 215 G4String currentMaterialName; 345 G4String currentParticle << 346 G4String currentMaterial << 347 G4String currentProcessN << 348 }; 216 }; 349 217 350 //....oooOO0OOooo.......oooOO0OOooo........ooo 218 //....oooOO0OOooo.......oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 351 //....oooOO0OOooo........oooOO0OOooo........oo << 352 << 353 inline << 354 G4double G4EmCalculator::GetDEDX(G4double kinE << 355 const G4Strin << 356 { << 357 return GetDEDX(kinEnergy,FindParticle(partic << 358 FindMaterial(material),FindRegion(reg)); << 359 } << 360 << 361 //....oooOO0OOooo........oooOO0OOooo........oo << 362 << 363 inline << 364 G4double G4EmCalculator::GetRangeFromRestricte << 365 const G4String& particle, << 366 const G4String& material, << 367 const G4String& reg) << 368 { << 369 return GetRangeFromRestricteDEDX(kinEnergy,F << 370 FindMaterial(material),FindRegion(r << 371 } << 372 << 373 //....oooOO0OOooo........oooOO0OOooo........oo << 374 << 375 inline << 376 G4double G4EmCalculator::GetCSDARange(G4double << 377 const G4String& particle, << 378 const G4String& material, << 379 const G4String& reg) << 380 { << 381 return GetCSDARange(kinEnergy,FindParticle(p << 382 FindMaterial(material),FindRegion(reg)); << 383 } << 384 << 385 //....oooOO0OOooo........oooOO0OOooo........oo << 386 << 387 inline << 388 G4double G4EmCalculator::GetRange(G4double kin << 389 const G4String& particle, << 390 const G4String& material, << 391 const G4String& reg) << 392 { << 393 return GetRange(kinEnergy,FindParticle(parti << 394 FindMaterial(material),FindRegion(reg)); << 395 } << 396 << 397 //....oooOO0OOooo........oooOO0OOooo........oo << 398 << 399 inline << 400 G4double G4EmCalculator::GetKinEnergy(G4double << 401 const G4 << 402 { << 403 return GetKinEnergy(range,FindParticle(parti << 404 FindMaterial(material),FindRegion(re << 405 } << 406 << 407 //....oooOO0OOooo........oooOO0OOooo........oo << 408 << 409 inline << 410 G4double G4EmCalculator::GetCrossSectionPerVol << 411 co << 412 const G4String& processName, << 413 co << 414 const G4String& reg) << 415 { << 416 return GetCrossSectionPerVolume(kinEnergy,Fi << 417 FindMaterial << 418 } << 419 << 420 //....oooOO0OOooo........oooOO0OOooo........oo << 421 << 422 inline << 423 G4double G4EmCalculator::GetMeanFreePath(G4dou << 424 const << 425 const G4String& processName, << 426 const << 427 const G4String& reg) << 428 { << 429 return GetMeanFreePath(kinEnergy,FindParticl << 430 FindMaterial(material << 431 } << 432 << 433 //....oooOO0OOooo........oooOO0OOooo........oo << 434 << 435 inline G4double << 436 G4EmCalculator::ComputeElectronicDEDX(G4double << 437 const G4String& mat, G4double cu << 438 { << 439 return << 440 ComputeElectronicDEDX(kinEnergy,FindPartic << 441 } << 442 << 443 //....oooOO0OOooo........oooOO0OOooo........oo << 444 << 445 inline G4double << 446 G4EmCalculator::ComputeDEDXForCutInRange(G4dou << 447 const G4String& part, << 448 const G4String& mat, << 449 G4double rangecut) << 450 { << 451 return ComputeDEDXForCutInRange(kinEnergy,Fi << 452 FindMaterial(mat), rangecut); << 453 } << 454 << 455 //....oooOO0OOooo........oooOO0OOooo........oo << 456 << 457 inline << 458 G4double G4EmCalculator::ComputeTotalDEDX(G4do << 459 const G4String& part, << 460 const G4String& mat, << 461 G4double cut) << 462 { << 463 return ComputeTotalDEDX(kinEnergy,FindPartic << 464 } << 465 << 466 //....oooOO0OOooo........oooOO0OOooo........oo << 467 << 468 inline << 469 G4double G4EmCalculator::ComputeDEDX(G4double << 470 const G4S << 471 const G4String& processName, << 472 const G4S << 473 G4d << 474 { << 475 return ComputeDEDX(kinEnergy,FindParticle(pa << 476 FindMaterial(material),cu << 477 } << 478 << 479 //....oooOO0OOooo........oooOO0OOooo........oo << 480 << 481 inline << 482 G4double G4EmCalculator::ComputeNuclearDEDX(G4 << 483 const G4 << 484 const G4String& material) << 485 { << 486 return ComputeNuclearDEDX(kinEnergy,FindPart << 487 FindMaterial(material)); << 488 } << 489 << 490 //....oooOO0OOooo........oooOO0OOooo........oo << 491 << 492 inline << 493 G4double G4EmCalculator::ComputeCrossSectionPe << 494 << 495 c << 496 const G4String& processName, << 497 c << 498 << 499 { << 500 return ComputeCrossSectionPerVolume(kinEnerg << 501 processName, << 502 FindMate << 503 } << 504 << 505 //....oooOO0OOooo........oooOO0OOooo........oo << 506 << 507 inline << 508 G4double G4EmCalculator::ComputeCrossSectionPe << 509 << 510 << 511 const G4Element* elm, << 512 G4doub << 513 { << 514 return ComputeCrossSectionPerAtom(kinEnergy, << 515 processName, << 516 elm->GetZ( << 517 } << 518 << 519 //....oooOO0OOooo........oooOO0OOooo........oo << 520 << 521 inline G4double G4EmCalculator::ComputeCrossSe << 522 G4double kinEnergy, con << 523 const G4String& process << 524 G4int shellIdx, G4doubl << 525 { << 526 return ComputeCrossSectionPerShell(kinEnergy << 527 processName, elm->GetZasInt(), << 528 shellIdx, cut); << 529 } << 530 << 531 //....oooOO0OOooo........oooOO0OOooo........oo << 532 << 533 inline << 534 G4double G4EmCalculator::ComputeEnergyCutFromR << 535 G4double range, << 536 const G4String& particle, << 537 const G4String& material) << 538 { << 539 return ComputeEnergyCutFromRangeCut(range,Fi << 540 FindMaterial(material)); << 541 } << 542 << 543 //....oooOO0OOooo........oooOO0OOooo........oo << 544 << 545 inline << 546 G4double G4EmCalculator::ComputeMeanFreePath(G << 547 c << 548 c << 549 c << 550 << 551 { << 552 return ComputeMeanFreePath(kinEnergy,FindPar << 553 FindMaterial(mate << 554 } << 555 << 556 //....oooOO0OOooo........oooOO0OOooo........oo << 557 << 558 inline void G4EmCalculator::SetApplySmoothing( << 559 { << 560 applySmoothing = val; << 561 } << 562 << 563 //....oooOO0OOooo........oooOO0OOooo........oo << 564 219 565 #endif 220 #endif 566 221