40 G4VModularPhysicsList::AddTransportation();
50 G4ParallelWorldScoringProcess* LArVoxelParallelWorldScoringProcess =
51 new G4ParallelWorldScoringProcess(
"LArVoxelReadoutScoringProcess");
53 G4ParallelWorldScoringProcess* OpDetParallelWorldScoringProcess =
54 new G4ParallelWorldScoringProcess(
"OpDetReadoutScoringProcess");
58 LArVoxelParallelWorldScoringProcess->SetParallelWorld(
"LArVoxelReadoutGeometry");
59 OpDetParallelWorldScoringProcess->SetParallelWorld(
"OpDetReadoutGeometry");
65 static G4ParticleTable* fParticleTable = G4ParticleTable::GetParticleTable();
66 G4ParticleTable::G4PTblDicIterator* theParticleIterator;
67 theParticleIterator = fParticleTable->GetIterator();
68 theParticleIterator->reset();
69 while ((*theParticleIterator)()) {
70 G4ParticleDefinition* particle = theParticleIterator->value();
72 if (particle->GetParticleType() ==
"opticalphoton") {
73 G4ProcessManager* pmanager = particle->GetProcessManager();
74 pmanager->AddProcess(OpDetParallelWorldScoringProcess);
75 pmanager->SetProcessOrderingToLast(OpDetParallelWorldScoringProcess, idxAtRest);
76 pmanager->SetProcessOrdering(OpDetParallelWorldScoringProcess, idxAlongStep, 1);
77 pmanager->SetProcessOrderingToLast(OpDetParallelWorldScoringProcess, idxPostStep);
82 else if (particle->GetPDGCharge() != 0 && !particle->IsShortLived()) {
83 G4ProcessManager* pmanager = particle->GetProcessManager();
84 if (!DisableWireplanes) {
85 pmanager->AddProcess(LArVoxelParallelWorldScoringProcess);
86 pmanager->SetProcessOrderingToLast(LArVoxelParallelWorldScoringProcess, idxAtRest);
87 pmanager->SetProcessOrdering(LArVoxelParallelWorldScoringProcess, idxAlongStep, 1);
88 pmanager->SetProcessOrderingToLast(LArVoxelParallelWorldScoringProcess, idxPostStep);
92 G4bool genSecondaries(
false);
94 if (((particle->GetParticleName() == G4MuonPlus::MuonPlus()->GetParticleName() ||
95 particle->GetParticleName() == G4MuonMinus::MuonMinus()->GetParticleName()) &&
97 ((particle->GetParticleName() == G4Proton::Proton()->GetParticleName() ||
98 particle->GetParticleName() == G4Neutron::Neutron()->GetParticleName() ||
99 particle->GetParticleName() == G4KaonZeroShort::KaonZeroShort()->GetParticleName() ||
100 particle->GetParticleName() == G4KaonZeroLong::KaonZeroLong()->GetParticleName() ||
101 particle->GetParticleName() == G4Lambda::Lambda()->GetParticleName()) &&
105 it != EnabledPhysics.end();
108 if (!PhysicsName.compare(
"SynchrotronAndGN") && lgp->
K0Bias()) {
109 genSecondaries =
true;
111 if (!PhysicsName.compare(
"ChargeExchange")) { cE =
true; }
115 if (genSecondaries) {
116 G4int nSecondaries(lgp->
K0Bias());
120 <<
"Turning on WrappedMuNuclear for " << particle->GetParticleName() <<
"s with " 121 << nSecondaries <<
" appropriately weighted secondaries." 122 <<
" XSBias is set to " << xSBias
123 <<
" and the cross-section is increased by a factor of " << fXSBias <<
".";
124 G4MuonNuclearProcess* g4MNI =
new G4MuonNuclearProcess();
125 MuNuclearSplittingProcessXSecBias* munuclSplitting =
126 new MuNuclearSplittingProcessXSecBias();
129 munuclSplitting->SetNSplit(nSecondaries, xSBias, fXSBias);
130 munuclSplitting->SetIsActive(active);
131 munuclSplitting->RegisterProcess(g4MNI);
134 if (xSBias && (fXSBias > 1))
135 pmanager->AddProcess(munuclSplitting, -1, 1, 1);
137 pmanager->AddProcess(munuclSplitting, -1, -1, 1);
142 <<
"Turning on ChargeExchange for " << particle->GetParticleName() <<
"s.";
143 G4ChargeExchange*
model =
new G4ChargeExchange();
144 G4ChargeExchangeProcess*
p =
new G4ChargeExchangeProcess();
146 p->RegisterMe(model);
147 pmanager->AddDiscreteProcess(p);
165 (*itr)->ConstructProcess();
const std::vector< std::string > & EnabledPhysics() const
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
bool UseCustomPhysics() const
#define G4MT_physicsVector
bool DisableWireplanes() const