Warning, file /include/Geant4/G4EmParameters.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 #ifndef G4EmParameters_h
0053 #define G4EmParameters_h 1
0054
0055 #include "globals.hh"
0056 #include "G4ios.hh"
0057 #include "G4MscStepLimitType.hh"
0058 #include "G4NuclearFormfactorType.hh"
0059 #include "G4DNAModelSubType.hh"
0060 #include "G4EmFluoDirectory.hh"
0061 #include "G4EmSaturation.hh"
0062 #include "G4ThreeVector.hh"
0063 #include "G4ChemTimeStepModel.hh"
0064 #include <vector>
0065 #include <map>
0066 enum G4eSingleScatteringType
0067 {
0068 fWVI = 0,
0069 fMott,
0070 fDPWA
0071 };
0072
0073 enum class G4TransportationWithMscType
0074 {
0075 fDisabled = 0,
0076 fEnabled,
0077 fMultipleSteps,
0078 };
0079
0080 enum G4EmFluctuationType
0081 {
0082 fDummyFluctuation = 0,
0083 fUniversalFluctuation,
0084 fUrbanFluctuation
0085 };
0086
0087 enum G4PositronAtRestModelType
0088 {
0089 fSimplePositronium = 0,
0090 fAllisonPositronium,
0091 fOrePowell,
0092 fOrePowellPolar
0093 };
0094
0095 class G4EmParametersMessenger;
0096 class G4EmExtraParameters;
0097 class G4EmLowEParameters;
0098 class G4VAtomDeexcitation;
0099 class G4VEnergyLossProcess;
0100 class G4VEmProcess;
0101 class G4StateManager;
0102
0103 class G4EmParameters
0104 {
0105 public:
0106
0107 static G4EmParameters* Instance();
0108
0109 ~G4EmParameters();
0110
0111 void SetDefaults();
0112
0113
0114 void StreamInfo(std::ostream& os) const;
0115 void Dump();
0116 friend std::ostream& operator<< (std::ostream& os, const G4EmParameters&);
0117
0118
0119 void SetLossFluctuations(G4bool val);
0120 G4bool LossFluctuation() const;
0121
0122 void SetBuildCSDARange(G4bool val);
0123 G4bool BuildCSDARange() const;
0124
0125 void SetLPM(G4bool val);
0126 G4bool LPM() const;
0127
0128 void SetUseCutAsFinalRange(G4bool val);
0129 G4bool UseCutAsFinalRange() const;
0130
0131 void SetApplyCuts(G4bool val);
0132 G4bool ApplyCuts() const;
0133
0134 void SetFluo(G4bool val);
0135 G4bool Fluo() const;
0136
0137 G4EmFluoDirectory FluoDirectory() const;
0138
0139 void SetFluoDirectory(G4EmFluoDirectory);
0140 void SetBeardenFluoDir(G4bool val);
0141 void SetANSTOFluoDir(G4bool val);
0142 void SetXDB_EADLFluoDir(G4bool val);
0143
0144 G4bool BeardenFluoDir();
0145 G4bool ANSTOFluoDir();
0146
0147 void SetAuger(G4bool val);
0148 void SetAugerCascade(G4bool val) { SetAuger(val); };
0149 G4bool Auger() const;
0150 G4bool AugerCascade() const { return Auger(); }
0151
0152 void SetPixe(G4bool val);
0153 G4bool Pixe() const;
0154
0155 void SetDeexcitationIgnoreCut(G4bool val);
0156 G4bool DeexcitationIgnoreCut() const;
0157
0158 void SetLateralDisplacement(G4bool val);
0159 G4bool LateralDisplacement() const;
0160
0161 void SetLateralDisplacementAlg96(G4bool val);
0162 G4bool LateralDisplacementAlg96() const;
0163
0164 void SetMuHadLateralDisplacement(G4bool val);
0165 G4bool MuHadLateralDisplacement() const;
0166
0167 void ActivateAngularGeneratorForIonisation(G4bool val);
0168 G4bool UseAngularGeneratorForIonisation() const;
0169
0170 void SetUseMottCorrection(G4bool val);
0171 G4bool UseMottCorrection() const;
0172
0173 void SetIntegral(G4bool val);
0174 G4bool Integral() const;
0175
0176 void SetBirksActive(G4bool val);
0177 G4bool BirksActive() const;
0178
0179 void SetUseICRU90Data(G4bool val);
0180 G4bool UseICRU90Data() const;
0181
0182 void SetFluctuationType(G4EmFluctuationType val);
0183 G4EmFluctuationType FluctuationType() const;
0184
0185 void SetPositronAtRestModelType(G4PositronAtRestModelType val);
0186 G4PositronAtRestModelType PositronAtRestModelType() const;
0187
0188 void SetDNAFast(G4bool val);
0189 G4bool DNAFast() const;
0190
0191 void SetDNAStationary(G4bool val);
0192 G4bool DNAStationary() const;
0193
0194 void SetDNAElectronMsc(G4bool val);
0195 G4bool DNAElectronMsc() const;
0196
0197
0198
0199 void SetGeneralProcessActive(G4bool val);
0200 G4bool GeneralProcessActive() const;
0201
0202 void SetEnableSamplingTable(G4bool val);
0203 G4bool EnableSamplingTable() const;
0204
0205 void SetEnablePolarisation(G4bool val);
0206 G4bool EnablePolarisation() const;
0207
0208 G4bool GetDirectionalSplitting() const;
0209 void SetDirectionalSplitting(G4bool v);
0210
0211 G4bool QuantumEntanglement() const;
0212 void SetQuantumEntanglement(G4bool v);
0213
0214 G4bool RetrieveMuDataFromFile() const;
0215 void SetRetrieveMuDataFromFile(G4bool v);
0216
0217 G4bool PhotoeffectBelowKShell() const;
0218 void SetPhotoeffectBelowKShell(G4bool v);
0219
0220 G4bool MscPositronCorrection() const;
0221 void SetMscPositronCorrection(G4bool v);
0222
0223 G4bool UseEPICS2017XS() const;
0224 void SetUseEPICS2017XS(G4bool v);
0225
0226 G4bool Use3GammaAnnihilationOnFly() const;
0227 void Set3GammaAnnihilationOnFly(G4bool v);
0228
0229 G4bool UseRiGePairProductionModel() const;
0230 void SetUseRiGePairProductionModel(G4bool v);
0231
0232
0233 void SetOnIsolated(G4bool val);
0234 G4bool OnIsolated() const;
0235
0236 void ActivateDNA();
0237 void SetIsPrintedFlag(G4bool val);
0238 G4bool IsPrintLocked() const;
0239
0240
0241 void SetMinEnergy(G4double val);
0242 G4double MinKinEnergy() const;
0243
0244 void SetMaxEnergy(G4double val);
0245 G4double MaxKinEnergy() const;
0246
0247 void SetMaxEnergyForCSDARange(G4double val);
0248 G4double MaxEnergyForCSDARange() const;
0249
0250 void SetLowestElectronEnergy(G4double val);
0251 G4double LowestElectronEnergy() const;
0252
0253 void SetLowestMuHadEnergy(G4double val);
0254 G4double LowestMuHadEnergy() const;
0255
0256 void SetLowestTripletEnergy(G4double val);
0257 G4double LowestTripletEnergy() const;
0258
0259 void SetLinearLossLimit(G4double val);
0260 G4double LinearLossLimit() const;
0261
0262 void SetBremsstrahlungTh(G4double val);
0263 G4double BremsstrahlungTh() const;
0264 void SetMuHadBremsstrahlungTh(G4double val);
0265 G4double MuHadBremsstrahlungTh() const;
0266
0267 void SetLambdaFactor(G4double val);
0268 G4double LambdaFactor() const;
0269
0270 void SetFactorForAngleLimit(G4double val);
0271 G4double FactorForAngleLimit() const;
0272
0273 void SetMscThetaLimit(G4double val);
0274 G4double MscThetaLimit() const;
0275
0276 void SetMscEnergyLimit(G4double val);
0277 G4double MscEnergyLimit() const;
0278
0279 void SetMscRangeFactor(G4double val);
0280 G4double MscRangeFactor() const;
0281
0282 void SetMscMuHadRangeFactor(G4double val);
0283 G4double MscMuHadRangeFactor() const;
0284
0285 void SetMscGeomFactor(G4double val);
0286 G4double MscGeomFactor() const;
0287
0288 void SetMscSafetyFactor(G4double val);
0289 G4double MscSafetyFactor() const;
0290
0291 void SetMscLambdaLimit(G4double val);
0292 G4double MscLambdaLimit() const;
0293
0294 void SetMscSkin(G4double val);
0295 G4double MscSkin() const;
0296
0297 void SetScreeningFactor(G4double val);
0298 G4double ScreeningFactor() const;
0299
0300 void SetMaxNIELEnergy(G4double val);
0301 G4double MaxNIELEnergy() const;
0302
0303 void SetMaxEnergyFor5DMuPair(G4double val);
0304 G4double MaxEnergyFor5DMuPair() const;
0305
0306 void SetMaxDNAElectronEnergy(G4double val);
0307 G4double MaxDNAElectronEnergy() const;
0308
0309 void SetMaxDNAIonEnergy(G4double val);
0310 G4double MaxDNAIonEnergy() const;
0311
0312 void SetStepFunction(G4double v1, G4double v2);
0313 void SetStepFunctionMuHad(G4double v1, G4double v2);
0314 void SetStepFunctionLightIons(G4double v1, G4double v2);
0315 void SetStepFunctionIons(G4double v1, G4double v2);
0316 void FillStepFunction(const G4ParticleDefinition*, G4VEnergyLossProcess*) const;
0317
0318 void SetDirectionalSplittingRadius(G4double r);
0319 G4double GetDirectionalSplittingRadius();
0320
0321 void SetDirectionalSplittingTarget(const G4ThreeVector& v);
0322 G4ThreeVector GetDirectionalSplittingTarget() const;
0323
0324
0325
0326 void SetNumberOfBinsPerDecade(G4int val);
0327 G4int NumberOfBinsPerDecade() const;
0328 G4int NumberOfBins() const;
0329
0330 void SetVerbose(G4int val);
0331 G4int Verbose() const;
0332
0333 void SetWorkerVerbose(G4int val);
0334 G4int WorkerVerbose() const;
0335
0336 void SetNumberForFreeVector(G4int val);
0337 G4int NumberForFreeVector() const;
0338
0339 void SetTransportationWithMsc(G4TransportationWithMscType val);
0340 G4TransportationWithMscType TransportationWithMsc() const;
0341
0342 void SetMscStepLimitType(G4MscStepLimitType val);
0343 G4MscStepLimitType MscStepLimitType() const;
0344
0345 void SetMscMuHadStepLimitType(G4MscStepLimitType val);
0346 G4MscStepLimitType MscMuHadStepLimitType() const;
0347
0348 void SetSingleScatteringType(G4eSingleScatteringType val);
0349 G4eSingleScatteringType SingleScatteringType() const;
0350
0351 void SetNuclearFormfactorType(G4NuclearFormfactorType val);
0352 G4NuclearFormfactorType NuclearFormfactorType() const;
0353
0354 void SetDNAeSolvationSubType(G4DNAModelSubType val);
0355 G4DNAModelSubType DNAeSolvationSubType() const;
0356
0357
0358 void SetTimeStepModel(const G4ChemTimeStepModel& model);
0359 G4ChemTimeStepModel GetTimeStepModel() const;
0360
0361 void SetConversionType(G4int val);
0362 G4int GetConversionType() const;
0363
0364
0365 void SetPIXECrossSectionModel(const G4String&);
0366 const G4String& PIXECrossSectionModel();
0367
0368 void SetPIXEElectronCrossSectionModel(const G4String&);
0369 const G4String& PIXEElectronCrossSectionModel();
0370
0371 void SetLivermoreDataDir(const G4String&);
0372 const G4String& LivermoreDataDir();
0373
0374
0375 void AddPAIModel(const G4String& particle,
0376 const G4String& region,
0377 const G4String& type);
0378 const std::vector<G4String>& ParticlesPAI() const;
0379 const std::vector<G4String>& RegionsPAI() const;
0380 const std::vector<G4String>& TypesPAI() const;
0381
0382 void AddMicroElec(const G4String& region);
0383 const std::vector<G4String>& RegionsMicroElec() const;
0384
0385 void AddDNA(const G4String& region, const G4String& type);
0386 const std::vector<G4String>& RegionsDNA() const;
0387 const std::vector<G4String>& TypesDNA() const;
0388
0389 void AddPhysics(const G4String& region, const G4String& type);
0390 const std::vector<G4String>& RegionsPhysics() const;
0391 const std::vector<G4String>& TypesPhysics() const;
0392
0393 void SetSubCutRegion(const G4String& region = "");
0394
0395 void SetDeexActiveRegion(const G4String& region, G4bool fdeex,
0396 G4bool fauger, G4bool fpixe);
0397
0398 void SetProcessBiasingFactor(const G4String& procname,
0399 G4double val, G4bool wflag);
0400
0401 void ActivateForcedInteraction(const G4String& procname,
0402 const G4String& region,
0403 G4double length,
0404 G4bool wflag);
0405
0406 void ActivateSecondaryBiasing(const G4String& name,
0407 const G4String& region,
0408 G4double factor,
0409 G4double energyLimit);
0410
0411
0412 void SetEmSaturation(G4EmSaturation*);
0413
0414 G4EmSaturation* GetEmSaturation();
0415
0416
0417 void SetFluctuationsForRegion(const G4String& regionName, G4bool flag);
0418
0419
0420 void DefineRegParamForLoss(G4VEnergyLossProcess*) const;
0421 void DefineRegParamForEM(G4VEmProcess*) const;
0422 void DefineRegParamForDeex(G4VAtomDeexcitation*) const;
0423 void DefineFluctuationFlags(std::vector<G4bool>* theFluctFlags);
0424
0425 const G4String& GetDirLEDATA() const;
0426
0427 G4EmParameters(G4EmParameters &) = delete;
0428 G4EmParameters & operator=(const G4EmParameters &right) = delete;
0429
0430 private:
0431
0432 G4EmParameters();
0433
0434 void Initialise();
0435
0436 G4bool IsLocked() const;
0437
0438 void PrintWarning(G4ExceptionDescription& ed) const;
0439
0440 static G4EmParameters* theInstance;
0441
0442 G4EmParametersMessenger* theMessenger;
0443 G4EmExtraParameters* fBParameters;
0444 G4EmLowEParameters* fCParameters;
0445 G4StateManager* fStateManager;
0446 G4EmSaturation* emSaturation;
0447
0448 G4bool lossFluctuation;
0449 G4bool buildCSDARange;
0450 G4bool flagLPM;
0451 G4bool cutAsFinalRange;
0452 G4bool applyCuts;
0453 G4bool lateralDisplacement;
0454 G4bool lateralDisplacementAlg96;
0455 G4bool muhadLateralDisplacement;
0456 G4bool useAngGeneratorForIonisation;
0457 G4bool useMottCorrection;
0458 G4bool integral;
0459 G4bool birks;
0460 G4bool fICRU90;
0461 G4bool gener;
0462 G4bool fSamplingTable;
0463 G4bool fPolarisation;
0464 G4bool fMuDataFromFile;
0465 G4bool fPEKShell;
0466 G4bool fMscPosiCorr;
0467 G4bool fUseEPICS2017XS;
0468 G4bool f3GammaAnnihilationOnFly;
0469 G4bool fUseRiGePairProductionModel;
0470 G4bool onIsolated;
0471 G4bool fDNA;
0472 G4bool fIsPrinted;
0473
0474 G4double minKinEnergy;
0475 G4double maxKinEnergy;
0476 G4double maxKinEnergyCSDA;
0477 G4double max5DEnergyForMuPair;
0478 G4double lowestElectronEnergy;
0479 G4double lowestMuHadEnergy;
0480 G4double lowestTripletEnergy;
0481 G4double linLossLimit;
0482 G4double bremsTh;
0483 G4double bremsMuHadTh;
0484 G4double lambdaFactor;
0485 G4double factorForAngleLimit;
0486 G4double thetaLimit;
0487 G4double energyLimit;
0488 G4double maxNIELEnergy;
0489 G4double rangeFactor;
0490 G4double rangeFactorMuHad;
0491 G4double geomFactor;
0492 G4double safetyFactor;
0493 G4double lambdaLimit;
0494 G4double skin;
0495 G4double factorScreen;
0496
0497 G4int nbinsPerDecade;
0498 G4int verbose;
0499 G4int workerVerbose;
0500 G4int nForFreeVector;
0501 G4int tripletConv;
0502
0503 G4TransportationWithMscType fTransportationWithMsc;
0504 G4MscStepLimitType mscStepLimit;
0505 G4MscStepLimitType mscStepLimitMuHad;
0506 G4NuclearFormfactorType nucFormfactor;
0507 G4eSingleScatteringType fSStype;
0508 G4EmFluctuationType fFluct;
0509 G4PositronAtRestModelType fPositronium;
0510
0511 G4String fDirLEDATA;
0512 std::vector<std::pair<G4String, G4bool> > fluctRegions;
0513 };
0514
0515
0516
0517 #endif
0518