19#include "BDSPhysicsCutsAndLimits.hh"
20#include "BDSProcessUserSpecialCutsPDG.hh"
24#include "G4Electron.hh"
25#include "G4Positron.hh"
27#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 std::set<G4String> rangeApplicableParticles = {
"gamma",
"e-",
"e+",
"proton"};
86 if (rangeApplicableParticles.count(particle->GetParticleName()) == 1)
87 {particle->SetApplyCutsFlag(
true);}
91 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.