16#ifndef _RMG_STAGING_SCHEME_HH_
17#define _RMG_STAGING_SCHEME_HH_
25#include "G4GenericMessenger.hh"
27#include "RMGVOutputScheme.hh"
32class RMGStagingScheme :
public RMGVOutputScheme {
59 fElectronMaxEnergyThresholdForStacking = energy;
69 fElectronMinEnergyThresholdForStacking = energy;
74 std::unique_ptr<G4GenericMessenger> fElectronStagingMessengers;
75 std::unique_ptr<G4GenericMessenger> fOpticalPhotonStagingMessengers;
78 void DefineCommands();
80 std::optional<G4ClassificationOfNewTrack> Classify_OpticalPhoton(
const G4Track* aTrack)
const;
81 std::optional<G4ClassificationOfNewTrack> Classify_ElectronLike(
const G4Track* aTrack)
const;
83 bool fDeferOpticalPhotonsToWaitingStage =
false;
85 bool fDeferElectronsToWaitingStage =
false;
86 bool fDeferPositronsToWaitingStage =
false;
87 double fElectronMaxEnergyThresholdForStacking = -1;
88 double fElectronMinEnergyThresholdForStacking = -1;
89 bool fSuspendElectronsOnEnergyDrop =
false;
90 double fElectronVolumeSafety = 0;
92 std::set<std::string> fElectronVolumeNames;
void SetElectronMaxEnergyThresholdForStacking(double energy)
Set the maximum kinetic energy for e- tracks to be considered for staging.
Definition RMGStagingScheme.hh:58
void SetElectronVolumeSafety(double safety)
Set the minimum distance to a Germanium detector surface for an electron to be staged.
Definition RMGStagingScheme.hh:49
void SetElectronMinEnergyThresholdForStacking(double energy)
Set the minimum kinetic energy for e- tracks to be considered for staging.
Definition RMGStagingScheme.hh:68
std::optional< G4ClassificationOfNewTrack > StackingActionClassify(const G4Track *, int) override
Wraps G4UserStackingAction::StackingActionClassify.
Definition RMGStagingScheme.cc:27
void SteppingAction(const G4Step *) override
Evaluate optional stepping-time suspension criteria for configured particles.
Definition RMGStagingScheme.cc:46
void AddElectronVolumeName(std::string volume)
Add a volume name in which electron staging is active.
Definition RMGStagingScheme.hh:52