20#include "BDSPhysicsCutsAndLimits.hh"
21#include "BDSProcessUserSpecialCutsPDG.hh"
25#include "G4Electron.hh"
26#include "G4Positron.hh"
28#include "G4StepLimiter.hh"
30#include "G4UserSpecialCuts.hh"
31#include "G4Version.hh"
35BDSPhysicsCutsAndLimits::BDSPhysicsCutsAndLimits(
const std::set<G4int>& pdgsToExcludeFromCuts):
36 G4VPhysicsConstructor(
"BDSPhysicsCutsAndLimits"),
37 useParticleExclusionFromCuts(!pdgsToExcludeFromCuts.empty())
39 stepLimiter =
new G4StepLimiter();
40 specialCuts =
new G4UserSpecialCuts();
42 if (useParticleExclusionFromCuts)
44 G4cout << __METHOD_NAME__ <<
"Excluding the following particle IDs from minimumKineticEnergy, minimumRange, maximumTrackLength cuts\n{ ";
45 for (
const auto& pdgID : pdgsToExcludeFromCuts)
46 {G4cout << pdgID <<
" ";}
47 G4cout <<
"}" << G4endl;
51BDSPhysicsCutsAndLimits::~BDSPhysicsCutsAndLimits()
55 delete bdsSpecialCuts;
61 G4Electron::Electron();
62 G4Positron::Positron();
71 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
73 auto cutsProcess = useParticleExclusionFromCuts ? bdsSpecialCuts :
specialCuts;
75#if G4VERSION_NUMBER > 1029
76 auto aParticleIterator = GetParticleIterator();
78 aParticleIterator->reset();
79 while( (*aParticleIterator)())
81 G4ParticleDefinition* particle = aParticleIterator->value();
85 if((particle->GetParticleName()==
"gamma")||
86 (particle->GetParticleName()==
"e-")||
87 (particle->GetParticleName()==
"e+")||
88 (particle->GetParticleName()==
"proton"))
89 {particle->SetApplyCutsFlag(
true);}
93 ph->RegisterProcess(cutsProcess, particle);
G4StepLimiter * stepLimiter
Step limit process for MaxAllowedStep.
G4UserSpecialCuts * specialCuts
Process for all other limits.
virtual void ConstructProcess()
Construct and attach step limiter and cuts processes.
virtual void ConstructParticle()
Construct gamma, e+- and proton - the minimum this sets limits for.
Apply regular cuts but not to a specified set of PDG IDs.
G4bool Activated() const
Get whether this instance has been activated.
void SetActivated()
Flag this instance as activated for later querying.