20#include "BDSException.hh"
21#include "BDSGlobalConstants.hh"
22#include "BDSIonDefinition.hh"
23#include "BDSModularPhysicsList.hh"
24#include "BDSParticleDefinition.hh"
25#include "BDSPhysicalConstants.hh"
26#include "BDSPhysicsAnnihiToMuMu.hh"
27#include "BDSPhysicsCherenkov.hh"
28#include "BDSPhysicsCutsAndLimits.hh"
29#include "BDSPhysicsEMDissociation.hh"
30#include "BDSPhysicsGammaToMuMu.hh"
31#include "BDSPhysicsLaserWire.hh"
32#include "BDSPhysicsMuon.hh"
33#include "BDSPhysicsMuonInelastic.hh"
34#include "BDSPhysicsSynchRad.hh"
35#include "BDSPhysicsUtilities.hh"
36#include "BDSUtilities.hh"
38#include "parser/fastlist.h"
39#include "parser/physicsbiasing.h"
43#include "G4GenericBiasingPhysics.hh"
44#include "G4ParticleTable.hh"
45#include "G4ProcessManager.hh"
46#include "G4ProcessVector.hh"
48#include "G4Version.hh"
51#include "G4ChargeExchangePhysics.hh"
52#include "G4DecayPhysics.hh"
53#include "G4EmExtraPhysics.hh"
54#include "G4EmLivermorePhysics.hh"
55#include "G4EmLivermorePolarizedPhysics.hh"
56#include "G4EmLowEPPhysics.hh"
57#include "G4EmPenelopePhysics.hh"
58#include "G4EmStandardPhysics.hh"
59#include "G4EmStandardPhysicsSS.hh"
60#include "G4EmStandardPhysicsWVI.hh"
61#include "G4EmStandardPhysics_option1.hh"
62#include "G4EmStandardPhysics_option2.hh"
63#include "G4EmStandardPhysics_option3.hh"
64#include "G4EmStandardPhysics_option4.hh"
65#include "G4HadronDElasticPhysics.hh"
66#include "G4HadronElasticPhysics.hh"
67#include "G4HadronElasticPhysicsHP.hh"
68#include "G4HadronElasticPhysicsLEND.hh"
69#include "G4HadronElasticPhysicsXS.hh"
70#include "G4HadronHElasticPhysics.hh"
71#include "G4HadronPhysicsFTFP_BERT.hh"
72#include "G4HadronPhysicsFTFP_BERT_HP.hh"
73#include "G4HadronPhysicsQGSP_BERT.hh"
74#include "G4HadronPhysicsQGSP_BERT_HP.hh"
75#include "G4HadronPhysicsQGSP_BIC.hh"
76#include "G4HadronPhysicsQGSP_BIC_HP.hh"
77#include "G4HadronPhysicsShielding.hh"
78#include "G4IonBinaryCascadePhysics.hh"
79#include "G4IonElasticPhysics.hh"
80#include "G4IonINCLXXPhysics.hh"
81#include "G4IonPhysics.hh"
82#include "G4IonQMDPhysics.hh"
83#include "G4NeutronTrackingCut.hh"
84#include "G4OpticalPhysics.hh"
85#include "G4RadioactiveDecayPhysics.hh"
86#include "G4StoppingPhysics.hh"
87#include "G4SynchrotronRadiation.hh"
90#if G4VERSION_NUMBER > 1009
91#include "G4HadronElasticPhysicsPHP.hh"
94#if G4VERSION_NUMBER > 1019
95#include "G4EmStandardPhysicsGS.hh"
98#if G4VERSION_NUMBER > 1020
99#include "G4SpinDecayPhysics.hh"
102#if G4VERSION_NUMBER > 1022
103#include "G4IonPhysicsPHP.hh"
106#if G4VERSION_NUMBER > 1029
107#include "G4MuonicAtomDecayPhysics.hh"
110#if G4VERSION_NUMBER > 1039
111#include "BDSPhysicsChannelling.hh"
112#include "BDSPhysicsRadioactivation.hh"
113#include "G4EmDNAPhysics.hh"
114#include "G4EmDNAPhysics_option1.hh"
115#include "G4EmDNAPhysics_option2.hh"
116#include "G4EmDNAPhysics_option3.hh"
117#include "G4EmDNAPhysics_option4.hh"
118#include "G4EmDNAPhysics_option5.hh"
119#include "G4EmDNAPhysics_option6.hh"
120#include "G4EmDNAPhysics_option7.hh"
121#include "G4HadronPhysicsShieldingLEND.hh"
124#if G4VERSION_NUMBER < 1070
125#include "G4OpticalProcessIndex.hh"
127#include "G4OpticalParameters.hh"
131#include "G4AntiNeutrinoE.hh"
132#include "G4AntiNeutron.hh"
133#include "G4AntiProton.hh"
134#include "G4BaryonConstructor.hh"
135#include "G4Electron.hh"
137#include "G4IonConstructor.hh"
138#include "G4LeptonConstructor.hh"
139#include "G4MesonConstructor.hh"
140#include "G4NeutrinoE.hh"
141#include "G4Neutron.hh"
142#include "G4Positron.hh"
143#include "G4Proton.hh"
144#include "G4ShortLivedConstructor.hh"
156BDSModularPhysicsList::BDSModularPhysicsList(
const G4String& physicsList):
158 opticalPhysics(nullptr),
212#if G4VERSION_NUMBER > 1019
215#if G4VERSION_NUMBER > 1020
218#if G4VERSION_NUMBER > 1022
221#if G4VERSION_NUMBER > 1029
224#if G4VERSION_NUMBER > 1039
239 aliasToOriginal[
"cerenkov"] =
"cherenkov";
240 aliasToOriginal[
"cutsandlimits"] =
"cuts_and_limits";
241 aliasToOriginal[
"em_low"] =
"em_penelope";
242 aliasToOriginal[
"hadronic"] =
"ftfp_bert";
243 aliasToOriginal[
"hadronic_hp"] =
"ftfp_bert_hp";
244 aliasToOriginal[
"ionbinary"] =
"ion_binary";
245 aliasToOriginal[
"ioninclxx"] =
"ion_inclxx";
246 aliasToOriginal[
"ionphp"] =
"ion_php";
247 aliasToOriginal[
"spindecay"] =
"decay_spin";
248 aliasToOriginal[
"synchrad"] =
"synch_rad";
249#if G4VERSION_NUMBER > 1039
250 aliasToOriginal[
"channeling"] =
"channelling";
254 for (
const auto& constructor : physicsConstructors)
256 physicsLists.emplace_back(constructor.first);
257 physicsActivated[constructor.first] =
false;
262 for (
const auto& kv : physicsConstructors)
263 {incompatible.insert(std::make_pair(kv.first, std::vector<G4String>()));}
264 incompatible[
"annihi_to_mumu"] = {
"em_extra"};
265 incompatible[
"muon"] = {
"em_extra"};
266 incompatible[
"muon_inelastic"] = {
"em_extra",
"muon"};
267 incompatible[
"em"] = {
"em_ss",
"em_wvi",
"em_1",
"em_2",
"em_3",
"em_4"};
268 incompatible[
"em_ss"] = {
"em",
"em_wvi",
"em_1",
"em_2",
"em_3",
"em_4"};
269 incompatible[
"em_wvi"] = {
"em",
"em_ss",
"em_1",
"em_2",
"em_3",
"em_4"};
270 incompatible[
"em_1"] = {
"em",
"em_ss",
"em_wvi",
"em_2",
"em_3",
"em_4"};
271 incompatible[
"em_2"] = {
"em",
"em_ss",
"em_wvi",
"em_1",
"em_3",
"em_4"};
272 incompatible[
"em_3"] = {
"em",
"em_ss",
"em_wvi",
"em_1",
"em_2",
"em_4"};
273 incompatible[
"em_4"] = {
"em",
"em_ss",
"em_wvi",
"em_1",
"em_2",
"em_3"};
274 incompatible[
"em_livermore"] = {
"em_livermore_polarised"};
275 incompatible[
"em_extra"] = {
"muon",
"muon_inelastic"};
276 incompatible[
"ftfp_bert"] = {
"ftfp_bert_hp",
"qgsp_bert",
"qgsp_bert_hp",
"qgsp_bic",
"qgsp_bic_hp"};
277 incompatible[
"ftfp_bert_hp"] = {
"ftfp_bert",
"qgsp_bert",
"qgsp_bert_hp",
"qgsp_bic",
"qgsp_bic_hp"};
278 incompatible[
"gamma_to_mumu"] = {
"em_extra"};
279 incompatible[
"hadronic_elastic"] = {
"hadronic_elastic_d",
"hadronic_elastic_h",
"hadronic_elastic_hp",
"hadronic_elastic_lend",
"hadronic_elastic_xs"};
280 incompatible[
"hadronic_elastic_d"] = {
"hadronic_elastic",
"hadronic_elastic_h",
"hadronic_elastic_hp",
"hadronic_elastic_lend",
"hadronic_elastic_xs"};
281 incompatible[
"hadronic_elastic_h"] = {
"hadronic_elastic",
"hadronic_elastic_d",
"hadronic_elastic_hp",
"hadronic_elastic_lend",
"hadronic_elastic_xs"};
282 incompatible[
"hadronic_elastic_hp"] = {
"hadronic_elastic",
"hadronic_elastic_d",
"hadronic_elastic_h",
"hadronic_elastic_lend",
"hadronic_elastic_xs"};
283 incompatible[
"hadronic_elastic_lend"] = {
"hadronic_elastic",
"hadronic_elastic_d",
"hadronic_elastic_h",
"hadronic_elastic_hp",
"hadronic_elastic_xs"};
284 incompatible[
"hadronic_elastic_xs"] = {
"hadronic_elastic",
"hadronic_elastic_d",
"hadronic_elastic_h",
"hadronic_elastic_hp",
"hadronic_elastic_lend"};
285 incompatible[
"ion_elastic"] = {
"ion_elastic_qmd"};
286 incompatible[
"qgsp_bert"] = {
"ftfp_bert",
"ftfp_bert_hp",
"qgsp_bert_hp",
"qgsp_bic",
"qgsp_bic_hp"};
287 incompatible[
"qgsp_bert_hp"] = {
"ftfp_bert",
"ftfp_bert_hp",
"qgsp_bert",
"qgsp_bic",
"qgsp_bic_hp"};
288 incompatible[
"qgsp_bic"] = {
"ftfp_bert",
"ftfp_bert_hp",
"qgsp_bert",
"qgsp_bert_hp",
"qgsp_bic_hp"};
289 incompatible[
"qgsp_bic_hp"] = {
"ftfp_bert",
"ftfp_bert_hp",
"qgsp_bert",
"qgsp_bert_hp",
"qgsp_bic"};
291#if G4VERSION_NUMBER > 1019
292 for (
const auto& name : {
"em",
"em_ss",
"em_wvi",
"em_1",
"em_2",
"em_3",
"em_4"})
293 {incompatible[name].push_back(
"em_gs");}
294 incompatible[
"em_gs"] = {
"em",
"em_ss",
"em_wvi",
"em_1",
"em_2",
"em_3",
"em_4"};
296#if G4VERSION_NUMBER > 1020
297 incompatible[
"decay"].push_back(
"decay_spin");
298 incompatible[
"decay_spin"] = {
"decay"};
300#if G4VERSION_NUMBER > 1039
301 incompatible[
"shielding"].push_back(
"shielding_lend");
302 incompatible[
"shielding_lend"] = {
"shielding"};
305 ParsePhysicsList(physicsList);
309 for (
auto physics : constructors)
310 {RegisterPhysics(physics);}
315 if (globals->Verbose())
320BDSModularPhysicsList::~BDSModularPhysicsList()
326 G4VModularPhysicsList::ConstructParticle();
331 G4VModularPhysicsList::ConstructProcess();
332 DumpCutValuesTable(100);
339 G4String result = (physics.second ?
"active" :
"inactive");
340 G4cout << std::setw(27) << (
"\"" + physics.first +
"\": ") << result << G4endl;
347 G4cout << __METHOD_NAME__ <<
"Physics list string: \"" << physListName <<
"\"" << G4endl;
351 std::stringstream ss(physListName);
352 std::istream_iterator<std::string> begin(ss);
353 std::istream_iterator<std::string> end;
354 std::vector<std::string> physicsListNamesS(begin, end);
357 std::vector<G4String> physicsListNames;
358 for (
const auto& physicsListName : physicsListNamesS)
360 G4String name = G4String(physicsListName);
368 G4cout << __METHOD_NAME__ <<
"alias \"" << name <<
"\" forwarding to \""
369 << result->second <<
"\"" << G4endl;
370 name = result->second;
372 physicsListNames.push_back(name);
376 if (std::find(physicsListNames.begin(), physicsListNames.end(),
"em") != physicsListNames.end())
379 for (
const auto& name : physicsListNames)
384 G4cout << __METHOD_NAME__ <<
"Constructing \"" << result->first <<
"\" physics list" << G4endl;
386 auto mem = result->second;
391 G4cout <<
"\"" << name <<
"\" is not a valid physics list. Available ones are: " << G4endl;
393 {G4cout <<
"\"" << listName <<
"\"" << G4endl;}
394 throw BDSException(__METHOD_NAME__,
"Invalid physics list.");
404 G4LeptonConstructor::ConstructParticle();
409 G4ShortLivedConstructor::ConstructParticle();
414 G4MesonConstructor::ConstructParticle();
419 G4BaryonConstructor::ConstructParticle();
425 G4GenericIon::GenericIonDefinition();
426 G4IonConstructor::ConstructParticle();
437 G4long maxPhotonsPerStep =
globals->MaximumPhotonsPerStep();
438#if G4VERSION_NUMBER < 1079
440 opticalPhysics->Configure(G4OpticalProcessIndex::kCerenkov,
true);
441 opticalPhysics->Configure(G4OpticalProcessIndex::kScintillation,
true);
442 opticalPhysics->Configure(G4OpticalProcessIndex::kAbsorption,
globals->TurnOnOpticalAbsorption());
443 opticalPhysics->Configure(G4OpticalProcessIndex::kRayleigh,
globals->TurnOnRayleighScattering());
444 opticalPhysics->Configure(G4OpticalProcessIndex::kMieHG,
globals->TurnOnMieScattering());
445 opticalPhysics->Configure(G4OpticalProcessIndex::kBoundary,
globals->TurnOnOpticalSurface());
446 opticalPhysics->Configure(G4OpticalProcessIndex::kWLS,
true);
447 opticalPhysics->SetScintillationYieldFactor(
globals->ScintYieldFactor());
448 if (maxPhotonsPerStep >= 0)
449 {opticalPhysics->SetMaxNumPhotonsPerStep(maxPhotonsPerStep);}
451 G4OpticalParameters* opticalParameters = G4OpticalParameters::Instance();
452 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kCerenkov),
true);
453 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kScintillation),
true);
454 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kAbsorption),
globals->TurnOnOpticalAbsorption());
455 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kRayleigh),
globals->TurnOnRayleighScattering());
456 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kMieHG),
globals->TurnOnMieScattering());
457 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kBoundary),
globals->TurnOnOpticalSurface());
458 opticalParameters->SetProcessActivation(G4OpticalProcessName(G4OpticalProcessIndex::kWLS),
true);
459 if (maxPhotonsPerStep >= 0)
460 {opticalParameters->SetCerenkovMaxPhotonsPerStep((G4int)maxPhotonsPerStep);}
467 const std::vector<G4String>& forbidden =
incompatible.at(singlePhysicsIn);
469 for (
const auto& key : forbidden)
473 G4cerr << __METHOD_NAME__ <<
"Incompatible physics list \"" << singlePhysicsIn
474 <<
"\" being used with already used \"" << key <<
"\"" << G4endl;
475 G4cout <<
"\"" << singlePhysicsIn <<
"\" cannot be used with the following:" << G4endl;
476 for (
const auto& v : forbidden)
477 {G4cout <<
"\"" << v <<
"\"" << G4endl;}
478 throw BDSException(__METHOD_NAME__,
"Incompatible physics list.");
506 constructors.push_back(
new G4ChargeExchangePhysics());
536 constructors.push_back(
new G4DecayPhysics());
545 constructors.push_back(
new G4RadioactiveDecayPhysics());
555 constructors.push_back(
new G4EmStandardPhysics());
573 auto constructor =
new G4EmExtraPhysics();
574#if G4VERSION_NUMBER > 1019
576 constructor->MuonNuclear(useMuonNuclear);
577 G4cout << __METHOD_NAME__ <<
"G4EmExtraPhysics> muon nuclear processes : " << BDS::BoolToString(useMuonNuclear) << G4endl;
579#if G4VERSION_NUMBER > 1029
581 constructor->GammaToMuMu(useGammaToMuMu);
582 G4cout << __METHOD_NAME__ <<
"G4EmExtraPhysics> gamma to mu mu : " << BDS::BoolToString(useGammaToMuMu) << G4endl;
584 constructor->PositronToMuMu(usePositronToMuMu);
585 G4cout << __METHOD_NAME__ <<
"G4EmExtraPhysics> e+ to mu mu : " << BDS::BoolToString(usePositronToMuMu) << G4endl;
587 constructor->PositronToHadrons(usePositronToHadrons);
588 G4cout << __METHOD_NAME__ <<
"G4EmExtraPhysics> e+ to hadrons : " << BDS::BoolToString(usePositronToHadrons) << G4endl;
590#if G4VERSION_NUMBER > 1039
592 if (useLENDGammaNuclear)
595 constructor->LENDGammaNuclear(
true);
596 G4cout << __METHOD_NAME__ <<
"G4EmExtraPhysics> LEND gamma nuclear : " << BDS::BoolToString(useMuonNuclear) << G4endl;
599 constructor->ElectroNuclear(useElectroNuclear);
601 constructors.push_back(constructor);
611 constructors.push_back(
new G4EmLivermorePhysics());
621 constructors.push_back(
new G4EmLivermorePolarizedPhysics());
631 constructors.push_back(
new G4EmLowEPPhysics());
641 constructors.push_back(
new G4EmPenelopePhysics());
651 constructors.push_back(
new G4EmStandardPhysicsSS());
661 constructors.push_back(
new G4EmStandardPhysicsWVI());
671 constructors.push_back(
new G4EmStandardPhysics_option1());
681 constructors.push_back(
new G4EmStandardPhysics_option2());
691 constructors.push_back(
new G4EmStandardPhysics_option3());
701 constructors.push_back(
new G4EmStandardPhysics_option4());
712 constructors.push_back(
new G4HadronPhysicsFTFP_BERT());
723 constructors.push_back(
new G4HadronPhysicsFTFP_BERT_HP());
742 constructors.push_back(
new G4HadronElasticPhysics());
752 constructors.push_back(
new G4HadronDElasticPhysics());
762 constructors.push_back(
new G4HadronHElasticPhysics());
772 constructors.push_back(
new G4HadronElasticPhysicsHP());
783 constructors.push_back(
new G4HadronElasticPhysicsLEND());
793 constructors.push_back(
new G4HadronElasticPhysicsXS());
808 constructors.push_back(
new G4IonPhysics());
824 constructors.push_back(
new G4IonBinaryCascadePhysics());
840 constructors.push_back(
new G4IonElasticPhysics());
856 constructors.push_back(
new G4IonQMDPhysics());
886 constructors.push_back(
new G4IonINCLXXPhysics());
922 auto ntc =
new G4NeutronTrackingCut();
925 G4cout << __METHOD_NAME__ <<
"Neutron time limit: " << timeLimit / CLHEP::s <<
" s" << G4endl;
926 G4cout << __METHOD_NAME__ <<
"Neutron kinetic energy limit: " << eKinLimit / CLHEP::MeV << G4endl;
927 ntc->SetTimeLimit(timeLimit);
928 ntc->SetKineticEnergyLimit(eKinLimit);
929 constructors.push_back(ntc);
938 opticalPhysics =
new G4OpticalPhysics();
939 constructors.push_back(opticalPhysics);
949 constructors.push_back(
new G4HadronPhysicsQGSP_BERT());
959 constructors.push_back(
new G4HadronPhysicsQGSP_BERT_HP());
969 constructors.push_back(
new G4HadronPhysicsQGSP_BIC());
979 constructors.push_back(
new G4HadronPhysicsQGSP_BIC_HP());
986#if G4VERSION_NUMBER > 1059
991 constructors.push_back(
new G4HadronPhysicsShielding());
1002 constructors.push_back(
new G4StoppingPhysics());
1017#if G4VERSION_NUMBER > 1019
1023 constructors.push_back(
new G4EmStandardPhysicsGS());
1029#if G4VERSION_NUMBER > 1020
1034 constructors.push_back(
new G4SpinDecayPhysics());
1040#if G4VERSION_NUMBER > 1022
1052 constructors.push_back(
new G4IonPhysicsPHP());
1058#if G4VERSION_NUMBER > 1029
1062#if G4VERSION_NUMBER > 1059
1067 constructors.push_back(
new G4MuonicAtomDecayPhysics());
1073#if G4VERSION_NUMBER > 1039
1082 {constructors.push_back(
new G4EmDNAPhysics_option1());}
1084 {constructors.push_back(
new G4EmDNAPhysics_option2());}
1086 {constructors.push_back(
new G4EmDNAPhysics_option3());}
1088 {constructors.push_back(
new G4EmDNAPhysics_option4());}
1090 {constructors.push_back(
new G4EmDNAPhysics_option5());}
1092 {constructors.push_back(
new G4EmDNAPhysics_option6());}
1094 {constructors.push_back(
new G4EmDNAPhysics_option7());}
1097 {constructors.push_back(
new G4EmDNAPhysics());}
1107 G4GenericBiasingPhysics* biasingPhysics =
new G4GenericBiasingPhysics();
1108 biasingPhysics->PhysicsBiasAllCharged();
1109 RegisterPhysics(biasingPhysics);
1129 constructors.push_back(
new G4HadronPhysicsShieldingLEND());
General exception with possible name of object and message.
static BDSGlobalConstants * Instance()
Access method.
void ConstructAllShortLived()
Construct resonances and quarks - sometimes required explicitly.
void ShieldingLEND()
Physics constructor loader.
void MuonInelastic()
Physics constructor loader.
void Em1()
Physics constructor loader.
void EmLivermorePolarised()
Physics constructor loader.
void Optical()
Physics constructor loader.
void HadronicElasticHP()
Physics constructor loader.
void Em2()
Physics constructor loader.
void IonBinary()
Physics constructor loader.
void ConstructAllIons()
Construct ions.
void HadronicElasticXS()
Physics constructor loader.
void IonINCLXX()
Physics constructor loader.
void ParsePhysicsList(const G4String &physListName)
Interpret the string of physics lists given from the user through the parser.
void Em3()
Physics constructor loader.
void Stopping()
Physics constructor loader.
virtual void ConstructParticle()
void LaserWire()
Physics constructor loader.
void EmLowEP()
Physics constructor loader.
void EmWVI()
Physics constructor loader.
BDSGlobalConstants * globals
Keep a local reference to global constants to avoid getting it all the time.
G4bool usingIons
Flag telling whether ions are being used either in physics list or in beam particle.
void CheckIncompatiblePhysics(const G4String &singlePhysicsIn) const
void Ion()
Physics constructor loader.
void Cherenkov()
Physics constructor loader.
void ChargeExchange()
Physics constructor loader.
std::map< G4String, std::vector< G4String > > incompatible
Map of incompatible physics lists by our name for each individual list.
void DecayMuonicAtom()
Physics constructor loader.
void DecayRadioactive()
Physics constructor loader.
void DNA()
Physics constructor loader.
void HadronicElasticH()
Physics constructor loader.
G4String temporaryName
Temporary string used to pass name to constructor functions.
void IonEMDissociation()
Physics constructor loader.
std::map< G4String, G4bool > physicsActivated
void Em4()
Physics constructor loader.
void EmExtra()
Physics constructor loader.
void HadronicElasticLEND()
Physics constructor loader.
void Radioactivation()
Physics constructor loader.
void QGSPBICHP()
Physics constructor loader.
void IonElastic()
Physics constructor loader.
void Muon()
Physics constructor loader.
void NeutronTrackingCut()
Physics constructor loader.
void ConstructAllBaryons()
Construct baryons.
void QGSPBERTHP()
Physics constructor loader.
void IonPHP()
Physics constructor loader.
void Decay()
Physics constructor loader.
void EmSS()
Physics constructor loader.
void FTFPBERT()
Physics constructor loader.
void AnnihiToMuMu()
Physics constructor loader.
void QGSPBIC()
Physics constructor loader.
void GammaToMuMu()
Physics constructor loader.
void CutsAndLimits()
Physics constructor loader.
void Em()
Physics constructor loader.
void EmPenelope()
Physics constructor loader.
void HadronicElastic()
Physics constructor loader.
G4bool emWillBeUsed
Flag as to whether em will be used - avoids duplicate processes being registered.
void HadronicElasticD()
Physics constructor loader.
void DecaySpin()
Physics constructor loader.
void FTFPBERTHP()
Physics constructor loader.
void EmLivermore()
Physics constructor loader.
void ConstructAllLeptons()
void IonElasticQMD()
Physics constructor loader.
virtual void ConstructProcess()
std::map< std::string, Constructor > physicsConstructors
A map of physics list names to their constructors.
std::vector< G4String > physicsLists
void Channelling()
Physics constructor loader.
void QGSPBERT()
Physics constructor loader.
void Shielding()
Physics constructor loader.
void EmGS()
Physics constructor loader.
void ConstructAllMesons()
Construct mesons.
void Print()
Print out which physics lists are activated.
std::map< G4String, G4String > aliasToOriginal
Map of possible aliases for a given physics list.
void SynchRad()
Physics constructor loader.
High energy muon processes.
Channelling physics process.
Cherenkov physics process constructor.
Physics processes required for user tracking limits.
Electromagnetic dissociation for high energy ions.
High energy muon processes.
Constructor for BDSLaserCompton process.
Only nuclear interactions for mu+-.
High energy muon processes.
Radioactivation processes.
A physics constructor that only constructs Synchrotron Radiation.
G4bool StrContains(const G4String &str, const G4String &test)
Utility function to simplify lots of syntax changes for pedantic g4 changes.
G4String LowerCase(const G4String &str)
Utility function to simplify lots of syntax changes for pedantic g4 changes.
void CheckHighPrecisionDataExists(const G4String &physicsListName)
void CheckLowEnergyNeutronDataExists(const G4String &phhysicsListName)
void ConstructMinimumParticleSet()