73 if(
nullptr == theInstance) {
75 if(
nullptr == theInstance) {
77 theInstance = &manager;
106 emSaturation =
nullptr;
113 fBParameters->Initialise();
114 fCParameters->Initialise();
118void G4EmParameters::Initialise()
120 lossFluctuation =
true;
121 buildCSDARange =
false;
123 cutAsFinalRange =
false;
125 lateralDisplacement =
true;
126 lateralDisplacementAlg96 =
true;
127 muhadLateralDisplacement =
false;
128 useAngGeneratorForIonisation =
false;
129 useMottCorrection =
false;
135 fSamplingTable =
false;
136 fPolarisation =
false;
137 fMuDataFromFile =
false;
140 fUseEPICS2017XS =
false;
141 f3GammaAnnihilationOnFly =
false;
142 fUseRiGePairProductionModel =
false;
146 minKinEnergy = 0.1*CLHEP::keV;
147 maxKinEnergy = 100.0*CLHEP::TeV;
148 maxKinEnergyCSDA = 1.0*CLHEP::GeV;
149 max5DEnergyForMuPair = 0.0;
150 lowestElectronEnergy = 1.0*CLHEP::keV;
151 lowestMuHadEnergy = 1.0*CLHEP::keV;
152 lowestTripletEnergy = 1.0*CLHEP::MeV;
155 bremsTh = bremsMuHadTh = maxKinEnergy;
157 factorForAngleLimit = 1.0;
158 thetaLimit = CLHEP::pi;
159 energyLimit = 100.0*CLHEP::MeV;
161 rangeFactorMuHad = 0.2;
165 lambdaLimit = 1.0*CLHEP::mm;
183 if (
nullptr != data_dir) {
188 "G4LEDATA data directory was not found.");
194 if(IsLocked()) {
return; }
195 lossFluctuation = val;
200 return lossFluctuation;
205 if(IsLocked()) {
return; }
206 buildCSDARange = val;
211 return buildCSDARange;
216 if(IsLocked()) {
return; }
227 if(IsLocked()) {
return; }
228 cutAsFinalRange = val;
233 return cutAsFinalRange;
238 if(IsLocked()) {
return; }
249 if(IsLocked()) {
return; }
250 fCParameters->SetFluo(val);
255 return fCParameters->Fluo();
260 return fCParameters->FluoDirectory();
265 if(IsLocked()) {
return; }
266 fCParameters->SetFluoDirectory(val);
271 if(IsLocked()) {
return; }
272 fCParameters->SetBeardenFluoDir(val);
277 if(IsLocked()) {
return; }
278 fCParameters->SetANSTOFluoDir(val);
283 if(IsLocked()) {
return; }
284 fCParameters->SetXDB_EADLFluoDir(val);
289 if(IsLocked()) {
return; }
290 fCParameters->SetAuger(val);
295 auto dir = fCParameters->FluoDirectory();
301 auto dir = fCParameters->FluoDirectory();
307 return fCParameters->Auger();
312 if(IsLocked()) {
return; }
313 fCParameters->SetPixe(val);
318 return fCParameters->Pixe();
323 if(IsLocked()) {
return; }
324 fCParameters->SetDeexcitationIgnoreCut(val);
329 return fCParameters->DeexcitationIgnoreCut();
334 if(IsLocked()) {
return; }
335 lateralDisplacement = val;
340 return lateralDisplacement;
345 if(IsLocked()) {
return; }
346 lateralDisplacementAlg96 = val;
351 return lateralDisplacementAlg96;
356 if(IsLocked()) {
return; }
357 muhadLateralDisplacement = val;
362 return muhadLateralDisplacement;
367 if(IsLocked()) {
return; }
368 useAngGeneratorForIonisation = val;
373 return useAngGeneratorForIonisation;
378 if(IsLocked()) {
return; }
379 useMottCorrection = val;
384 return useMottCorrection;
389 if(IsLocked()) {
return; }
400 if(IsLocked()) {
return; }
406 return fPolarisation;
411 if(IsLocked()) {
return; }
413 if(birks &&
nullptr == emSaturation) { emSaturation =
new G4EmSaturation(1); }
423 if(IsLocked()) {
return; }
434 if(IsLocked()) {
return; }
435 fCParameters->SetDNAFast(val);
441 return fCParameters->DNAFast();
446 if(IsLocked()) {
return; }
447 fCParameters->SetDNAStationary(val);
453 return fCParameters->DNAStationary();
458 if(IsLocked()) {
return; }
459 fCParameters->SetDNAElectronMsc(val);
465 return fCParameters->DNAElectronMsc();
470 if(IsLocked()) {
return; }
481 if(IsLocked()) {
return; }
482 birks = (
nullptr != ptr);
483 if(emSaturation != ptr) {
491 return fMuDataFromFile;
501 if(IsLocked()) {
return; }
512 if(IsLocked()) {
return; }
513 fSamplingTable = val;
518 return fSamplingTable;
528 if(IsLocked()) {
return; }
539 if(IsLocked()) {
return; }
545 return fUseEPICS2017XS;
550 if(IsLocked()) {
return; }
556 return f3GammaAnnihilationOnFly;
561 if(IsLocked()) {
return; }
562 f3GammaAnnihilationOnFly = v;
567 return fUseRiGePairProductionModel;
572 if (IsLocked()) {
return; }
573 fUseRiGePairProductionModel = v;
578 if(IsLocked()) {
return; }
594 if (
nullptr == emSaturation) {
596 if (
nullptr == emSaturation) {
607 if(IsLocked()) {
return; }
608 if(val > 1.e-3*CLHEP::eV && val < maxKinEnergy) {
612 ed <<
"Value of MinKinEnergy - is out of range: " << val/CLHEP::MeV
613 <<
" MeV is ignored";
625 if(IsLocked()) {
return; }
626 if(val > std::max(minKinEnergy,599.9*CLHEP::MeV) && val < 1.e+7*CLHEP::TeV) {
630 ed <<
"Value of MaxKinEnergy is out of range: "
632 <<
" GeV is ignored; allowed range 600 MeV - 1.e+7 TeV";
644 if(IsLocked()) {
return; }
645 if(val > minKinEnergy && val <= 100*CLHEP::TeV) {
646 maxKinEnergyCSDA = val;
649 ed <<
"Value of MaxKinEnergyCSDA is out of range: "
650 << val/CLHEP::GeV <<
" GeV is ignored; allowed range "
651 << minKinEnergy <<
" MeV - 100 TeV";
658 return maxKinEnergyCSDA;
663 if(IsLocked()) {
return; }
664 if(val >= 0.0) { lowestElectronEnergy = val; }
669 return lowestElectronEnergy;
674 if(IsLocked()) {
return; }
675 if(val >= 0.0) { lowestMuHadEnergy = val; }
680 return lowestMuHadEnergy;
685 if(IsLocked()) {
return; }
686 if(val > 0.0) { lowestTripletEnergy = val; }
691 return lowestTripletEnergy;
696 if(IsLocked()) {
return; }
697 if(val >= 0.0) { maxNIELEnergy = val; }
702 return maxNIELEnergy;
707 if(IsLocked()) {
return; }
708 if(val > 0.0) { max5DEnergyForMuPair = val; }
713 return max5DEnergyForMuPair;
718 if(IsLocked()) {
return; }
719 if(val > 0.0 && val < 1.0) {
723 ed <<
"Value of linLossLimit is out of range: " << val
736 if(IsLocked()) {
return; }
741 ed <<
"Value of bremsstrahlung threshold is out of range: "
742 << val/GeV <<
" GeV is ignored";
754 if(IsLocked()) {
return; }
759 ed <<
"Value of bremsstrahlung threshold is out of range: "
760 << val/GeV <<
" GeV is ignored";
772 if(IsLocked()) {
return; }
773 if(val > 0.0 && val < 1.0) {
777 ed <<
"Value of lambda factor is out of range: " << val
790 if(IsLocked()) {
return; }
792 factorForAngleLimit = val;
795 ed <<
"Value of factor for enegry limit is out of range: "
796 << val <<
" is ignored";
803 return factorForAngleLimit;
808 if(IsLocked()) {
return; }
809 if(val >= 0.0 && val <= pi) {
813 ed <<
"Value of polar angle limit is out of range: "
814 << val <<
" is ignored";
826 if(IsLocked()) {
return; }
831 ed <<
"Value of msc energy limit is out of range: "
832 << val <<
" is ignored";
844 if(IsLocked()) {
return; }
845 if(val > 0.0 && val < 1.0) {
849 ed <<
"Value of rangeFactor is out of range: "
850 << val <<
" is ignored";
862 if(IsLocked()) {
return; }
863 if(val > 0.0 && val < 1.0) {
864 rangeFactorMuHad = val;
867 ed <<
"Value of rangeFactorMuHad is out of range: "
868 << val <<
" is ignored";
875 return rangeFactorMuHad;
880 if(IsLocked()) {
return; }
885 ed <<
"Value of geomFactor is out of range: "
886 << val <<
" is ignored";
898 if(IsLocked()) {
return; }
903 ed <<
"Value of safetyFactor is out of range: "
904 << val <<
" is ignored";
916 if(IsLocked()) {
return; }
921 ed <<
"Value of lambdaLimit is out of range: "
922 << val <<
" is ignored";
934 if(IsLocked()) {
return; }
939 ed <<
"Value of skin is out of range: "
940 << val <<
" is ignored";
952 if(IsLocked()) {
return; }
957 ed <<
"Value of factorScreen is out of range: "
958 << val <<
" is ignored";
970 if (IsLocked()) {
return; }
971 fCParameters->SetMaxDNAElectronEnergy(val);
976 return fCParameters->MaxDNAElectronEnergy();
981 if (IsLocked()) {
return; }
982 fCParameters->SetMaxDNAIonEnergy(val);
987 return fCParameters->MaxDNAIonEnergy();
992 if(IsLocked()) {
return; }
993 fBParameters->SetStepFunction(v1, v2);
998 if(IsLocked()) {
return; }
999 fBParameters->SetStepFunctionMuHad(v1, v2);
1004 if(IsLocked()) {
return; }
1005 fBParameters->SetStepFunctionLightIons(v1, v2);
1010 if(IsLocked()) {
return; }
1011 fBParameters->SetStepFunctionIons(v1, v2);
1016 fBParameters->FillStepFunction(part, proc);
1021 return nbinsPerDecade*
G4lrint(std::log10(maxKinEnergy/minKinEnergy));
1026 if(IsLocked()) {
return; }
1027 if(val >= 5 && val < 1000000) {
1028 nbinsPerDecade = val;
1031 ed <<
"Value of number of bins per decade is out of range: "
1032 << val <<
" is ignored";
1039 return nbinsPerDecade;
1044 if(IsLocked()) {
return; }
1046 workerVerbose = std::min(workerVerbose, verbose);
1056 if(IsLocked()) {
return; }
1057 workerVerbose = val;
1062 return workerVerbose;
1067 if(IsLocked()) {
return; }
1068 nForFreeVector = val;
1073 return nForFreeVector;
1078 if(IsLocked()) {
return; }
1079 fTransportationWithMsc = val;
1084 return fTransportationWithMsc;
1089 if(IsLocked()) {
return; }
1100 if(IsLocked()) {
return; }
1106 return fPositronium;
1111 if(IsLocked()) {
return; }
1117 return mscStepLimit;
1122 if(IsLocked()) {
return; }
1123 mscStepLimitMuHad = val;
1128 return mscStepLimitMuHad;
1133 if(IsLocked()) {
return; }
1145 if(IsLocked()) {
return; }
1146 nucFormfactor = val;
1151 return nucFormfactor;
1156 if(IsLocked()) {
return; }
1157 fCParameters->SetDNAeSolvationSubType(val);
1163 return fCParameters->DNAeSolvationSubType();
1168 if(IsLocked()) {
return; }
1179 if(IsLocked()) {
return; }
1180 fCParameters->SetPIXECrossSectionModel(sss);
1185 return fCParameters->PIXECrossSectionModel();
1190 if(IsLocked()) {
return; }
1191 fCParameters->SetPIXEElectronCrossSectionModel(sss);
1196 return fCParameters->PIXEElectronCrossSectionModel();
1201 if(IsLocked()) {
return; }
1202 fCParameters->SetLivermoreDataDir(sss);
1207 return fCParameters->LivermoreDataDir();
1219 if(IsLocked()) {
return; }
1220 fBParameters->AddPAIModel(particle, region, type);
1225 return fBParameters->ParticlesPAI();
1230 return fBParameters->RegionsPAI();
1235 return fBParameters->TypesPAI();
1240 if(IsLocked()) {
return; }
1241 fCParameters->AddMicroElec(region);
1246 return fCParameters->RegionsMicroElec();
1251 if(IsLocked()) {
return; }
1252 fCParameters->AddDNA(region, type);
1258 return fCParameters->RegionsDNA();
1263 return fCParameters->TypesDNA();
1268 if(IsLocked()) {
return; }
1269 fBParameters->AddPhysics(region, type);
1274 return fBParameters->RegionsPhysics();
1279 return fBParameters->TypesPhysics();
1284 if(IsLocked()) {
return; }
1285 fBParameters->SetSubCutRegion(region);
1292 if(IsLocked()) {
return; }
1293 fCParameters->SetDeexActiveRegion(region, adeex, aauger, apixe);
1300 if(IsLocked()) {
return; }
1301 fBParameters->SetProcessBiasingFactor(procname, val, wflag);
1310 if(IsLocked() && !gener) {
return; }
1311 fBParameters->ActivateForcedInteraction(procname, region, length, wflag);
1320 if(IsLocked()) {
return; }
1321 fBParameters->ActivateSecondaryBiasing(procname, region, factor, energyLim);
1326 fBParameters->DefineRegParamForLoss(ptr);
1331 fBParameters->DefineRegParamForEM(ptr);
1336 return fBParameters->QuantumEntanglement();
1341 if(IsLocked()) {
return; }
1342 fBParameters->SetQuantumEntanglement(v);
1346 return fBParameters->GetDirectionalSplitting();
1351 if(IsLocked()) {
return; }
1352 fBParameters->SetDirectionalSplitting(v);
1357 if(IsLocked()) {
return; }
1358 fBParameters->SetDirectionalSplittingTarget(v);
1363 return fBParameters->GetDirectionalSplittingTarget();
1368 if(IsLocked()) {
return; }
1369 fBParameters->SetDirectionalSplittingRadius(r);
1374 return fBParameters->GetDirectionalSplittingRadius();
1379 fCParameters->DefineRegParamForDeex(ptr);
1389 if (IsLocked()) {
return; }
1390 G4String ss = fBParameters->CheckRegion(nam);
1391 if (!fluctRegions.empty()) {
1392 for (
auto const& p : fluctRegions) {
if (p.first == ss) {
return; } }
1394 fluctRegions.push_back(std::make_pair(ss, flag));
1399 if (fluctRegions.empty()) {
return; }
1405 G4long prec = os.precision(5);
1406 os <<
"=======================================================================" <<
"\n";
1407 os <<
"====== Electromagnetic Physics Parameters ========" <<
"\n";
1408 os <<
"=======================================================================" <<
"\n";
1409 os <<
"LPM effect enabled " <<flagLPM <<
"\n";
1410 os <<
"Enable creation and use of sampling tables " <<fSamplingTable <<
"\n";
1411 os <<
"Apply cuts on all EM processes " <<applyCuts <<
"\n";
1412 const char* transportationWithMsc =
"Disabled";
1414 transportationWithMsc =
"Enabled";
1416 transportationWithMsc =
"MultipleSteps";
1418 os <<
"Use combined TransportationWithMsc " <<transportationWithMsc <<
"\n";
1419 os <<
"Use general process " <<gener <<
"\n";
1420 os <<
"Enable linear polarisation for gamma " <<fPolarisation <<
"\n";
1421 os <<
"Enable photoeffect sampling below K-shell " <<fPEKShell <<
"\n";
1422 os <<
"Enable sampling of quantum entanglement "
1423 <<fBParameters->QuantumEntanglement() <<
"\n";
1424 os <<
"X-section factor for integral approach " <<lambdaFactor <<
"\n";
1425 os <<
"Min kinetic energy for tables "
1427 os <<
"Max kinetic energy for tables "
1429 os <<
"Number of bins per decade of a table " <<nbinsPerDecade <<
"\n";
1430 os <<
"Verbose level " <<verbose <<
"\n";
1431 os <<
"Verbose level for worker thread " <<workerVerbose <<
"\n";
1432 os <<
"Bremsstrahlung energy threshold above which \n"
1433 <<
" primary e+- is added to the list of secondary "
1435 os <<
"Bremsstrahlung energy threshold above which primary\n"
1436 <<
" muon/hadron is added to the list of secondary "
1438 G4String name3g =
"SimplePositronium";
1440 else if (fPositronium ==
fOrePowell) { name3g =
"OrePowell"; }
1441 else if (fPositronium ==
fOrePowellPolar) { name3g =
"OrePowellPolar"; }
1442 os <<
"Positron annihilation at rest model " << name3g <<
"\n";
1444 os <<
"Enable 3 gamma annihilation on fly "
1445 << f3GammaAnnihilationOnFly <<
"\n";
1446 os <<
"Lowest triplet kinetic energy "
1447 <<
G4BestUnit(lowestTripletEnergy,
"Energy") <<
"\n";
1448 os <<
"Enable sampling of gamma linear polarisation " <<fPolarisation <<
"\n";
1449 os <<
"5D gamma conversion model type " <<tripletConv <<
"\n";
1450 os <<
"5D gamma conversion model on isolated ion " <<onIsolated <<
"\n";
1451 if(max5DEnergyForMuPair>0.0) {
1452 os <<
"5D gamma conversion limit for muon pair "
1453 << max5DEnergyForMuPair/CLHEP::GeV <<
" GeV\n";
1455 os <<
"Use RiGe 5D e+e- pair production model by muons "
1456 << fUseRiGePairProductionModel <<
"\n";
1457 os <<
"Livermore data directory "
1458 << fCParameters->LivermoreDataDir() <<
"\n";
1460 os <<
"=======================================================================" <<
"\n";
1461 os <<
"====== Ionisation Parameters ========" <<
"\n";
1462 os <<
"=======================================================================" <<
"\n";
1463 os <<
"Step function for e+- "
1464 <<
"("<<fBParameters->GetStepFunctionP1() <<
", "
1465 << fBParameters->GetStepFunctionP2()/CLHEP::mm <<
" mm)\n";
1466 os <<
"Step function for muons/hadrons "
1467 <<
"("<<fBParameters->GetStepFunctionMuHadP1() <<
", "
1468 << fBParameters->GetStepFunctionMuHadP2()/CLHEP::mm <<
" mm)\n";
1469 os <<
"Step function for light ions "
1470 <<
"("<<fBParameters->GetStepFunctionLightIonsP1() <<
", "
1471 << fBParameters->GetStepFunctionLightIonsP2()/CLHEP::mm <<
" mm)\n";
1472 os <<
"Step function for general ions "
1473 <<
"("<<fBParameters->GetStepFunctionIonsP1() <<
", "
1474 << fBParameters->GetStepFunctionIonsP2()/CLHEP::mm <<
" mm)\n";
1475 os <<
"Lowest e+e- kinetic energy "
1476 <<
G4BestUnit(lowestElectronEnergy,
"Energy") <<
"\n";
1477 os <<
"Lowest muon/hadron kinetic energy "
1478 <<
G4BestUnit(lowestMuHadEnergy,
"Energy") <<
"\n";
1479 os <<
"Use ICRU90 data " << fICRU90 <<
"\n";
1480 os <<
"Fluctuations of dE/dx are enabled " << lossFluctuation <<
"\n";
1484 os <<
"Type of fluctuation model for leptons and hadrons " << namef <<
"\n";
1485 if (!fluctRegions.empty()) {
1486 if (lossFluctuation) {
1487 os <<
"Fluctuations of dE/dx are disabled in G4Regions: ";
1489 os <<
"Fluctuations of dE/dx are enabled in G4Regions: ";
1492 for (
auto const& p : fluctRegions) {
1493 if (p.second != lossFluctuation) {
1494 os << p.first <<
" ";
1495 if (n > 0 && (n/2)*2 == n) {
1503 os <<
"Use built-in Birks saturation " << birks <<
"\n";
1504 os <<
"Build CSDA range enabled " <<buildCSDARange <<
"\n";
1505 os <<
"Use cut as a final range enabled " <<cutAsFinalRange <<
"\n";
1506 os <<
"Enable angular generator interface "
1507 <<useAngGeneratorForIonisation <<
"\n";
1508 os <<
"Max kinetic energy for CSDA tables "
1509 <<
G4BestUnit(maxKinEnergyCSDA,
"Energy") <<
"\n";
1510 os <<
"Max kinetic energy for NIEL computation "
1511 <<
G4BestUnit(maxNIELEnergy,
"Energy") <<
"\n";
1512 os <<
"Linear loss limit " <<linLossLimit <<
"\n";
1513 os <<
"Read data from file for e+e- pair production by mu " <<fMuDataFromFile <<
"\n";
1515 os <<
"=======================================================================" <<
"\n";
1516 os <<
"====== Multiple Scattering Parameters ========" <<
"\n";
1517 os <<
"=======================================================================" <<
"\n";
1518 os <<
"Type of msc step limit algorithm for e+- " <<mscStepLimit <<
"\n";
1519 os <<
"Type of msc step limit algorithm for muons/hadrons " <<mscStepLimitMuHad <<
"\n";
1520 os <<
"Msc lateral displacement for e+- enabled " <<lateralDisplacement <<
"\n";
1521 os <<
"Msc lateral displacement for muons and hadrons " <<muhadLateralDisplacement <<
"\n";
1522 os <<
"Urban msc model lateral displacement alg96 " <<lateralDisplacementAlg96 <<
"\n";
1523 os <<
"Range factor for msc step limit for e+- " <<rangeFactor <<
"\n";
1524 os <<
"Range factor for msc step limit for muons/hadrons " <<rangeFactorMuHad <<
"\n";
1525 os <<
"Geometry factor for msc step limitation of e+- " <<geomFactor <<
"\n";
1526 os <<
"Safety factor for msc step limit for e+- " <<safetyFactor <<
"\n";
1527 os <<
"Skin parameter for msc step limitation of e+- " <<skin <<
"\n";
1528 os <<
"Lambda limit for msc step limit for e+- " <<lambdaLimit/CLHEP::mm <<
" mm\n";
1529 os <<
"Use Mott correction for e- scattering " << useMottCorrection <<
"\n";
1530 os <<
"Factor used for dynamic computation of angular \n"
1531 <<
" limit between single and multiple scattering " << factorForAngleLimit <<
"\n";
1532 os <<
"Fixed angular limit between single \n"
1533 <<
" and multiple scattering "
1534 << thetaLimit/CLHEP::rad <<
" rad\n";
1535 os <<
"Upper energy limit for e+- multiple scattering "
1536 << energyLimit/CLHEP::MeV <<
" MeV\n";
1537 os <<
"Type of electron single scattering model " <<fSStype <<
"\n";
1538 os <<
"Type of nuclear form-factor " <<nucFormfactor <<
"\n";
1539 os <<
"Screening factor " <<factorScreen <<
"\n";
1540 os <<
"=======================================================================" <<
"\n";
1542 if(fCParameters->Fluo()) {
1543 os <<
"====== Atomic Deexcitation Parameters ========" <<
"\n";
1544 os <<
"=======================================================================" <<
"\n";
1545 os <<
"Fluorescence enabled " <<fCParameters->Fluo() <<
"\n";
1548 if(fdir ==
fluoBearden) { named =
"fluor_Bearden"; }
1549 else if(fdir ==
fluoANSTO) { named =
"fluor_ANSTO"; }
1550 else if(fdir ==
fluoXDB_EADL) { named =
"fluor_XDB_EADL"; }
1551 os <<
"Directory in G4LEDATA for fluorescence data files " << named <<
"\n";
1552 os <<
"Auger electron cascade enabled "
1553 <<fCParameters->Auger() <<
"\n";
1554 os <<
"PIXE atomic de-excitation enabled " <<fCParameters->Pixe() <<
"\n";
1555 os <<
"De-excitation module ignores cuts "
1556 <<fCParameters->DeexcitationIgnoreCut() <<
"\n";
1557 os <<
"Type of PIXE cross section for hadrons "
1558 <<fCParameters->PIXECrossSectionModel() <<
"\n";
1559 os <<
"Type of PIXE cross section for e+- "
1560 <<fCParameters->PIXEElectronCrossSectionModel() <<
"\n";
1561 os <<
"=======================================================================" <<
"\n";
1564 os <<
"====== DNA Physics Parameters ========" <<
"\n";
1565 os <<
"=======================================================================" <<
"\n";
1566 os <<
"Max DNA electron energy "
1567 << fCParameters->MaxDNAElectronEnergy()/CLHEP::MeV <<
" MeV\n";
1568 os <<
"Max DNA ion energy "
1569 << fCParameters->MaxDNAIonEnergy()/CLHEP::MeV <<
" MeV\n";
1570 os <<
"Use fast sampling in DNA models "
1571 << fCParameters->DNAFast() <<
"\n";
1572 os <<
"Use Stationary option in DNA models "
1573 << fCParameters->DNAStationary() <<
"\n";
1574 os <<
"Use DNA with multiple scattering of e- "
1575 << fCParameters->DNAElectronMsc() <<
"\n";
1576 os <<
"Use DNA e- solvation model type "
1577 << fCParameters->DNAeSolvationSubType() <<
"\n";
1578 auto chemModel = fCParameters->GetChemTimeStepModel();
1581 std::vector<G4String> ChemModel{
"Unknown",
"SBS",
"IRT",
"IRT_syn"};
1582 os <<
"Use DNA Chemistry model "
1583 << ChemModel.at((std::size_t)chemModel) <<
"\n";
1585 os <<
"=======================================================================" <<
G4endl;
1592 if(fIsPrinted)
return;
1594#ifdef G4MULTITHREADED
1598#ifdef G4MULTITHREADED
1609G4bool G4EmParameters::IsLocked()
const
1620 fCParameters-> SetChemTimeStepModel(model);
1625 return fCParameters->GetChemTimeStepModel();
G4TemplateAutoLock< G4Mutex > G4AutoLock
std::ostream & operator<<(std::ostream &os, const G4EmParameters &par)
G4TransportationWithMscType
G4PositronAtRestModelType
const char * G4FindDataDir(const char *)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
void SetEmSaturation(G4EmSaturation *)
void SetBeardenFluoDir(G4bool val)
G4bool IsPrintLocked() const
void DefineRegParamForLoss(G4VEnergyLossProcess *) const
void SetLambdaFactor(G4double val)
void SetMinEnergy(G4double val)
void SetLowestElectronEnergy(G4double val)
void SetBuildCSDARange(G4bool val)
void SetStepFunctionLightIons(G4double v1, G4double v2)
void SetEnablePolarisation(G4bool val)
void AddDNA(const G4String ®ion, const G4String &type)
G4bool LateralDisplacementAlg96() const
void FillStepFunction(const G4ParticleDefinition *, G4VEnergyLossProcess *) const
G4EmParameters(G4EmParameters &)=delete
void SetNumberOfBinsPerDecade(G4int val)
G4bool UseEPICS2017XS() const
static G4EmParameters * Instance()
void SetDirectionalSplittingTarget(const G4ThreeVector &v)
G4DNAModelSubType DNAeSolvationSubType() const
G4bool RetrieveMuDataFromFile() const
G4bool PhotoeffectBelowKShell() const
G4int NumberOfBins() const
G4double MscMuHadRangeFactor() const
void SetGeneralProcessActive(G4bool val)
void SetDNAFast(G4bool val)
void SetMscSafetyFactor(G4double val)
G4bool EnablePolarisation() const
void SetMaxDNAElectronEnergy(G4double val)
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 MinKinEnergy() const
G4int NumberOfBinsPerDecade() const
G4bool BuildCSDARange() const
G4double MscThetaLimit() const
G4bool LossFluctuation() const
G4double MuHadBremsstrahlungTh() const
void AddPAIModel(const G4String &particle, const G4String ®ion, const G4String &type)
void SetPositronAtRestModelType(G4PositronAtRestModelType val)
void SetDNAStationary(G4bool val)
void SetDNAElectronMsc(G4bool val)
const std::vector< G4String > & TypesPhysics() const
void SetMaxEnergyFor5DMuPair(G4double val)
G4double GetDirectionalSplittingRadius()
void SetLinearLossLimit(G4double val)
void SetMscThetaLimit(G4double val)
G4int GetConversionType() const
G4MscStepLimitType MscMuHadStepLimitType() const
G4double MscEnergyLimit() const
void ActivateSecondaryBiasing(const G4String &name, const G4String ®ion, G4double factor, G4double energyLimit)
G4bool BirksActive() const
G4bool DNAStationary() const
G4bool MscPositronCorrection() const
const std::vector< G4String > & RegionsPAI() const
G4int NumberForFreeVector() const
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)
void SetQuantumEntanglement(G4bool v)
void SetNumberForFreeVector(G4int val)
void DefineRegParamForEM(G4VEmProcess *) const
void ActivateForcedInteraction(const G4String &procname, const G4String ®ion, G4double length, G4bool wflag)
void SetXDB_EADLFluoDir(G4bool val)
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)
G4double MaxDNAElectronEnergy() const
void SetUseCutAsFinalRange(G4bool val)
void SetDeexcitationIgnoreCut(G4bool val)
void SetBirksActive(G4bool val)
G4double ScreeningFactor() const
G4bool UseMottCorrection() const
G4double MaxDNAIonEnergy() const
void SetMuHadBremsstrahlungTh(G4double val)
const std::vector< G4String > & ParticlesPAI() const
const std::vector< G4String > & RegionsPhysics() const
void SetFluctuationType(G4EmFluctuationType val)
void DefineRegParamForDeex(G4VAtomDeexcitation *) const
void SetStepFunctionMuHad(G4double v1, G4double v2)
G4double MscSafetyFactor() const
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
void SetUseRiGePairProductionModel(G4bool v)
G4MscStepLimitType MscStepLimitType() const
void SetEnableSamplingTable(G4bool val)
const std::vector< G4String > & RegionsDNA() const
void SetLivermoreDataDir(const G4String &)
void SetFluoDirectory(G4EmFluoDirectory)
G4double BremsstrahlungTh() const
void SetMaxNIELEnergy(G4double val)
void SetStepFunctionIons(G4double v1, G4double v2)
G4PositronAtRestModelType PositronAtRestModelType() const
void SetMaxEnergyForCSDARange(G4double val)
G4eSingleScatteringType SingleScatteringType() const
void SetMaxDNAIonEnergy(G4double val)
G4bool DeexcitationIgnoreCut() const
G4TransportationWithMscType TransportationWithMsc() const
void SetProcessBiasingFactor(const G4String &procname, G4double val, G4bool wflag)
G4double MscGeomFactor() const
void SetMscMuHadStepLimitType(G4MscStepLimitType val)
G4EmFluctuationType FluctuationType() const
void SetMscStepLimitType(G4MscStepLimitType val)
void AddPhysics(const G4String ®ion, const G4String &type)
void SetMscEnergyLimit(G4double val)
void SetBremsstrahlungTh(G4double val)
void SetAuger(G4bool val)
void SetUseEPICS2017XS(G4bool v)
void DefineFluctuationFlags(std::vector< G4bool > *theFluctFlags)
G4bool GetDirectionalSplitting() const
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)
G4ChemTimeStepModel GetTimeStepModel() const
G4bool MuHadLateralDisplacement() const
void SetOnIsolated(G4bool val)
void SetTransportationWithMsc(G4TransportationWithMscType val)
G4bool EnableSamplingTable() const
G4EmFluoDirectory FluoDirectory() const
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
void SetMscPositronCorrection(G4bool v)
G4double MaxEnergyForCSDARange() const
G4bool UseRiGePairProductionModel() const
void SetLowestMuHadEnergy(G4double val)
void SetFluctuationsForRegion(const G4String ®ionName, G4bool flag)
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
G4bool Use3GammaAnnihilationOnFly() const
const G4String & GetDirLEDATA() const
void SetSingleScatteringType(G4eSingleScatteringType val)
void SetANSTOFluoDir(G4bool val)
G4double LowestTripletEnergy() const
void SetPhotoeffectBelowKShell(G4bool v)
G4double LowestElectronEnergy() const
void SetMscRangeFactor(G4double val)
void SetTimeStepModel(const G4ChemTimeStepModel &model)
void Set3GammaAnnihilationOnFly(G4bool v)
G4bool GeneralProcessActive() const
static void FillFluctFlags(std::vector< std::pair< G4String, G4bool > > ®, std::vector< G4bool > *flags)
static G4NistManager * Instance()
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()