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 // $Id: G4EmCalculator.hh,v 1.16 2006/06/29 19:54:21 gunter Exp $ >> 27 // GEANT4 tag $Name: geant4-08-01 $ >> 28 // 26 // 29 // 27 // ------------------------------------------- 30 // ------------------------------------------------------------------- 28 // 31 // 29 // GEANT4 Class header file 32 // GEANT4 Class header file 30 // 33 // 31 // 34 // 32 // File name: G4EmCalculator 35 // File name: G4EmCalculator 33 // 36 // 34 // Author: Vladimir Ivanchenko 37 // Author: Vladimir Ivanchenko 35 // 38 // 36 // Creation date: 27.06.2004 39 // Creation date: 27.06.2004 37 // 40 // 38 // Modifications: 41 // Modifications: 39 // 17.11.2004 Change signature of methods, add 42 // 17.11.2004 Change signature of methods, add new methods (V.Ivanchenko) 40 // 11.01.2006 Add GetCSDARange (V.Ivanchenko) 43 // 11.01.2006 Add GetCSDARange (V.Ivanchenko) 41 // 26.01.2006 Rename GetRange -> GetRangeFromR 44 // 26.01.2006 Rename GetRange -> GetRangeFromRestricteDEDX (V.Ivanchenko) 42 // 22.03.2006 Add ComputeElectronicDEDX and Co 45 // 22.03.2006 Add ComputeElectronicDEDX and ComputeTotalDEDX (V.Ivanchenko) 43 // 29.09.2006 Add member loweModel (V.Ivanchen << 44 // 15.03.2007 Add ComputeEnergyCutFromRangeCut << 45 // 02.02.2018 Add parameter to FindLambdaTable << 46 // 46 // 47 // Class Description: 47 // Class Description: 48 // 48 // 49 // Provide access to dE/dx and cross sections 49 // Provide access to dE/dx and cross sections 50 50 51 // ------------------------------------------- 51 // ------------------------------------------------------------------- 52 // 52 // 53 53 54 #ifndef G4EmCalculator_h 54 #ifndef G4EmCalculator_h 55 #define G4EmCalculator_h 1 55 #define G4EmCalculator_h 1 56 56 57 #include <vector> 57 #include <vector> 58 #include "globals.hh" 58 #include "globals.hh" 59 #include "G4VAtomDeexcitation.hh" << 59 #include "G4DataVector.hh" 60 60 61 class G4LossTableManager; 61 class G4LossTableManager; 62 class G4NistManager; << 63 class G4Material; 62 class G4Material; 64 class G4MaterialCutsCouple; 63 class G4MaterialCutsCouple; 65 class G4ParticleDefinition; 64 class G4ParticleDefinition; 66 class G4PhysicsTable; 65 class G4PhysicsTable; 67 class G4VEmModel; 66 class G4VEmModel; 68 class G4VEnergyLossProcess; 67 class G4VEnergyLossProcess; 69 class G4VEmProcess; << 70 class G4VMultipleScattering; << 71 class G4VProcess; << 72 class G4ionEffectiveCharge; 68 class G4ionEffectiveCharge; 73 class G4Region; 69 class G4Region; 74 class G4Element; 70 class G4Element; 75 class G4EmCorrections; 71 class G4EmCorrections; 76 class G4EmParameters; << 77 class G4IonTable; << 78 72 79 class G4EmCalculator 73 class G4EmCalculator 80 { 74 { 81 75 82 public: 76 public: 83 77 84 G4EmCalculator(); 78 G4EmCalculator(); 85 79 86 ~G4EmCalculator(); 80 ~G4EmCalculator(); 87 81 88 //========================================== << 89 // Methods to access precalculated dE/dx and 82 // Methods to access precalculated dE/dx and cross sections 90 // Materials should exist in the list of the 83 // Materials should exist in the list of the G4MaterialCutsCouple 91 //========================================== << 92 84 93 G4double GetDEDX(G4double kinEnergy, const G << 85 G4double GetDEDX(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*, 94 const G4Material*, << 86 const G4Region* r = 0); 95 const G4Region* r = nullptr << 87 G4double GetDEDX(G4double kinEnergy, const G4String& part, const G4String& mat, 96 inline G4double GetDEDX(G4double kinEnergy, << 88 const G4String& s = "world"); 97 const G4String& mat, << 98 const G4String& regname = " << 99 89 100 G4double GetRangeFromRestricteDEDX(G4double << 90 G4double GetRangeFromRestricteDEDX(G4double kinEnergy, const G4ParticleDefinition*, 101 const G4ParticleDefinition*, << 102 const G4Material*, 91 const G4Material*, 103 const G4Region* r = nullptr); << 92 const G4Region* r = 0); 104 inline G4double GetRangeFromRestricteDEDX(G4 << 93 G4double GetRangeFromRestricteDEDX(G4double kinEnergy, const G4String& part, 105 const G4String& part, << 94 const G4String& mat, 106 const G4String& mat, << 95 const G4String& s = "world"); 107 const G4String& regname = "world << 108 96 109 G4double GetCSDARange(G4double kinEnergy, co 97 G4double GetCSDARange(G4double kinEnergy, const G4ParticleDefinition*, 110 const G4Material*, 98 const G4Material*, 111 const G4Region* r = nullptr); << 99 const G4Region* r = 0); 112 inline G4double GetCSDARange(G4double kinEne << 100 G4double GetCSDARange(G4double kinEnergy, const G4String& part, 113 const G4String& mat, 101 const G4String& mat, 114 const G4String& regname = "world"); << 102 const G4String& s = "world"); 115 103 116 G4double GetRange(G4double kinEnergy, const 104 G4double GetRange(G4double kinEnergy, const G4ParticleDefinition*, 117 const G4Material*, 105 const G4Material*, 118 const G4Region* r = nullptr); << 106 const G4Region* r = 0); 119 inline G4double GetRange(G4double kinEnergy, << 107 G4double GetRange(G4double kinEnergy, const G4String& part, 120 const G4String& mat, 108 const G4String& mat, 121 const G4String& regname = "world"); << 109 const G4String& s = "world"); 122 110 123 G4double GetKinEnergy(G4double range, const << 111 G4double GetKinEnergy(G4double range, const G4ParticleDefinition*, const G4Material*, 124 const G4Material*, << 112 const G4Region* r = 0); 125 const G4Region* r = nullptr); << 113 G4double GetKinEnergy(G4double range, const G4String& part, const G4String& mat, 126 inline G4double GetKinEnergy(G4double range, << 114 const G4String& s = "world"); 127 const G4String& mat, << 128 const G4String& regname = "world"); << 129 115 130 G4double GetCrossSectionPerVolume( 116 G4double GetCrossSectionPerVolume( 131 G4double kinEnergy, const G 117 G4double kinEnergy, const G4ParticleDefinition*, 132 const G4String& processName 118 const G4String& processName, const G4Material*, 133 const G4Region* r = nullptr); << 119 const G4Region* r = 0); 134 inline G4double GetCrossSectionPerVolume( << 120 G4double GetCrossSectionPerVolume( 135 G4double kinEnergy, const G 121 G4double kinEnergy, const G4String& part, const G4String& proc, 136 const G4String& mat, const << 122 const G4String& mat, const G4String& s = "world"); 137 << 138 G4double GetShellIonisationCrossSectionPerAt << 139 const G4String& part, G4int << 140 G4AtomicShellEnumerator shell, << 141 G4double kinEnergy); << 142 123 143 G4double GetMeanFreePath(G4double kinEnergy, 124 G4double GetMeanFreePath(G4double kinEnergy, const G4ParticleDefinition*, 144 const G4String& processName, const G << 125 const G4String& processName, const G4Material*, 145 const G4Region* r = nullptr); << 126 const G4Region* r = 0); 146 inline G4double GetMeanFreePath(G4double kin << 127 G4double GetMeanFreePath(G4double kinEnergy, const G4String& part, const G4String& proc, 147 const G4String& proc, const G4String << 128 const G4String& mat, const G4String& s = "world"); 148 const G4String& regname = "world"); << 149 129 150 void PrintDEDXTable(const G4ParticleDefiniti 130 void PrintDEDXTable(const G4ParticleDefinition*); 151 131 152 void PrintRangeTable(const G4ParticleDefinit 132 void PrintRangeTable(const G4ParticleDefinition*); 153 133 154 void PrintInverseRangeTable(const G4Particle 134 void PrintInverseRangeTable(const G4ParticleDefinition*); 155 135 156 //========================================== << 157 // Methods to calculate dE/dx and cross sect 136 // Methods to calculate dE/dx and cross sections "on fly" 158 // Existing tables and G4MaterialCutsCouples 137 // Existing tables and G4MaterialCutsCouples are not used 159 //========================================== << 160 138 161 G4double ComputeDEDX(G4double kinEnergy, con 139 G4double ComputeDEDX(G4double kinEnergy, const G4ParticleDefinition*, 162 const G4String& process 140 const G4String& processName, const G4Material*, 163 G4double cut = DBL_MAX); 141 G4double cut = DBL_MAX); 164 inline G4double ComputeDEDX(G4double kinEner << 142 G4double ComputeDEDX(G4double kinEnergy, const G4String& part, const G4String& proc, 165 const G4String& proc, << 166 const G4String& mat, G4 143 const G4String& mat, G4double cut = DBL_MAX); 167 144 168 G4double ComputeElectronicDEDX(G4double kinE << 145 G4double ComputeElectronicDEDX(G4double kinEnergy, const G4ParticleDefinition*, 169 const G4ParticleDefinition*, << 170 const G4Material* mat, G4double cut = 146 const G4Material* mat, G4double cut = DBL_MAX); 171 inline G4double ComputeElectronicDEDX(G4doub << 147 G4double ComputeElectronicDEDX(G4double kinEnergy, const G4String& part, 172 const G4String& mat, G4double cut = D 148 const G4String& mat, G4double cut = DBL_MAX); 173 149 174 G4double ComputeDEDXForCutInRange(G4double k << 150 G4double ComputeNuclearDEDX(G4double kinEnergy, const G4ParticleDefinition*, const G4Material*); 175 const G4ParticleDefinition*, << 151 G4double ComputeNuclearDEDX(G4double kinEnergy, const G4String& part, const G4String& mat); 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 152 186 G4double ComputeTotalDEDX(G4double kinEnergy 153 G4double ComputeTotalDEDX(G4double kinEnergy, const G4ParticleDefinition*, 187 const G4Material*, G4double cut = DB 154 const G4Material*, G4double cut = DBL_MAX); 188 inline G4double ComputeTotalDEDX(G4double ki << 155 G4double ComputeTotalDEDX(G4double kinEnergy, const G4String& part, 189 const G4String& mat, G4double cut = 156 const G4String& mat, G4double cut = DBL_MAX); 190 157 191 G4double ComputeCrossSectionPerVolume( 158 G4double ComputeCrossSectionPerVolume( 192 G4double kinEnergy, con 159 G4double kinEnergy, const G4ParticleDefinition*, 193 const G4String& process 160 const G4String& processName, const G4Material*, 194 G4double cut = 0.0); 161 G4double cut = 0.0); 195 inline G4double ComputeCrossSectionPerVolume << 162 G4double ComputeCrossSectionPerVolume( 196 G4double kinEnergy, con << 163 G4double kinEnergy, const G4String& part, const G4String& proc, 197 const G4String& proc, << 198 const G4String& mat, G4 164 const G4String& mat, G4double cut = 0.0); 199 165 200 G4double ComputeCrossSectionPerAtom( 166 G4double ComputeCrossSectionPerAtom( 201 G4double kinEnergy, con 167 G4double kinEnergy, const G4ParticleDefinition*, 202 const G4String& process 168 const G4String& processName, G4double Z, G4double A, 203 G4double cut = 0.0); 169 G4double cut = 0.0); 204 inline G4double ComputeCrossSectionPerAtom( << 170 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 171 G4double kinEnergy, const G4String& part, 215 const G4String& process 172 const G4String& processName, const G4Element*, 216 G4int shellIdx, << 217 G4double cut = 0.0); 173 G4double cut = 0.0); 218 174 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( 175 G4double ComputeMeanFreePath( 229 G4double kinEnergy, con 176 G4double kinEnergy, const G4ParticleDefinition*, 230 const G4String& process 177 const G4String& processName, const G4Material*, 231 G4double cut = 0.0); 178 G4double cut = 0.0); 232 inline G4double ComputeMeanFreePath( << 179 G4double ComputeMeanFreePath( 233 G4double kinEnergy, con 180 G4double kinEnergy, const G4String&, const G4String&, 234 const G4String& process 181 const G4String& processName, G4double cut = 0.0); 235 182 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 183 const G4ParticleDefinition* FindParticle(const G4String&); 248 184 249 const G4ParticleDefinition* FindIon(G4int Z, << 250 << 251 const G4Material* FindMaterial(const G4Strin 185 const G4Material* FindMaterial(const G4String&); 252 186 253 const G4Region* FindRegion(const G4String&); 187 const G4Region* FindRegion(const G4String&); 254 188 255 const G4MaterialCutsCouple* FindCouple(const << 189 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 190 265 void SetVerbose(G4int val); 191 void SetVerbose(G4int val); 266 192 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: 193 private: 274 194 275 G4bool UpdateParticle(const G4ParticleDefini 195 G4bool UpdateParticle(const G4ParticleDefinition*, G4double kinEnergy); 276 196 277 G4bool UpdateCouple(const G4Material*, G4dou 197 G4bool UpdateCouple(const G4Material*, G4double cut); 278 198 279 void FindLambdaTable(const G4ParticleDefinit << 199 void FindLambdaTable(const G4ParticleDefinition*, const G4String& processName); 280 const G4String& process << 281 G4double kinEnergy, G4i << 282 200 283 G4bool FindEmModel(const G4ParticleDefinitio 201 G4bool FindEmModel(const G4ParticleDefinition*, 284 const G4String& processNa 202 const G4String& processName, 285 G4double kinEnergy) 203 G4double kinEnergy); 286 204 287 G4VEnergyLossProcess* FindEnLossProcess(cons << 205 G4VEnergyLossProcess* FindEnergyLossProcess(const G4ParticleDefinition*); 288 const G4String& processName); << 289 << 290 G4VEmProcess* FindDiscreteProcess(const G4Pa << 291 const G4String& processName); << 292 206 293 G4VMultipleScattering* FindMscProcess(const << 207 G4EmCalculator & operator=(const G4EmCalculator &right); 294 const G4String& processName); << 208 G4EmCalculator(const G4EmCalculator&); 295 209 296 G4bool ActiveForParticle(const G4ParticleDef << 210 std::vector<const G4Material*> localMaterials; 297 G4VProcess* proc); << 211 std::vector<const G4MaterialCutsCouple*> localCouples; 298 << 299 void CheckMaterial(G4int Z); << 300 212 301 G4EmParameters* theParameters; << 302 G4LossTableManager* manager; 213 G4LossTableManager* manager; 303 G4NistManager* nist; << 304 G4IonTable* ionTable; << 305 G4EmCorrections* corr; 214 G4EmCorrections* corr; >> 215 G4DataVector localCuts; >> 216 G4int nLocalMaterials; >> 217 >> 218 G4int verbose; 306 219 307 // cache << 220 // cash 308 const G4MaterialCutsCouple* currentCouple = << 221 G4int currentCoupleIndex; 309 const G4Material* currentMaterial << 222 const G4MaterialCutsCouple* currentCouple; 310 const G4Material* cutMaterial = n << 223 const G4Material* currentMaterial; 311 const G4ParticleDefinition* currentParticle << 224 const G4ParticleDefinition* currentParticle; 312 const G4ParticleDefinition* lambdaParticle << 225 const G4ParticleDefinition* baseParticle; 313 const G4ParticleDefinition* baseParticle = << 226 const G4PhysicsTable* currentLambda; 314 const G4PhysicsTable* currentLambda = << 227 G4VEmModel* currentModel; 315 << 228 G4VEnergyLossProcess* currentProcess; 316 G4VEmModel* currentModel = << 317 G4VEmModel* loweModel = nul << 318 G4VEnergyLossProcess* currentProcess << 319 G4VProcess* curProcess = nu << 320 G4DynamicParticle* dynParticle = n << 321 229 322 const G4ParticleDefinition* theGenericIon; 230 const G4ParticleDefinition* theGenericIon; 323 G4ionEffectiveCharge* ionEffCharge; 231 G4ionEffectiveCharge* ionEffCharge; 324 232 325 G4double currentCut = DB << 233 G4String currentName; 326 G4double chargeSquare = << 234 G4double currentCut; 327 G4double massRatio = 1.0 << 235 G4double chargeSquare; 328 G4double mass = 0; << 236 G4double massRatio; 329 G4double cutenergy[3]; << 237 G4double mass; 330 << 238 G4bool isIon; 331 G4int currentCoupleIn << 239 G4bool isApplicable; 332 G4int nLocalMaterials << 240 333 G4int verbose = 0; << 241 G4String currentParticleName; 334 << 242 G4String currentMaterialName; 335 G4bool isIon = false; << 243 G4String currentProcessName; 336 G4bool isApplicable = << 337 G4bool applySmoothing << 338 << 339 std::vector<const G4Material*> lo << 340 std::vector<const G4MaterialCutsCouple*> lo << 341 std::vector<G4double> lo << 342 << 343 G4String currentName = " << 344 G4String lambdaName = "" << 345 G4String currentParticle << 346 G4String currentMaterial << 347 G4String currentProcessN << 348 }; 244 }; 349 245 350 //....oooOO0OOooo.......oooOO0OOooo........ooo 246 //....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 247 565 #endif 248 #endif 566 249