LDMX Software
StackingAction.cxx
1#include "SimCore/G4User/StackingAction.h"
2
3namespace simcore {
4namespace g4user {
5
6G4ClassificationOfNewTrack StackingAction::ClassifyNewTrack(
7 const G4Track* track) {
8 // Default value of a track is fUrgent.
9 G4ClassificationOfNewTrack current_track_class =
10 G4ClassificationOfNewTrack::fUrgent;
11
12 // Get proposed new track classification from this plugin.
13 for (auto& stacking_action : stacking_actions_) {
14 // Get proposed new track classification from this plugin.
15 G4ClassificationOfNewTrack new_track_class =
16 stacking_action->ClassifyNewTrack(track, current_track_class);
17
18 // Only set the current classification if the plugin changed it.
19 if (new_track_class != current_track_class)
20 current_track_class = new_track_class;
21 }
22
23 return current_track_class;
24}
25
27 for (auto& stacking_action : stacking_actions_) stacking_action->NewStage();
28}
29
31 for (auto& stacking_action : stacking_actions_)
32 stacking_action->PrepareNewEvent();
33}
34
35} // namespace g4user
36} // namespace simcore
void PrepareNewEvent() override
Invoked for a new event.
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track *track) override
Classify a new track.
std::vector< std::shared_ptr< UserAction > > stacking_actions_
Collection of user stacking actions.
void NewStage() override
Invoked when there is a new stacking stage.
This namespace is meant to contain all the standard user actions that allow a Geant4 user to interfac...
Dynamically loadable photonuclear models either from SimCore or external libraries implementing this ...