445 birks = (
nullptr != ptr);
503#ifdef G4MULTITHREADED
508#ifdef G4MULTITHREADED
524 ed <<
"Value of MinKinEnergy - is out of range: " << val/
CLHEP::MeV
525 <<
" MeV is ignored";
542 ed <<
"Value of MaxKinEnergy is out of range: "
544 <<
" GeV is ignored; allowed range 10 MeV - 1.e+7 TeV";
561 ed <<
"Value of MaxKinEnergyCSDA is out of range: "
562 << val/
CLHEP::GeV <<
" GeV is ignored; allowed range "
631 if(val > 0.0 && val < 0.5) {
635 ed <<
"Value of linLossLimit is out of range: " << val
653 ed <<
"Value of bremsstrahlung threshold is out of range: "
654 << val/
GeV <<
" GeV is ignored";
671 ed <<
"Value of bremsstrahlung threshold is out of range: "
672 << val/
GeV <<
" GeV is ignored";
685 if(val > 0.0 && val < 1.0) {
689 ed <<
"Value of lambda factor is out of range: " << val
707 ed <<
"Value of factor for enegry limit is out of range: "
708 << val <<
" is ignored";
721 if(val >= 0.0 && val <=
pi) {
725 ed <<
"Value of polar angle limit is out of range: "
726 << val <<
" is ignored";
743 ed <<
"Value of msc energy limit is out of range: "
744 << val <<
" is ignored";
757 if(val > 0.0 && val < 1.0) {
761 ed <<
"Value of rangeFactor is out of range: "
762 << val <<
" is ignored";
775 if(val > 0.0 && val < 1.0) {
779 ed <<
"Value of rangeFactorMuHad is out of range: "
780 << val <<
" is ignored";
797 ed <<
"Value of geomFactor is out of range: "
798 << val <<
" is ignored";
815 ed <<
"Value of safetyFactor is out of range: "
816 << val <<
" is ignored";
833 ed <<
"Value of lambdaLimit is out of range: "
834 << val <<
" is ignored";
851 ed <<
"Value of skin is out of range: "
852 << val <<
" is ignored";
869 ed <<
"Value of factorScreen is out of range: "
870 << val <<
" is ignored";
917 if(val >= 5 && val < 1000000) {
921 ed <<
"Value of number of bins per decade is out of range: "
922 << val <<
" is ignored";
1231 os <<
"=======================================================================" <<
"\n";
1232 os <<
"====== Electromagnetic Physics Parameters ========" <<
"\n";
1233 os <<
"=======================================================================" <<
"\n";
1234 os <<
"LPM effect enabled " <<
flagLPM <<
"\n";
1235 os <<
"Enable creation and use of sampling tables " <<
fSamplingTable <<
"\n";
1236 os <<
"Apply cuts on all EM processes " <<
applyCuts <<
"\n";
1237 os <<
"Use general process " <<
gener <<
"\n";
1238 os <<
"Enable linear polarisation for gamma " <<
fPolarisation <<
"\n";
1239 os <<
"Enable sampling of quantum entanglement "
1241 os <<
"X-section factor for integral approach " <<
lambdaFactor <<
"\n";
1242 os <<
"Min kinetic energy for tables "
1244 os <<
"Max kinetic energy for tables "
1246 os <<
"Number of bins per decade of a table " <<
nbinsPerDecade <<
"\n";
1247 os <<
"Verbose level " <<
verbose <<
"\n";
1248 os <<
"Verbose level for worker thread " <<
workerVerbose <<
"\n";
1249 os <<
"Bremsstrahlung energy threshold above which \n"
1250 <<
" primary e+- is added to the list of secondary "
1252 os <<
"Bremsstrahlung energy threshold above which primary\n"
1253 <<
" muon/hadron is added to the list of secondary "
1255 os <<
"Lowest triplet kinetic energy "
1257 os <<
"Enable sampling of gamma linear polarisation " <<
fPolarisation <<
"\n";
1258 os <<
"5D gamma conversion model type " <<
tripletConv <<
"\n";
1259 os <<
"5D gamma conversion model on isolated ion " <<
onIsolated <<
"\n";
1261 os <<
"5D gamma conversion limit for muon pair "
1264 os <<
"Livermore data directory "
1267 os <<
"=======================================================================" <<
"\n";
1268 os <<
"====== Ionisation Parameters ========" <<
"\n";
1269 os <<
"=======================================================================" <<
"\n";
1270 os <<
"Step function for e+- "
1273 os <<
"Step function for muons/hadrons "
1276 os <<
"Step function for light ions "
1279 os <<
"Step function for general ions "
1282 os <<
"Lowest e+e- kinetic energy "
1284 os <<
"Lowest muon/hadron kinetic energy "
1287 os <<
"Use ICRU90 data " <<
fICRU90 <<
"\n";
1288 os <<
"Use built-in Birks satuaration " <<
birks <<
"\n";
1291 os <<
"Enable angular generator interface "
1293 os <<
"Max kinetic energy for CSDA tables "
1295 os <<
"Max kinetic energy for NIEL computation "
1298 os <<
"Read data from file for e+e- pair production by mu " <<
fMuDataFromFile <<
"\n";
1300 os <<
"=======================================================================" <<
"\n";
1301 os <<
"====== Multiple Scattering Parameters ========" <<
"\n";
1302 os <<
"=======================================================================" <<
"\n";
1303 os <<
"Type of msc step limit algorithm for e+- " <<
mscStepLimit <<
"\n";
1304 os <<
"Type of msc step limit algorithm for muons/hadrons " <<
mscStepLimitMuHad <<
"\n";
1308 os <<
"Range factor for msc step limit for e+- " <<
rangeFactor <<
"\n";
1309 os <<
"Range factor for msc step limit for muons/hadrons " <<
rangeFactorMuHad <<
"\n";
1310 os <<
"Geometry factor for msc step limitation of e+- " <<
geomFactor <<
"\n";
1311 os <<
"Safety factor for msc step limit for e+- " <<
safetyFactor <<
"\n";
1312 os <<
"Skin parameter for msc step limitation of e+- " <<
skin <<
"\n";
1315 os <<
"Factor used for dynamic computation of angular \n"
1317 os <<
"Fixed angular limit between single \n"
1318 <<
" and multiple scattering "
1320 os <<
"Upper energy limit for e+- multiple scattering "
1322 os <<
"Type of electron single scattering model " <<
fSStype <<
"\n";
1323 os <<
"Type of nuclear form-factor " <<
nucFormfactor <<
"\n";
1325 os <<
"=======================================================================" <<
"\n";
1328 os <<
"====== Atomic Deexcitation Parameters ========" <<
"\n";
1329 os <<
"=======================================================================" <<
"\n";
1331 os <<
"Fluorescence Bearden data files enabled "
1333 os <<
"Fluorescence ANSTO data files enabled "
1335 os <<
"Auger electron cascade enabled "
1338 os <<
"De-excitation module ignores cuts "
1340 os <<
"Type of PIXE cross section for hadrons "
1342 os <<
"Type of PIXE cross section for e+- "
1344 os <<
"=======================================================================" <<
"\n";
1347 os <<
"====== DNA Physics Parameters ========" <<
"\n";
1348 os <<
"=======================================================================" <<
"\n";
1349 os <<
"Use fast sampling in DNA models "
1351 os <<
"Use Stationary option in DNA models "
1353 os <<
"Use DNA with multiple scattering of e- "
1355 os <<
"Use DNA e- solvation model type "
1357 os <<
"=======================================================================" <<
G4endl;
1366#ifdef G4MULTITHREADED
1370#ifdef G4MULTITHREADED
static const char sss[MAX_N_PAR+2]
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
static constexpr double GeV
static constexpr double pi
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
G4GLOB_DLL std::ostream G4cout
void SetAuger(G4bool val)
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
void SetLivermoreDataDir(const G4String &)
void SetDNAFast(G4bool val)
G4bool DNAStationary() const
void SetDeexcitationIgnoreCut(G4bool val)
const std::vector< G4String > & TypesDNA() const
G4bool BeardenFluoDir() const
void SetDNAElectronMsc(G4bool val)
const G4String & LivermoreDataDir()
const std::vector< G4String > & RegionsMicroElec() const
G4bool DeexcitationIgnoreCut() const
const G4String & PIXECrossSectionModel()
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
G4DNAModelSubType DNAeSolvationSubType() const
void AddDNA(const G4String ®ion, const G4String &type)
void SetDNAStationary(G4bool val)
void SetDNAeSolvationSubType(G4DNAModelSubType val)
const G4String & PIXEElectronCrossSectionModel()
void SetBeardenFluoDir(G4bool val)
void SetANSTOFluoDir(G4bool val)
void SetPIXECrossSectionModel(const G4String &)
G4bool DNAElectronMsc() const
const std::vector< G4String > & RegionsDNA() const
G4bool ANSTOFluoDir() const
void SetPIXEElectronCrossSectionModel(const G4String &)
void AddMicroElec(const G4String ®ion)
void SetEmSaturation(G4EmSaturation *)
void SetBeardenFluoDir(G4bool val)
G4bool IsPrintLocked() const
void DefineRegParamForLoss(G4VEnergyLossProcess *) const
void SetLambdaFactor(G4double val)
static G4EmParameters * theInstance
void SetMinEnergy(G4double val)
void SetLowestElectronEnergy(G4double val)
void SetBuildCSDARange(G4bool val)
G4double rangeFactorMuHad
void SetStepFunctionLightIons(G4double v1, G4double v2)
void PrintWarning(G4ExceptionDescription &ed) const
void SetEnablePolarisation(G4bool val)
G4StateManager * fStateManager
void AddDNA(const G4String ®ion, const G4String &type)
G4bool LateralDisplacementAlg96() const
void FillStepFunction(const G4ParticleDefinition *, G4VEnergyLossProcess *) const
void SetNumberOfBinsPerDecade(G4int val)
static G4EmParameters * Instance()
void SetDirectionalSplittingTarget(const G4ThreeVector &v)
G4bool BeardenFluoDir() const
G4DNAModelSubType DNAeSolvationSubType() const
G4EmSaturation * emSaturation
G4bool RetrieveMuDataFromFile() const
G4int NumberOfBins() const
G4double MscMuHadRangeFactor() const
void SetGeneralProcessActive(G4bool val)
void SetDNAFast(G4bool val)
void SetMscSafetyFactor(G4double val)
G4bool EnablePolarisation() const
void SetLateralDisplacementAlg96(G4bool val)
void SetFactorForAngleLimit(G4double val)
const G4String & PIXECrossSectionModel()
const G4String & PIXEElectronCrossSectionModel()
G4double MaxNIELEnergy() const
void SetRetrieveMuDataFromFile(G4bool v)
void SetDirectionalSplitting(G4bool v)
const G4String & LivermoreDataDir()
G4bool OnIsolated() const
void SetMscMuHadRangeFactor(G4double val)
G4bool DNAElectronMsc() const
G4double lowestElectronEnergy
G4double MinKinEnergy() const
G4int NumberOfBinsPerDecade() const
G4MscStepLimitType mscStepLimit
G4bool BuildCSDARange() const
G4double MscThetaLimit() const
G4bool LossFluctuation() const
G4double MuHadBremsstrahlungTh() const
void AddPAIModel(const G4String &particle, const G4String ®ion, const G4String &type)
void SetDNAStationary(G4bool val)
G4bool ANSTOFluoDir() const
void SetDNAElectronMsc(G4bool val)
const std::vector< G4String > & TypesPhysics() const
void SetMaxEnergyFor5DMuPair(G4double val)
G4double GetDirectionalSplittingRadius()
G4bool muhadLateralDisplacement
void SetLinearLossLimit(G4double val)
void SetMscThetaLimit(G4double val)
G4int GetConversionType() const
G4MscStepLimitType MscMuHadStepLimitType() const
G4double MscEnergyLimit() const
G4bool lateralDisplacementAlg96
G4double factorForAngleLimit
void ActivateSecondaryBiasing(const G4String &name, const G4String ®ion, G4double factor, G4double energyLimit)
G4bool BirksActive() const
G4bool DNAStationary() const
const std::vector< G4String > & RegionsPAI() const
G4double lowestTripletEnergy
G4double maxKinEnergyCSDA
void SetSubCutRegion(const G4String ®ion="")
void SetLossFluctuations(G4bool val)
void SetDeexActiveRegion(const G4String ®ion, G4bool fdeex, G4bool fauger, G4bool fpixe)
G4bool UseCutAsFinalRange() const
void SetPIXEElectronCrossSectionModel(const G4String &)
void SetLowestTripletEnergy(G4double val)
void SetMuHadLateralDisplacement(G4bool val)
G4EmSaturation * GetEmSaturation()
void SetDNAeSolvationSubType(G4DNAModelSubType val)
G4bool useAngGeneratorForIonisation
void SetQuantumEntanglement(G4bool v)
void DefineRegParamForEM(G4VEmProcess *) const
void ActivateForcedInteraction(const G4String &procname, const G4String ®ion, G4double length, G4bool wflag)
G4double lowestMuHadEnergy
void ActivateAngularGeneratorForIonisation(G4bool val)
void SetScreeningFactor(G4double val)
void SetNuclearFormfactorType(G4NuclearFormfactorType val)
void SetStepFunction(G4double v1, G4double v2)
void SetLateralDisplacement(G4bool val)
G4bool QuantumEntanglement() const
void SetWorkerVerbose(G4int val)
void SetUseCutAsFinalRange(G4bool val)
void SetDeexcitationIgnoreCut(G4bool val)
void SetBirksActive(G4bool val)
G4double ScreeningFactor() const
G4bool UseMottCorrection() const
void SetMuHadBremsstrahlungTh(G4double val)
const std::vector< G4String > & ParticlesPAI() const
G4double max5DEnergyForMuPair
const std::vector< G4String > & RegionsPhysics() const
G4MscStepLimitType mscStepLimitMuHad
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
void SetStepFunctionMuHad(G4double v1, G4double v2)
G4double MscSafetyFactor() const
G4NuclearFormfactorType nucFormfactor
void SetVerbose(G4int val)
G4int WorkerVerbose() const
void SetMscGeomFactor(G4double val)
void SetMscLambdaLimit(G4double val)
void SetMscSkin(G4double val)
void SetApplyCuts(G4bool val)
const std::vector< G4String > & TypesDNA() const
G4MscStepLimitType MscStepLimitType() const
void SetEnableSamplingTable(G4bool val)
const std::vector< G4String > & RegionsDNA() const
void SetLivermoreDataDir(const G4String &)
G4double BremsstrahlungTh() const
void SetMaxNIELEnergy(G4double val)
void SetStepFunctionIons(G4double v1, G4double v2)
void SetMaxEnergyForCSDARange(G4double val)
G4eSingleScatteringType SingleScatteringType() const
G4bool DeexcitationIgnoreCut() const
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
G4double MscGeomFactor() const
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
void SetMscStepLimitType(G4MscStepLimitType val)
void AddPhysics(const G4String ®ion, const G4String &type)
void SetMscEnergyLimit(G4double val)
void SetBremsstrahlungTh(G4double val)
void SetAuger(G4bool val)
G4bool lateralDisplacement
G4bool GetDirectionalSplitting() const
G4EmLowEParameters * fCParameters
void SetIsPrintedFlag(G4bool val)
G4double MaxKinEnergy() const
G4bool UseICRU90Data() const
void SetDirectionalSplittingRadius(G4double r)
void SetConversionType(G4int val)
G4bool LateralDisplacement() const
void SetUseICRU90Data(G4bool val)
G4bool MuHadLateralDisplacement() const
void SetOnIsolated(G4bool val)
G4bool EnableSamplingTable() const
G4EmParametersMessenger * theMessenger
void StreamInfo(std::ostream &os) const
G4double MscLambdaLimit() const
void SetPIXECrossSectionModel(const G4String &)
void SetIntegral(G4bool val)
G4ThreeVector GetDirectionalSplittingTarget() const
void SetUseMottCorrection(G4bool val)
void AddMicroElec(const G4String ®ion)
const std::vector< G4String > & RegionsMicroElec() const
G4double MaxEnergyFor5DMuPair() const
G4double MaxEnergyForCSDARange() const
G4EmExtraParameters * fBParameters
void SetLowestMuHadEnergy(G4double val)
const std::vector< G4String > & TypesPAI() const
G4bool UseAngularGeneratorForIonisation() const
void SetMaxEnergy(G4double val)
G4double LinearLossLimit() const
G4NuclearFormfactorType NuclearFormfactorType() const
G4double LowestMuHadEnergy() const
G4double MscRangeFactor() const
G4double LambdaFactor() const
G4double FactorForAngleLimit() const
G4eSingleScatteringType fSStype
void SetSingleScatteringType(G4eSingleScatteringType val)
void SetANSTOFluoDir(G4bool val)
G4double LowestTripletEnergy() const
G4double LowestElectronEnergy() const
void SetMscRangeFactor(G4double val)
G4bool GeneralProcessActive() const
static G4NistManager * Instance()
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
static constexpr double mm
static constexpr double TeV
static constexpr double GeV
static constexpr double keV
static constexpr double MeV
static constexpr double eV
static constexpr double rad
static constexpr double pi
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments