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: G4EmParameters.hh 66885 2013-01-16 17:37:13Z gunter $ >> 27 // >> 28 // 26 // ------------------------------------------- 29 // ------------------------------------------------------------------- 27 // 30 // 28 // GEANT4 Class header file 31 // GEANT4 Class header file 29 // 32 // >> 33 // 30 // File name: G4EmParameters 34 // File name: G4EmParameters 31 // 35 // 32 // Author: Vladimir Ivanchenko for migr 36 // Author: Vladimir Ivanchenko for migration to MT 33 // 37 // 34 // 38 // 35 // Creation date: 17.05.2013 39 // Creation date: 17.05.2013 36 // 40 // 37 // Modifications: 41 // Modifications: 38 // 42 // 39 // 43 // 40 // Class Description: 44 // Class Description: 41 // 45 // 42 // A utility static class, responsable for kee 46 // A utility static class, responsable for keeping parameters 43 // for all EM physics processes and models. 47 // for all EM physics processes and models. 44 // 48 // 45 // It is initialized by the master thread but 49 // It is initialized by the master thread but can be updated 46 // at any moment. Parameters may be used in ru 50 // at any moment. Parameters may be used in run time or at 47 // initialisation 51 // initialisation 48 // 52 // 49 // ------------------------------------------- 53 // ------------------------------------------------------------------- 50 // 54 // 51 55 52 #ifndef G4EmParameters_h 56 #ifndef G4EmParameters_h 53 #define G4EmParameters_h 1 57 #define G4EmParameters_h 1 54 58 55 #include "globals.hh" 59 #include "globals.hh" 56 #include "G4ios.hh" << 57 #include "G4MscStepLimitType.hh" 60 #include "G4MscStepLimitType.hh" 58 #include "G4NuclearFormfactorType.hh" << 59 #include "G4DNAModelSubType.hh" << 60 #include "G4EmFluoDirectory.hh" << 61 #include "G4EmSaturation.hh" << 62 #include "G4ThreeVector.hh" << 63 #include "G4ChemTimeStepModel.hh" << 64 #include <vector> << 65 #include <map> << 66 enum G4eSingleScatteringType << 67 { << 68 fWVI = 0, << 69 fMott, << 70 fDPWA << 71 }; << 72 << 73 enum class G4TransportationWithMscType << 74 { << 75 fDisabled = 0, << 76 fEnabled, << 77 fMultipleSteps, << 78 }; << 79 << 80 enum G4EmFluctuationType << 81 { << 82 fDummyFluctuation = 0, << 83 fUniversalFluctuation, << 84 fUrbanFluctuation << 85 }; << 86 << 87 enum G4PositronAtRestModelType << 88 { << 89 fSimplePositronium = 0, << 90 fAllisonPositronium, << 91 fOrePowell, << 92 fOrePowellPolar << 93 }; << 94 61 95 class G4EmParametersMessenger; 62 class G4EmParametersMessenger; 96 class G4EmExtraParameters; << 97 class G4EmLowEParameters; << 98 class G4VAtomDeexcitation; << 99 class G4VEnergyLossProcess; << 100 class G4VEmProcess; << 101 class G4StateManager; << 102 63 103 class G4EmParameters 64 class G4EmParameters 104 { 65 { 105 public: 66 public: 106 67 107 static G4EmParameters* Instance(); 68 static G4EmParameters* Instance(); 108 69 109 ~G4EmParameters(); 70 ~G4EmParameters(); 110 71 111 void SetDefaults(); << 112 << 113 // printing << 114 void StreamInfo(std::ostream& os) const; << 115 void Dump(); << 116 friend std::ostream& operator<< (std::ostrea << 117 << 118 // boolean flags << 119 void SetLossFluctuations(G4bool val); 72 void SetLossFluctuations(G4bool val); 120 G4bool LossFluctuation() const; 73 G4bool LossFluctuation() const; 121 74 122 void SetBuildCSDARange(G4bool val); 75 void SetBuildCSDARange(G4bool val); 123 G4bool BuildCSDARange() const; 76 G4bool BuildCSDARange() const; 124 77 125 void SetLPM(G4bool val); 78 void SetLPM(G4bool val); 126 G4bool LPM() const; 79 G4bool LPM() const; 127 80 >> 81 void SetSpline(G4bool val); >> 82 G4bool Spline() const; >> 83 128 void SetUseCutAsFinalRange(G4bool val); 84 void SetUseCutAsFinalRange(G4bool val); 129 G4bool UseCutAsFinalRange() const; 85 G4bool UseCutAsFinalRange() const; 130 86 131 void SetApplyCuts(G4bool val); 87 void SetApplyCuts(G4bool val); 132 G4bool ApplyCuts() const; 88 G4bool ApplyCuts() const; 133 89 134 void SetFluo(G4bool val); 90 void SetFluo(G4bool val); 135 G4bool Fluo() const; 91 G4bool Fluo() const; 136 92 137 G4EmFluoDirectory FluoDirectory() const; << 138 << 139 void SetFluoDirectory(G4EmFluoDirectory); << 140 void SetBeardenFluoDir(G4bool val); << 141 void SetANSTOFluoDir(G4bool val); << 142 void SetXDB_EADLFluoDir(G4bool val); << 143 << 144 G4bool BeardenFluoDir(); << 145 G4bool ANSTOFluoDir(); << 146 << 147 void SetAuger(G4bool val); 93 void SetAuger(G4bool val); 148 void SetAugerCascade(G4bool val) { SetAuger( << 149 G4bool Auger() const; 94 G4bool Auger() const; 150 G4bool AugerCascade() const { return Auger() << 151 95 152 void SetPixe(G4bool val); 96 void SetPixe(G4bool val); 153 G4bool Pixe() const; 97 G4bool Pixe() const; 154 98 155 void SetDeexcitationIgnoreCut(G4bool val); 99 void SetDeexcitationIgnoreCut(G4bool val); 156 G4bool DeexcitationIgnoreCut() const; 100 G4bool DeexcitationIgnoreCut() const; 157 101 158 void SetLateralDisplacement(G4bool val); 102 void SetLateralDisplacement(G4bool val); 159 G4bool LateralDisplacement() const; 103 G4bool LateralDisplacement() const; 160 104 161 void SetLateralDisplacementAlg96(G4bool val) << 162 G4bool LateralDisplacementAlg96() const; << 163 << 164 void SetMuHadLateralDisplacement(G4bool val) 105 void SetMuHadLateralDisplacement(G4bool val); 165 G4bool MuHadLateralDisplacement() const; 106 G4bool MuHadLateralDisplacement() const; 166 107 >> 108 void SetLatDisplacementBeyondSafety(G4bool val); >> 109 G4bool LatDisplacementBeyondSafety() const; >> 110 167 void ActivateAngularGeneratorForIonisation(G 111 void ActivateAngularGeneratorForIonisation(G4bool val); 168 G4bool UseAngularGeneratorForIonisation() co 112 G4bool UseAngularGeneratorForIonisation() const; 169 113 170 void SetUseMottCorrection(G4bool val); << 114 void SetMinSubRange(G4double val); 171 G4bool UseMottCorrection() const; << 115 G4double MinSubRange() const; 172 << 173 void SetIntegral(G4bool val); << 174 G4bool Integral() const; << 175 << 176 void SetBirksActive(G4bool val); << 177 G4bool BirksActive() const; << 178 << 179 void SetUseICRU90Data(G4bool val); << 180 G4bool UseICRU90Data() const; << 181 << 182 void SetFluctuationType(G4EmFluctuationType << 183 G4EmFluctuationType FluctuationType() const; << 184 << 185 void SetPositronAtRestModelType(G4PositronAt << 186 G4PositronAtRestModelType PositronAtRestMode << 187 << 188 void SetDNAFast(G4bool val); << 189 G4bool DNAFast() const; << 190 << 191 void SetDNAStationary(G4bool val); << 192 G4bool DNAStationary() const; << 193 << 194 void SetDNAElectronMsc(G4bool val); << 195 G4bool DNAElectronMsc() const; << 196 << 197 // if general interaction is enabled then << 198 // force interaction options should be disab << 199 void SetGeneralProcessActive(G4bool val); << 200 G4bool GeneralProcessActive() const; << 201 << 202 void SetEnableSamplingTable(G4bool val); << 203 G4bool EnableSamplingTable() const; << 204 << 205 void SetEnablePolarisation(G4bool val); << 206 G4bool EnablePolarisation() const; << 207 << 208 G4bool GetDirectionalSplitting() const; << 209 void SetDirectionalSplitting(G4bool v); << 210 << 211 G4bool QuantumEntanglement() const; << 212 void SetQuantumEntanglement(G4bool v); << 213 << 214 G4bool RetrieveMuDataFromFile() const; << 215 void SetRetrieveMuDataFromFile(G4bool v); << 216 << 217 G4bool PhotoeffectBelowKShell() const; << 218 void SetPhotoeffectBelowKShell(G4bool v); << 219 116 220 G4bool MscPositronCorrection() const; << 221 void SetMscPositronCorrection(G4bool v); << 222 << 223 G4bool UseEPICS2017XS() const; << 224 void SetUseEPICS2017XS(G4bool v); << 225 << 226 G4bool Use3GammaAnnihilationOnFly() const; << 227 void Set3GammaAnnihilationOnFly(G4bool v); << 228 << 229 G4bool UseRiGePairProductionModel() const; << 230 void SetUseRiGePairProductionModel(G4bool v) << 231 << 232 // 5d << 233 void SetOnIsolated(G4bool val); << 234 G4bool OnIsolated() const; << 235 << 236 void ActivateDNA(); << 237 void SetIsPrintedFlag(G4bool val); << 238 G4bool IsPrintLocked() const; << 239 << 240 // double parameters with values << 241 void SetMinEnergy(G4double val); 117 void SetMinEnergy(G4double val); 242 G4double MinKinEnergy() const; 118 G4double MinKinEnergy() const; 243 119 244 void SetMaxEnergy(G4double val); 120 void SetMaxEnergy(G4double val); 245 G4double MaxKinEnergy() const; 121 G4double MaxKinEnergy() const; 246 122 247 void SetMaxEnergyForCSDARange(G4double val); 123 void SetMaxEnergyForCSDARange(G4double val); 248 G4double MaxEnergyForCSDARange() const; 124 G4double MaxEnergyForCSDARange() const; 249 125 250 void SetLowestElectronEnergy(G4double val); << 251 G4double LowestElectronEnergy() const; << 252 << 253 void SetLowestMuHadEnergy(G4double val); << 254 G4double LowestMuHadEnergy() const; << 255 << 256 void SetLowestTripletEnergy(G4double val); << 257 G4double LowestTripletEnergy() const; << 258 << 259 void SetLinearLossLimit(G4double val); 126 void SetLinearLossLimit(G4double val); 260 G4double LinearLossLimit() const; 127 G4double LinearLossLimit() const; 261 128 262 void SetBremsstrahlungTh(G4double val); 129 void SetBremsstrahlungTh(G4double val); 263 G4double BremsstrahlungTh() const; 130 G4double BremsstrahlungTh() const; 264 void SetMuHadBremsstrahlungTh(G4double val); << 265 G4double MuHadBremsstrahlungTh() const; << 266 131 267 void SetLambdaFactor(G4double val); 132 void SetLambdaFactor(G4double val); 268 G4double LambdaFactor() const; 133 G4double LambdaFactor() const; 269 134 270 void SetFactorForAngleLimit(G4double val); 135 void SetFactorForAngleLimit(G4double val); 271 G4double FactorForAngleLimit() const; 136 G4double FactorForAngleLimit() const; 272 137 273 void SetMscThetaLimit(G4double val); 138 void SetMscThetaLimit(G4double val); 274 G4double MscThetaLimit() const; 139 G4double MscThetaLimit() const; 275 140 276 void SetMscEnergyLimit(G4double val); << 277 G4double MscEnergyLimit() const; << 278 << 279 void SetMscRangeFactor(G4double val); 141 void SetMscRangeFactor(G4double val); 280 G4double MscRangeFactor() const; 142 G4double MscRangeFactor() const; 281 143 282 void SetMscMuHadRangeFactor(G4double val); << 283 G4double MscMuHadRangeFactor() const; << 284 << 285 void SetMscGeomFactor(G4double val); 144 void SetMscGeomFactor(G4double val); 286 G4double MscGeomFactor() const; 145 G4double MscGeomFactor() const; 287 146 288 void SetMscSafetyFactor(G4double val); << 289 G4double MscSafetyFactor() const; << 290 << 291 void SetMscLambdaLimit(G4double val); << 292 G4double MscLambdaLimit() const; << 293 << 294 void SetMscSkin(G4double val); 147 void SetMscSkin(G4double val); 295 G4double MscSkin() const; 148 G4double MscSkin() const; 296 149 297 void SetScreeningFactor(G4double val); << 150 void SetNumberOfBins(G4int val); 298 G4double ScreeningFactor() const; << 151 G4int NumberOfBins() const; 299 << 300 void SetMaxNIELEnergy(G4double val); << 301 G4double MaxNIELEnergy() const; << 302 << 303 void SetMaxEnergyFor5DMuPair(G4double val); << 304 G4double MaxEnergyFor5DMuPair() const; << 305 << 306 void SetStepFunction(G4double v1, G4double v << 307 void SetStepFunctionMuHad(G4double v1, G4dou << 308 void SetStepFunctionLightIons(G4double v1, G << 309 void SetStepFunctionIons(G4double v1, G4doub << 310 void FillStepFunction(const G4ParticleDefini << 311 << 312 void SetDirectionalSplittingRadius(G4double << 313 G4double GetDirectionalSplittingRadius(); << 314 << 315 void SetDirectionalSplittingTarget(const G4T << 316 G4ThreeVector GetDirectionalSplittingTarget( << 317 152 318 // integer parameters << 319 << 320 void SetNumberOfBinsPerDecade(G4int val); 153 void SetNumberOfBinsPerDecade(G4int val); 321 G4int NumberOfBinsPerDecade() const; 154 G4int NumberOfBinsPerDecade() const; 322 G4int NumberOfBins() const; << 323 155 324 void SetVerbose(G4int val); 156 void SetVerbose(G4int val); 325 G4int Verbose() const; 157 G4int Verbose() const; 326 158 327 void SetWorkerVerbose(G4int val); 159 void SetWorkerVerbose(G4int val); 328 G4int WorkerVerbose() const; 160 G4int WorkerVerbose() const; 329 161 330 void SetNumberForFreeVector(G4int val); << 331 G4int NumberForFreeVector() const; << 332 << 333 void SetTransportationWithMsc(G4Transportati << 334 G4TransportationWithMscType TransportationWi << 335 << 336 void SetMscStepLimitType(G4MscStepLimitType 162 void SetMscStepLimitType(G4MscStepLimitType val); 337 G4MscStepLimitType MscStepLimitType() const; 163 G4MscStepLimitType MscStepLimitType() const; 338 164 339 void SetMscMuHadStepLimitType(G4MscStepLimit << 340 G4MscStepLimitType MscMuHadStepLimitType() c << 341 << 342 void SetSingleScatteringType(G4eSingleScatte << 343 G4eSingleScatteringType SingleScatteringType << 344 << 345 void SetNuclearFormfactorType(G4NuclearFormf << 346 G4NuclearFormfactorType NuclearFormfactorTyp << 347 << 348 void SetDNAeSolvationSubType(G4DNAModelSubTy << 349 G4DNAModelSubType DNAeSolvationSubType() con << 350 << 351 //DNA chemistry model << 352 void SetTimeStepModel(const G4ChemTimeStepMo << 353 G4ChemTimeStepModel GetTimeStepModel() const << 354 //5d << 355 void SetConversionType(G4int val); << 356 G4int GetConversionType() const; << 357 << 358 // string parameters << 359 void SetPIXECrossSectionModel(const G4String << 360 const G4String& PIXECrossSectionModel(); << 361 << 362 void SetPIXEElectronCrossSectionModel(const << 363 const G4String& PIXEElectronCrossSectionMode << 364 << 365 void SetLivermoreDataDir(const G4String&); << 366 const G4String& LivermoreDataDir(); << 367 << 368 // parameters per region or per process << 369 void AddPAIModel(const G4String& particle, << 370 const G4String& region, << 371 const G4String& type); << 372 const std::vector<G4String>& ParticlesPAI() << 373 const std::vector<G4String>& RegionsPAI() co << 374 const std::vector<G4String>& TypesPAI() cons << 375 << 376 void AddMicroElec(const G4String& region); << 377 const std::vector<G4String>& RegionsMicroEle << 378 << 379 void AddDNA(const G4String& region, const G4 << 380 const std::vector<G4String>& RegionsDNA() co << 381 const std::vector<G4String>& TypesDNA() cons << 382 << 383 void AddPhysics(const G4String& region, cons << 384 const std::vector<G4String>& RegionsPhysics( << 385 const std::vector<G4String>& TypesPhysics() << 386 << 387 void SetSubCutRegion(const G4String& region << 388 << 389 void SetDeexActiveRegion(const G4String& reg << 390 G4bool fauger, G4bool fpixe); << 391 << 392 void SetProcessBiasingFactor(const G4String& << 393 G4double val, G << 394 << 395 void ActivateForcedInteraction(const G4Strin << 396 const G4Strin << 397 G4double leng << 398 G4bool wflag) << 399 << 400 void ActivateSecondaryBiasing(const G4String << 401 const G4String& region, << 402 G4double factor, << 403 G4double energyLimit); << 404 << 405 // define external saturation class << 406 void SetEmSaturation(G4EmSaturation*); << 407 // create and access saturation class << 408 G4EmSaturation* GetEmSaturation(); << 409 << 410 // initialisation methods << 411 void DefineRegParamForLoss(G4VEnergyLossProc << 412 void DefineRegParamForEM(G4VEmProcess*) cons << 413 void DefineRegParamForDeex(G4VAtomDeexcitati << 414 << 415 const G4String& GetDirLEDATA() const; << 416 << 417 G4EmParameters(G4EmParameters &) = delete; << 418 G4EmParameters & operator=(const G4EmParamet << 419 << 420 private: 165 private: 421 166 422 G4EmParameters(); 167 G4EmParameters(); 423 168 424 void Initialise(); << 169 void PrintWarning(G4ExceptionDescription& ed); 425 << 426 G4bool IsLocked() const; << 427 << 428 void PrintWarning(G4ExceptionDescription& ed << 429 170 430 static G4EmParameters* theInstance; 171 static G4EmParameters* theInstance; 431 172 432 G4EmParametersMessenger* theMessenger; 173 G4EmParametersMessenger* theMessenger; 433 G4EmExtraParameters* fBParameters; << 434 G4EmLowEParameters* fCParameters; << 435 G4StateManager* fStateManager; << 436 G4EmSaturation* emSaturation; << 437 174 438 G4bool lossFluctuation; 175 G4bool lossFluctuation; 439 G4bool buildCSDARange; 176 G4bool buildCSDARange; 440 G4bool flagLPM; 177 G4bool flagLPM; 441 G4bool cutAsFinalRange; << 178 G4bool spline; >> 179 G4bool finalRange; 442 G4bool applyCuts; 180 G4bool applyCuts; >> 181 G4bool fluo; >> 182 G4bool auger; >> 183 G4bool pixe; >> 184 G4bool deexIgnoreCut; 443 G4bool lateralDisplacement; 185 G4bool lateralDisplacement; 444 G4bool lateralDisplacementAlg96; << 445 G4bool muhadLateralDisplacement; 186 G4bool muhadLateralDisplacement; >> 187 G4bool latDisplacementBeyondSafety; 446 G4bool useAngGeneratorForIonisation; 188 G4bool useAngGeneratorForIonisation; 447 G4bool useMottCorrection; << 189 448 G4bool integral; << 190 G4double minSubRange; 449 G4bool birks; << 450 G4bool fICRU90; << 451 G4bool gener; << 452 G4bool fSamplingTable; << 453 G4bool fPolarisation; << 454 G4bool fMuDataFromFile; << 455 G4bool fPEKShell; << 456 G4bool fMscPosiCorr; << 457 G4bool fUseEPICS2017XS; << 458 G4bool f3GammaAnnihilationOnFly; << 459 G4bool fUseRiGePairProductionModel; << 460 G4bool onIsolated; // 5d model conversion on << 461 G4bool fDNA; << 462 G4bool fIsPrinted; << 463 << 464 G4double minKinEnergy; 191 G4double minKinEnergy; 465 G4double maxKinEnergy; 192 G4double maxKinEnergy; 466 G4double maxKinEnergyCSDA; 193 G4double maxKinEnergyCSDA; 467 G4double max5DEnergyForMuPair; << 468 G4double lowestElectronEnergy; << 469 G4double lowestMuHadEnergy; << 470 G4double lowestTripletEnergy; << 471 G4double linLossLimit; 194 G4double linLossLimit; 472 G4double bremsTh; 195 G4double bremsTh; 473 G4double bremsMuHadTh; << 474 G4double lambdaFactor; 196 G4double lambdaFactor; 475 G4double factorForAngleLimit; 197 G4double factorForAngleLimit; 476 G4double thetaLimit; 198 G4double thetaLimit; 477 G4double energyLimit; << 478 G4double maxNIELEnergy; << 479 G4double rangeFactor; 199 G4double rangeFactor; 480 G4double rangeFactorMuHad; << 481 G4double geomFactor; 200 G4double geomFactor; 482 G4double safetyFactor; << 483 G4double lambdaLimit; << 484 G4double skin; 201 G4double skin; 485 G4double factorScreen; << 486 202 >> 203 G4int nbins; 487 G4int nbinsPerDecade; 204 G4int nbinsPerDecade; 488 G4int verbose; 205 G4int verbose; 489 G4int workerVerbose; 206 G4int workerVerbose; 490 G4int nForFreeVector; << 491 G4int tripletConv; // 5d model triplet gene << 492 207 493 G4TransportationWithMscType fTransportationW << 494 G4MscStepLimitType mscStepLimit; 208 G4MscStepLimitType mscStepLimit; 495 G4MscStepLimitType mscStepLimitMuHad; << 496 G4NuclearFormfactorType nucFormfactor; << 497 G4eSingleScatteringType fSStype; << 498 G4EmFluctuationType fFluct; << 499 G4PositronAtRestModelType fPositronium; << 500 << 501 G4String fDirLEDATA; << 502 }; 209 }; 503 210 504 //....oooOO0OOooo........oooOO0OOooo........oo 211 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 505 212 506 #endif 213 #endif 507 214 508 215