64 #ifdef G4MULTITHREADED
73 #ifdef G4MULTITHREADED
79 #ifdef G4MULTITHREADED
281 if(val) {
fluo =
true; }
293 if(val) {
fluo =
true; }
392 #ifdef G4MULTITHREADED
399 #ifdef G4MULTITHREADED
482 if(val > 0.0 && val < 1.0) {
486 ed <<
"Value of MinSubRange is out of range (0 - 1): " << val
505 ed <<
"Value of MinKinEnergy is out of range: " << val/
MeV
506 <<
" MeV is ignored";
524 ed <<
"Value of MaxKinEnergy is out of range: "
525 << val/
GeV <<
" GeV is ignored";
542 ed <<
"Value of MaxKinEnergyCSDA is out of range: "
543 << val/
GeV <<
" GeV is ignored";
560 ed <<
"Value of lowestElectronEnergy is out of range: "
561 << val/
MeV <<
" MeV is ignored";
578 ed <<
"Value of lowestMuHadEnergy is out of range: "
579 << val/
MeV <<
" MeV is ignored";
603 if(val > 0.0 && val < 0.5) {
607 ed <<
"Value of linLossLimit is out of range: " << val
625 ed <<
"Value of bremsstrahlung threshold is out of range: "
626 << val/
GeV <<
" GeV is ignored";
639 if(val > 0.0 && val < 1.0) {
643 ed <<
"Value of lambda factor is out of range: " << val
661 ed <<
"Value of factor for enegry limit is out of range: "
662 << val <<
" is ignored";
675 if(val >= 0.0 && val <=
pi) {
679 ed <<
"Value of polar angle limit is out of range: "
680 << val <<
" is ignored";
697 ed <<
"Value of msc energy limit is out of range: "
698 << val <<
" is ignored";
711 if(val > 0.0 && val < 1.0) {
715 ed <<
"Value of rangeFactor is out of range: "
716 << val <<
" is ignored";
729 if(val > 0.0 && val < 1.0) {
733 ed <<
"Value of rangeFactorMuHad is out of range: "
734 << val <<
" is ignored";
751 ed <<
"Value of geomFactor is out of range: "
752 << val <<
" is ignored";
769 ed <<
"Value of skin is out of range: "
770 << val <<
" is ignored";
787 ed <<
"Value of factorScreen is out of range: "
788 << val <<
" is ignored";
801 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
806 ed <<
"Values of step function are out of range: "
807 << v1 <<
", " << v2/
CLHEP::mm <<
" mm - are ignored";
815 if(v1 > 0.0 && v1 <= 1.0 && v2 > 0.0) {
820 ed <<
"Values of step function are out of range: "
821 << v1 <<
", " << v2/
CLHEP::mm <<
" mm - are ignored";
829 if(val >= 5 && val < 10000000) {
834 ed <<
"Value of number of bins is out of range: "
835 << val <<
" is ignored";
848 if(val >= 5 && val < 1000000) {
853 ed <<
"Value of number of bins per decade is out of range: "
854 << val <<
" is ignored";
946 G4cout <<
"G4EmParameters::SetPIXECrossSectionModel " << sss <<
G4endl;
974 if(r ==
"" || r ==
"world" || r ==
"World") {
975 r =
"DefaultRegionForTheWorld";
987 for(
G4int i=0; i<nreg; ++i) {
990 particle ==
"all") &&
993 r ==
"DefaultRegionForTheWorld") ) {
997 if(r ==
"DefaultRegionForTheWorld") {
m_regnamesPAI[i] = r; }
1026 for(
G4int i=0; i<nreg; ++i) {
1042 for(
G4int i=0; i<nreg; ++i) {
1079 for(
G4int i=0; i<nreg; ++i) {
1101 for(
G4int i=0; i<nreg; ++i) {
1116 if(fdeex) {
fluo =
true; }
1119 if(0 == nreg && r !=
"DefaultRegionForTheWorld") {
1126 for(
G4int i=0; i<nreg; ++i) {
1147 for(
G4int i=0; i<
n; ++i) {
1159 ed <<
"Process: " << procname <<
" XS biasing factor "
1160 << val <<
" is negative - ignored";
1175 for(
G4int i=0; i<
n; ++i) {
1188 ed <<
"Process: " << procname <<
" in region " << r
1189 <<
" : forced interacttion length= "
1190 << length <<
" is negative - ignored";
1203 if(factor >= 0.0 && energyLim >= 0.0) {
1205 for(
G4int i=0; i<
n; ++i) {
1218 ed <<
"Process: " << procname <<
" in region " << r
1219 <<
" : secondary bised factor= "
1220 << factor <<
", Elim= " << energyLim <<
" - ignored";
1233 for(
G4int i=0; i<
n; ++i) {
1238 for(
G4int i=0; i<
n; ++i) {
1246 for(
G4int i=0; i<
n; ++i) {
1255 for(
G4int i=0; i<
n; ++i) {
1268 for(
G4int i=0; i<
n; ++i) {
1276 for(
G4int i=0; i<
n; ++i) {
1285 for(
G4int i=0; i<
n; ++i) {
1298 for(
G4int i=0; i<
n; ++i) {
1307 os <<
"=======================================================================" <<
"\n";
1308 os <<
"====== Electromagnetic Physics Parameters ========" <<
"\n";
1309 os <<
"=======================================================================" <<
"\n";
1310 os <<
"LPM effect enabled " <<
flagLPM <<
"\n";
1311 os <<
"Spline of EM tables enabled " <<
spline <<
"\n";
1312 os <<
"Apply cuts on all EM processes " <<
applyCuts <<
"\n";
1313 os <<
"Use integral approach for tracking " <<
integral <<
"\n";
1314 os <<
"X-section factor for integral approach " <<
lambdaFactor <<
"\n";
1315 os <<
"Min kinetic energy for tables "
1317 os <<
"Max kinetic energy for tables "
1319 os <<
"Number of bins in tables " <<
nbins <<
"\n";
1320 os <<
"Number of bins per decade of a table " <<
nbinsPerDecade <<
"\n";
1321 os <<
"Verbose level " <<
verbose <<
"\n";
1322 os <<
"Verbose level for worker thread " <<
workerVerbose <<
"\n";
1323 os <<
"Bremsstrahlung energy threshold above which \n"
1324 <<
" primary is added to the list of secondary "
1326 os <<
"Lowest triplet kinetic energy "
1328 os <<
"5D gamma conversion model type " <<
tripletConv <<
"\n";
1329 os <<
"5D gamma conversion model on isolated ion " <<
onIsolated <<
"\n";
1331 os <<
"=======================================================================" <<
"\n";
1332 os <<
"====== Ionisation Parameters ========" <<
"\n";
1333 os <<
"=======================================================================" <<
"\n";
1334 os <<
"Step function for e+- " <<
"("<<
dRoverRange
1338 os <<
"Lowest e+e- kinetic energy "
1340 os <<
"Lowest muon/hadron kinetic energy "
1343 os <<
"Use built-in Birks satuaration " <<
birks <<
"\n";
1345 os <<
"Use cut as a final range enabled " <<
finalRange <<
"\n";
1346 os <<
"Enable angular generator interface "
1348 os <<
"Factor of cut reduction for sub-cutoff method " <<
minSubRange <<
"\n";
1349 os <<
"Max kinetic energy for CSDA tables "
1353 os <<
"=======================================================================" <<
"\n";
1354 os <<
"====== Multiple Scattering Parameters ========" <<
"\n";
1355 os <<
"=======================================================================" <<
"\n";
1356 os <<
"Type of msc step limit algorithm for e+- " <<
mscStepLimit <<
"\n";
1357 os <<
"Type of msc step limit algorithm for muons/hadrons " <<
mscStepLimitMuHad <<
"\n";
1362 os <<
"Range factor for msc step limit for e+- " <<
rangeFactor <<
"\n";
1363 os <<
"Range factor for msc step limit for muons/hadrons " <<
rangeFactorMuHad <<
"\n";
1364 os <<
"Geometry factor for msc step limitation of e+- " <<
geomFactor <<
"\n";
1365 os <<
"Skin parameter for msc step limitation of e+- " <<
skin <<
"\n";
1367 os <<
"Factor used for dynamic computation of angular \n"
1369 os <<
"Fixed angular limit between single \n"
1370 <<
" and multiple scattering "
1372 os <<
"Upper energy limit for e+- multiple scattering "
1374 os <<
"Type of nuclear form-factor " <<
nucFormfactor <<
"\n";
1377 os <<
"=======================================================================" <<
"\n";
1378 os <<
"====== Atomic Deexcitation Parameters ========" <<
"\n";
1379 os <<
"=======================================================================" <<
"\n";
1380 os <<
"Fluorescence enabled " <<
fluo <<
"\n";
1381 os <<
"Fluorescence Bearden data files enabled " <<
beardenFluoDir <<
"\n";
1382 os <<
"Auger electron production enabled " <<
auger <<
"\n";
1384 os <<
"PIXE atomic de-excitation enabled " <<
pixe <<
"\n";
1385 os <<
"De-excitation module ignores cuts " <<
deexIgnoreCut <<
"\n";
1386 os <<
"Type of PIXE cross section for hadrons " <<
namePIXE <<
"\n";
1389 os <<
"=======================================================================" <<
"\n";
1390 os <<
"====== DNA Physics Parameters ========" <<
"\n";
1391 os <<
"=======================================================================" <<
"\n";
1392 os <<
"Use fast sampling in DNA models " <<
dnaFast <<
"\n";
1393 os <<
"Use Stationary option in DNA models " <<
dnaStationary <<
"\n";
1394 os <<
"Use DNA with multiple scattering of e- " <<
dnaMsc <<
"\n";
1395 os <<
"Use DNA e- solvation model type "
1397 os <<
"=======================================================================" <<
"\n";
std::vector< G4double > m_factBiasedXS
std::vector< G4bool > m_weightForced
G4String CheckRegion(const G4String &) const
std::vector< G4String > m_procBiasedXS
void SetMaxEnergy(G4double val)
void SetMscEnergyLimit(G4double val)
void SetDeexcitationIgnoreCut(G4bool val)
G4double BremsstrahlungTh() const
G4MscStepLimitType MscMuHadStepLimitType() const
G4DNAModelSubType DNAeSolvationSubType() const
const std::vector< G4String > & RegionsPhysics() const
void SetBremsstrahlungTh(G4double val)
std::vector< G4bool > m_weightBiasedXS
void SetMinSubRange(G4double val)
void SetStepFunction(G4double v1, G4double v2, G4bool lock=true)
G4int NumberOfBinsPerDecade() const
std::ostringstream G4ExceptionDescription
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
static constexpr double MeV
G4bool LateralDisplacementAlg96() const
G4MscStepLimitType MscStepLimitType() const
void SetLambdaFactor(G4double val)
void SetSpline(G4bool val)
std::vector< G4String > m_regnamesDeex
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
G4bool UseAngularGeneratorForIonisation() const
G4EmSaturation * GetEmSaturation()
G4bool lateralDisplacement
void SetUseCutAsFinalRange(G4bool val)
void SetPIXEElectronCrossSectionModel(const G4String &)
void DefineRegParamForEM(G4VEmProcess *) const
void PrintWarning(G4ExceptionDescription &ed) const
G4bool GammaSharkActive() const
G4bool LateralDisplacement() const
void SetDeexcitationActiveRegion(const G4String &rname, G4bool valDeexcitation, G4bool valAuger, G4bool valPIXE)
void DefineRegParamForLoss(G4VEnergyLossProcess *, G4bool isElectron) const
G4bool BeardenFluoDir() const
void SetDNAElectronMsc(G4bool val)
void SetMuHadLateralDisplacement(G4bool val)
G4double MaxKinEnergy() const
G4bool BuildCSDARange() const
void SetBeardenFluoDir(G4bool val)
G4int GetConversionType() const
G4bool DNAStationary() const
void AddPhysics(const G4String ®ion, const G4String &type)
G4bool muhadLateralDisplacement
void SetVerbose(G4int val)
void ActivateForcedInteraction(G4double length=0.0, const G4String &r="", G4bool flag=true)
std::vector< G4String > m_regnamesForced
void SetStepFunctionMuHad(G4double v1, G4double v2)
G4bool UseCutAsFinalRange() const
const std::vector< G4String > & TypesDNA() const
void ActivateForcedInteraction(G4double length, const G4String ®ion, G4bool flag=true)
std::vector< G4bool > m_fluo
G4bool MuHadLateralDisplacement() const
void SetOnIsolated(G4bool val)
void AddPAIModel(const G4String &particle, const G4String ®ion, const G4String &type)
void SetEmSaturation(G4EmSaturation *)
void ActivateSecondaryBiasing(const G4String &name, const G4String ®ion, G4double factor, G4double energyLimit)
static constexpr double TeV
G4double MscMuHadRangeFactor() const
G4bool lateralDisplacementAlg96
G4StateManager * fStateManager
void SetBuildCSDARange(G4bool val)
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
void SetLossFluctuations(G4bool val)
void SetLowestTripletEnergy(G4double val)
G4bool BirksActive() const
void ActivateAngularGeneratorForIonisation(G4bool val)
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
const std::vector< G4String > & RegionsPAI() const
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
void SetLateralDisplacement(G4bool val)
const std::vector< G4String > & RegionsMicroElec() const
G4EmSaturation * emSaturation
std::vector< G4bool > m_auger
void SetMinEnergy(G4double val)
static const char sss[MAX_N_PAR+2]
G4DNAModelSubType dnaElectronSolvation
static constexpr double TeV
void SetMscSkin(G4double val)
G4double LinearLossLimit() const
G4bool latDisplacementBeyondSafety
G4double MaxEnergyForCSDARange() const
void SetDNAStationary(G4bool val)
#define G4MUTEX_INITIALIZER
G4double rangeFactorMuHad
void SetMscThetaLimit(G4double val)
G4NuclearFormfactorType nucFormfactor
G4bool LatDisplacementBeyondSafety() const
void SetMscMuHadRangeFactor(G4double val)
void SetConversionType(G4int val)
G4double MinSubRange() const
void SetStepFunction(G4double v1, G4double v2)
void SetLowestElectronEnergy(G4double val)
void SetMscRangeFactor(G4double val)
void SetPIXECrossSectionModel(const G4String &)
const std::vector< G4String > & TypesPAI() const
G4double LowestMuHadEnergy() const
void SetSubCutoff(G4bool val, const G4String ®ion="")
void SetFactorForAngleLimit(G4double val)
static constexpr double MeV
std::vector< G4String > m_regnamesDNA
G4bool UseMottCorrection() const
void SetLatDisplacementBeyondSafety(G4bool val)
G4int WorkerVerbose() const
G4double lowestTripletEnergy
const G4String & GetProcessName() const
G4double LambdaFactor() const
static constexpr double eV
G4MscStepLimitType mscStepLimit
void AddMicroElec(const G4String ®ion)
void SetAuger(G4bool val)
void SetNumberOfBinsPerDecade(G4int val)
void AddDNA(const G4String ®ion, const G4String &type)
G4MscStepLimitType mscStepLimitMuHad
void SetIntegral(G4bool val)
#define G4MUTEXUNLOCK(mutex)
G4double MinKinEnergy() const
G4double MscRangeFactor() const
G4double ScreeningFactor() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
const std::vector< G4String > & TypesMsc() const
G4double lowestMuHadEnergy
G4bool AugerCascade() const
G4bool useAngGeneratorForIonisation
const G4String & PIXECrossSectionModel()
void SetBirksActive(G4bool val)
void ActivateForcedInteraction(const G4String &procname, const G4String ®ion, G4double length, G4bool wflag)
void SetLowestMuHadEnergy(G4double val)
G4double LowestTripletEnergy() const
void SetMscStepLimitType(G4MscStepLimitType val)
static G4EmParameters * theInstance
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
void SetAugerCascade(G4bool val)
void SetDNAFast(G4bool val)
static G4RegionStore * GetInstance()
G4double MscThetaLimit() const
void AddMsc(const G4String ®ion, const G4String &type)
G4NuclearFormfactorType NuclearFormfactorType() const
void SetNuclearFormfactorType(G4NuclearFormfactorType val)
std::vector< G4double > m_lengthForced
std::vector< G4String > m_particlesPAI
G4ApplicationState GetCurrentState() const
std::vector< G4bool > m_subCuts
G4bool DeexcitationIgnoreCut() const
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
std::vector< G4String > m_procForced
const G4String & PIXEElectronCrossSectionModel()
std::vector< G4String > m_regnamesBiasedSec
static constexpr double mm
std::vector< G4double > m_elimBiasedSec
#define G4MUTEXLOCK(mutex)
G4GLOB_DLL std::ostream G4cout
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
void SetLinearLossLimit(G4double val)
std::vector< G4String > m_typesMsc
G4double MscGeomFactor() const
void SetWorkerVerbose(G4int val)
std::vector< G4String > m_regnamesMsc
G4double factorForAngleLimit
std::vector< G4String > m_procBiasedSec
void SetMscGeomFactor(G4double val)
G4double maxKinEnergyCSDA
G4double dRoverRangeMuHad
std::vector< G4String > m_typesDNA
void InitialiseG4Saturation()
void SetMaxEnergyForCSDARange(G4double val)
const std::vector< G4String > & TypesPhysics() const
static constexpr double pi
G4EmParametersMessenger * theMessenger
G4double FactorForAngleLimit() const
void SetGammaSharkActive(G4bool val)
static const G4double reg
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
void SetLateralDisplacementAlg96(G4bool val)
std::vector< G4double > m_factBiasedSec
static constexpr double rad
void SetScreeningFactor(G4double val)
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
G4bool isElectron(G4int ityp)
std::vector< G4String > m_regnamesSubCut
G4bool LossFluctuation() const
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
G4int NumberOfBins() const
void SetNumberOfBins(G4int val)
std::vector< G4String > m_typesPAI
static constexpr double keV
G4double MscEnergyLimit() const
void SetUseMottCorrection(G4bool val)
const std::vector< G4String > & RegionsDNA() const
const std::vector< G4String > & RegionsMsc() const
std::vector< G4bool > m_pixe
G4bool DNAElectronMsc() const
static constexpr double GeV
static constexpr double GeV
G4double LowestElectronEnergy() const
G4String nameElectronPIXE
const std::vector< G4String > & ParticlesPAI() const
std::vector< G4String > m_regnamesME
std::ostream & StreamInfo(std::ostream &os) const
void ActivateSubCutoff(G4bool val, const G4Region *region=nullptr)
static G4EmParameters * Instance()
static constexpr double pi
void SetDNAeSolvationSubType(G4DNAModelSubType val)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
static G4StateManager * GetStateManager()
static G4NistManager * Instance()
std::vector< G4String > m_regnamesPAI
void SetApplyCuts(G4bool val)
G4double lowestElectronEnergy