10 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
11 if ((*it)->hasRunAction()) {
18 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
19 if ((*it)->hasRunAction()) {
26 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
27 if ((*it)->hasSteppingAction()) {
28 (*it)->stepping(step);
34 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
35 if ((*it)->hasTrackingAction()) {
36 (*it)->preTracking(track);
42 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
43 if ((*it)->hasTrackingAction()) {
44 (*it)->postTracking(track);
50 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
51 if ((*it)->hasEventAction()) {
52 (*it)->beginEvent(event);
58 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
59 if ((*it)->hasEventAction()) {
60 (*it)->endEvent(event);
66 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
67 if ((*it)->hasPrimaryGeneratorAction()) {
68 (*it)->generatePrimary(event);
76 G4ClassificationOfNewTrack currentTrackClass = G4ClassificationOfNewTrack::fUrgent;
78 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
79 if ((*it)->hasStackingAction()) {
82 G4ClassificationOfNewTrack newTrackClass = (*it)->stackingClassifyNewTrack(track, currentTrackClass);
85 if (newTrackClass != currentTrackClass) {
88 currentTrackClass = newTrackClass;
94 return currentTrackClass;
98 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
99 if ((*it)->hasEventAction()) {
100 (*it)->stackingNewStage();
106 for (PluginVec::iterator it =
plugins_.begin(); it !=
plugins_.end(); it++) {
107 if ((*it)->hasStackingAction()) {
108 (*it)->stackingPrepareNewEvent();
115 for (PluginVec::iterator iPlugin =
plugins_.begin(); iPlugin !=
plugins_.end(); iPlugin++) {
116 if ((*iPlugin)->getName() == pluginName) {
117 foundPlugin = *iPlugin;
129 std::cerr <<
"[ PluginManager ] - Plugin " << pluginName <<
" already exists." <<
std::endl;
130 throw new std::runtime_error(
"Plugin already loaded.");
136 if (plugin !=
nullptr) {
142 if (plugin !=
nullptr) {
149 for (PluginVec::iterator iPlugin =
plugins_.begin(); iPlugin !=
plugins_.end(); iPlugin++) {
150 os << (*iPlugin)->getName() <<
std::endl;
160 std::vector<UserActionPlugin*>::iterator pos = std::find(
plugins_.begin(),
plugins_.end(), plugin);
167 for (
unsigned iPlugin = 0; iPlugin <
plugins_.size(); iPlugin++) {
UserActionPlugin * create(std::string pluginName, std::string libName)
void destroy(UserActionPlugin *plugin)
std::ostream & print(std::ostream &os)
void destroy(const std::string &pluginName)
G4ClassificationOfNewTrack stackingClassifyNewTrack(const G4Track *aTrack)
Return a track classification from the user plugins that have stacking actions. Activate the track cl...
void registerPlugin(UserActionPlugin *plugin)
void create(const std::string &pluginName, const std::string &libName)
PluginLoader pluginLoader_
void generatePrimary(G4Event *anEvent)
void beginEvent(const G4Event *anEvent)
void endEvent(const G4Event *anEvent)
void endRun(const G4Run *aRun)
void deregisterPlugin(UserActionPlugin *plugin)
void stepping(const G4Step *aStep)
void preTracking(const G4Track *aTrack)
void stackingPrepareNewEvent()
UserActionPlugin * findPlugin(const std::string &pluginName)
void postTracking(const G4Track *aTrack)
void beginRun(const G4Run *aRun)