248 if(val) {
fluo =
true; }
272 if(val) {
fluo =
true; }
389 if(val > 0.0 && val < 1.0) {
393 ed <<
"Value of MinSubRange is out of range (0 - 1): " << val
412 ed <<
"Value of MinKinEnergy is out of range: " << val/
MeV
413 <<
" MeV is ignored";
431 ed <<
"Value of MaxKinEnergy is out of range: "
432 << val/
GeV <<
" GeV is ignored";
449 ed <<
"Value of MaxKinEnergyCSDA is out of range: "
450 << val/
GeV <<
" GeV is ignored";
467 ed <<
"Value of lowestElectronEnergy is out of range: "
468 << val/
MeV <<
" MeV is ignored";
485 ed <<
"Value of lowestMuHadEnergy is out of range: "
486 << val/
MeV <<
" MeV is ignored";
499 if(val > 0.0 && val < 0.5) {
503 ed <<
"Value of linLossLimit is out of range: " << val
521 ed <<
"Value of bremsstrahlung threshold is out of range: "
522 << val/
GeV <<
" GeV is ignored";
535 if(val > 0.0 && val < 1.0) {
539 ed <<
"Value of lambda factor is out of range: " << val
557 ed <<
"Value of factor for enegry limit is out of range: "
558 << val <<
" is ignored";
571 if(val >= 0.0 && val <=
pi) {
575 ed <<
"Value of polar angle limit is out of range: "
576 << val <<
" is ignored";
589 if(val > 0.0 && val < 1.0) {
593 ed <<
"Value of rangeFactor is out of range: "
594 << val <<
" is ignored";
607 if(val > 0.0 && val < 1.0) {
611 ed <<
"Value of rangeFactorMuHad is out of range: "
612 << val <<
" is ignored";
629 ed <<
"Value of geomFactor is out of range: "
630 << val <<
" is ignored";
647 ed <<
"Value of skin is out of range: "
648 << val <<
" is ignored";
661 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
666 ed <<
"Values of step function are out of range: "
667 << v1 <<
", " << v2/
CLHEP::mm <<
" mm - are ignored";
675 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
680 ed <<
"Values of step function are out of range: "
681 << v1 <<
", " << v2/
CLHEP::mm <<
" mm - are ignored";
689 if(val >= 5 && val < 10000000) {
694 ed <<
"Value of number of bins is out of range: "
695 << val <<
" is ignored";
708 if(val >= 5 && val < 1000000) {
713 ed <<
"Value of number of bins per decade is out of range: "
714 << val <<
" is ignored";
783 G4cout <<
"G4EmParameters::SetPIXECrossSectionModel " << sss <<
G4endl;
812 if(r ==
"" || r ==
"world" || r ==
"World") {
813 r =
"DefaultRegionForTheWorld";
824 for(
G4int i=0; i<nreg; ++i) {
827 particle ==
"all") &&
830 r ==
"DefaultRegionForTheWorld") ) {
834 if(r ==
"DefaultRegionForTheWorld") {
m_regnamesPAI[i] = r; }
862 for(
G4int i=0; i<nreg; ++i) {
877 for(
G4int i=0; i<nreg; ++i) {
898 for(
G4int i=0; i<nreg; ++i) {
920 for(
G4int i=0; i<nreg; ++i) {
935 if(fdeex) {
fluo =
true; }
938 if(0 == nreg && r !=
"DefaultRegionForTheWorld") {
945 for(
G4int i=0; i<nreg; ++i) {
966 for(
G4int i=0; i<
n; ++i) {
978 ed <<
"Process: " << procname <<
" XS biasing factor "
979 << val <<
" is negative - ignored";
994 for(
G4int i=0; i<
n; ++i) {
1007 ed <<
"Process: " << procname <<
" in region " << r
1008 <<
" : forced interacttion length= "
1009 << length <<
" is negative - ignored";
1022 if(factor >= 0.0 && energyLimit >= 0.0) {
1024 for(
G4int i=0; i<
n; ++i) {
1037 ed <<
"Process: " << procname <<
" in region " << r
1038 <<
" : secondary bised factor= "
1039 << factor <<
", Elim= " << energyLimit <<
" - ignored";
1052 for(
G4int i=0; i<
n; ++i) {
1057 for(
G4int i=0; i<
n; ++i) {
1065 for(
G4int i=0; i<
n; ++i) {
1074 for(
G4int i=0; i<
n; ++i) {
1087 for(
G4int i=0; i<
n; ++i) {
1095 for(
G4int i=0; i<
n; ++i) {
1104 for(
G4int i=0; i<
n; ++i) {
1117 for(
G4int i=0; i<
n; ++i) {
1126 os <<
"=======================================================================" <<
"\n";
1127 os <<
"====== Electromagnetic Physics Parameters ========" <<
"\n";
1128 os <<
"=======================================================================" <<
"\n";
1131 os <<
"LPM effect enabled " <<
flagLPM <<
"\n";
1132 os <<
"Spline of EM tables enabled " <<
spline <<
"\n";
1133 os <<
"Use cut as a final range enabled " <<
finalRange <<
"\n";
1134 os <<
"Apply cuts on all EM processes " <<
applyCuts <<
"\n";
1135 os <<
"Fluorescence enabled " <<
fluo <<
"\n";
1136 os <<
"Fluorescence Bearden data files enabled " <<
beardenFluoDir <<
"\n";
1137 os <<
"Auger electron production enabled " <<
auger <<
"\n";
1139 os <<
"PIXE atomic de-excitation enabled " <<
pixe <<
"\n";
1140 os <<
"De-excitation module ignores cuts " <<
deexIgnoreCut <<
"\n";
1144 os <<
"Enable angular generator interface "
1146 os <<
"Use Mott correction for e- scattering "
1148 os <<
"Use integral approach for tracking "
1150 os <<
"Use built-in Birks satuaration "
1153 os <<
"Factor of cut reduction for sub-cutoff method " <<
minSubRange <<
"\n";
1154 os <<
"Min kinetic energy for tables "
1156 os <<
"Max kinetic energy for tables "
1158 os <<
"Max kinetic energy for CSDA tables "
1160 os <<
"Lowest e+e- kinetic energy "
1162 os <<
"Lowest muon/hadron kinetic energy "
1165 os <<
"Bremsstrahlung energy threshold above which \n"
1166 <<
" primary is added to the list of secondary "
1168 os <<
"X-section factor for integral approach " <<
lambdaFactor <<
"\n";
1169 os <<
"Factor used for dynamic computation of angular \n"
1171 os <<
"Fixed angular limit between single \n"
1172 <<
" and multiple scattering "
1174 os <<
"Range factor for msc step limit for e+- " <<
rangeFactor <<
"\n";
1175 os <<
"Range factor for msc step limit for muons/hadrons " <<
rangeFactorMuHad <<
"\n";
1176 os <<
"Geometry factor for msc step limitation of e+- " <<
geomFactor <<
"\n";
1177 os <<
"Skin parameter for msc step limitation of e+- " <<
skin <<
"\n";
1178 os <<
"Step function for e+- " <<
"("<<
dRoverRange
1179 <<
", " << finalRange <<
" mm)\n";
1183 os <<
"Number of bins in tables " <<
nbins <<
"\n";
1184 os <<
"Number of bins per decade of a table " <<
nbinsPerDecade <<
"\n";
1185 os <<
"Verbose level " <<
verbose <<
"\n";
1186 os <<
"Verbose level for worker thread " <<
workerVerbose <<
"\n";
1188 os <<
"Type of msc step limit algorithm for e+- " <<
mscStepLimit <<
"\n";
1189 os <<
"Type of msc step limit algorithm for muons/hadrons " <<
mscStepLimitMuHad <<
"\n";
1190 os <<
"Type of nuclear form-factor " <<
nucFormfactor <<
"\n";
1192 os <<
"Type of PIXE cross section for hadrons " <<
namePIXE <<
"\n";
1194 os <<
"=======================================================================" <<
"\n";
void ActivateForcedInteraction(G4double length=0.0, const G4String &r="", G4bool flag=true)
G4bool UseCutAsFinalRange() const
static G4EmParameters * theInstance
void SetLossFluctuations(G4bool val)
G4int NumberOfBinsPerDecade() const
std::vector< G4String > m_regnamesBiasedSec
void SetApplyCuts(G4bool val)
G4MscStepLimitType mscStepLimit
std::vector< G4String > m_regnamesForced
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
G4int NumberOfBins() const
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
void SetVerbose(G4int val)
G4int WorkerVerbose() const
G4double MaxKinEnergy() const
void SetEmSaturation(G4EmSaturation *)
static constexpr double mm
G4bool isElectron(G4int ityp)
std::vector< G4String > m_typesDNA
void ActivateSecondaryBiasing(const G4String &name, const G4String ®ion, G4double factor, G4double energyLimit)
void SetDeexcitationIgnoreCut(G4bool val)
void SetUseMottCorrection(G4bool val)
std::vector< G4double > m_lengthForced
std::ostringstream G4ExceptionDescription
std::vector< G4String > m_typesPAI
void SetLowestElectronEnergy(G4double val)
void SetLatDisplacementBeyondSafety(G4bool val)
G4MscStepLimitType MscMuHadStepLimitType() const
void SetMscStepLimitType(G4MscStepLimitType val)
G4bool AugerCascade() const
G4double LowestElectronEnergy() const
G4bool BirksActive() const
void SetBeardenFluoDir(G4bool val)
void SetLinearLossLimit(G4double val)
G4double MscGeomFactor() const
G4double MscMuHadRangeFactor() const
G4double MscThetaLimit() const
std::vector< G4String > m_regnamesME
void SetAuger(G4bool val)
std::vector< G4bool > m_pixe
const std::vector< G4String > & ParticlesPAI() const
G4String nameElectronPIXE
const std::vector< G4String > & RegionsMicroElec() const
G4NuclearFormfactorType nucFormfactor
G4bool muhadLateralDisplacement
void SetDeexcitationActiveRegion(const G4String &rname, G4bool valDeexcitation, G4bool valAuger, G4bool valPIXE)
std::ostream & StreamInfo(std::ostream &os) const
void SetNumberOfBins(G4int val)
G4String CheckRegion(const G4String &) const
void SetMinSubRange(G4double val)
void SetMaxEnergyForCSDARange(G4double val)
const std::vector< G4String > & RegionsPAI() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
static constexpr double rad
void DefineRegParamForLoss(G4VEnergyLossProcess *, G4bool isElectron) const
void SetStepFunctionMuHad(G4double v1, G4double v2)
const std::vector< G4String > & TypesDNA() const
void SetPIXEElectronCrossSectionModel(const G4String &)
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
const std::vector< G4String > & RegionsMsc() const
void SetMaxEnergy(G4double val)
void SetBremsstrahlungTh(G4double val)
void SetStepFunction(G4double v1, G4double v2, G4bool lock=true)
static G4NistManager * Instance()
std::vector< G4String > m_procForced
G4double MinSubRange() const
G4bool DeexcitationIgnoreCut() const
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
static const G4double reg
std::vector< G4String > m_procBiasedXS
G4bool LatDisplacementBeyondSafety() const
std::vector< G4String > m_regnamesMsc
void SetBirksActive(G4bool val)
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
static constexpr double TeV
void AddPAIModel(const G4String &particle, const G4String ®ion, const G4String &type)
std::vector< G4String > m_regnamesDeex
static G4RegionStore * GetInstance()
void SetLateralDisplacement(G4bool val)
G4bool BuildCSDARange() const
G4EmSaturation * GetEmSaturation()
void SetWorkerVerbose(G4int val)
std::vector< G4bool > m_auger
G4bool lateralDisplacement
static G4StateManager * GetStateManager()
G4double LinearLossLimit() const
void SetPIXECrossSectionModel(const G4String &)
G4double LambdaFactor() const
std::vector< G4bool > m_subCuts
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
G4double dRoverRangeMuHad
G4GLOB_DLL std::ostream G4cout
G4bool MuHadLateralDisplacement() const
const G4String & PIXECrossSectionModel()
G4double LowestMuHadEnergy() const
G4double lowestMuHadEnergy
void SetMscRangeFactor(G4double val)
void InitialiseG4Saturation()
void SetAugerCascade(G4bool val)
void SetNumberOfBinsPerDecade(G4int val)
G4bool LateralDisplacement() const
void ActivateForcedInteraction(G4double length, const G4String ®ion, G4bool flag=true)
static constexpr double eV
void SetNuclearFormfactorType(G4NuclearFormfactorType val)
void SetLowestMuHadEnergy(G4double val)
void SetMscGeomFactor(G4double val)
std::vector< G4String > m_regnamesDNA
G4double MinKinEnergy() const
G4ApplicationState GetCurrentState() const
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
std::vector< G4String > m_regnamesPAI
const G4String & GetProcessName() const
void AddDNA(const G4String ®ion, const G4String &type)
void SetSubCutoff(G4bool val, const G4String ®ion="")
std::vector< G4String > m_particlesPAI
G4double lowestElectronEnergy
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4MscStepLimitType mscStepLimitMuHad
void PrintWarning(G4ExceptionDescription &ed) const
G4EmSaturation * emSaturation
G4NuclearFormfactorType NuclearFormfactorType() const
void SetBuildCSDARange(G4bool val)
void AddMicroElec(const G4String ®ion)
G4bool LossFluctuation() const
const std::vector< G4String > & TypesMsc() const
void SetMscMuHadRangeFactor(G4double val)
std::vector< G4bool > m_fluo
void SetSpline(G4bool val)
static const char sss[MAX_N_PAR+2]
std::vector< G4String > m_procBiasedSec
void SetMuHadLateralDisplacement(G4bool val)
G4double maxKinEnergyCSDA
void SetMinEnergy(G4double val)
G4bool UseAngularGeneratorForIonisation() const
G4double BremsstrahlungTh() const
static G4EmParameters * Instance()
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
std::vector< G4double > m_elimBiasedSec
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double MscRangeFactor() const
void SetIntegral(G4bool val)
static constexpr double GeV
void AddMsc(const G4String ®ion, const G4String &type)
void ActivateAngularGeneratorForIonisation(G4bool val)
std::vector< G4bool > m_weightBiasedXS
void ActivateForcedInteraction(const G4String &procname, const G4String ®ion, G4double length, G4bool wflag)
void SetUseCutAsFinalRange(G4bool val)
G4bool latDisplacementBeyondSafety
G4bool UseMottCorrection() const
const std::vector< G4String > & RegionsDNA() const
static constexpr double MeV
static constexpr double pi
G4MscStepLimitType MscStepLimitType() const
void ActivateSubCutoff(G4bool val, const G4Region *region=nullptr)
void SetMscThetaLimit(G4double val)
void SetLambdaFactor(G4double val)
void SetFactorForAngleLimit(G4double val)
G4double rangeFactorMuHad
void DefineRegParamForEM(G4VEmProcess *) const
G4bool useAngGeneratorForIonisation
G4EmParametersMessenger * theMessenger
G4double MaxEnergyForCSDARange() const
std::vector< G4String > m_regnamesSubCut
static constexpr double keV
const G4String & PIXEElectronCrossSectionModel()
const std::vector< G4String > & TypesPAI() const
G4StateManager * fStateManager
void SetStepFunction(G4double v1, G4double v2)
std::vector< G4bool > m_weightForced
std::vector< G4double > m_factBiasedXS
G4double FactorForAngleLimit() const
G4bool BeardenFluoDir() const
std::vector< G4String > m_typesMsc
std::ostream & operator<<(std::ostream &os, const G4EmParameters &par)
void SetMscSkin(G4double val)
std::vector< G4double > m_factBiasedSec
G4double factorForAngleLimit