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