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