|  | Belle II Software
    light-2205-abys
    | 
provides the core event processing loop. More...
#include <EventProcessor.h>


| Classes | |
| class | StoppedBySignalException | 
| Exception thrown when execution is stopped by a signal.  More... | |
| Public Member Functions | |
| EventProcessor () | |
| Constructor. | |
| virtual | ~EventProcessor () | 
| Destructor. | |
| void | process (const PathPtr &startPath, long maxEvent=0) | 
| Processes the full module chain, starting with the first module in the given path.  More... | |
| void | setProfileModuleName (const std::string &name) | 
| Set the name of the module we want to profile.  More... | |
| Static Public Member Functions | |
| static void | writeToStdErr (const char msg[]) | 
| async-safe method to write something to STDERR. | |
| static void | installSignalHandler (int sig, void(*fn)(int)) | 
| Install a signal handler 'fn' for given signal. | |
| static void | installMainSignalHandlers (void(*fn)(int)=nullptr) | 
| Install signal handler for INT, TERM and QUIT signals.  More... | |
| Protected Member Functions | |
| void | processInitialize (const ModulePtrList &modulePathList, bool setEventInfo=true) | 
| Initializes the modules.  More... | |
| void | processCore (const PathPtr &startPath, const ModulePtrList &modulePathList, long maxEvent=0, bool isInputProcess=true) | 
| Processes the full module chain consisting of an arbitrary number of connected paths, starting with the first module in the specified path.  More... | |
| bool | processEvent (PathIterator moduleIter, bool skipMasterModule) | 
| Calls event() functions on all modules for the current event.  More... | |
| void | callEvent (Module *module) | 
| Calls event() on one single module, setting up logging and statistics as needed.  More... | |
| void | processTerminate (const ModulePtrList &modulePathList) | 
| Terminates the modules.  More... | |
| void | processBeginRun (bool skipDB=false) | 
| Calls the begin run methods of all modules.  More... | |
| void | processEndRun () | 
| Calls the end run methods of all modules.  More... | |
| long | getMaximumEventNumber (long maxEvent) const | 
| Calculate the maximum event number out of the argument from command line and the environment. | |
| Protected Attributes | |
| const Module * | m_master | 
| The master module that determines the experiment/run/event number. | |
| ModulePtrList | m_moduleList | 
| List of all modules in order initialized. | |
| std::string | m_profileModuleName | 
| Name of the module which should be profiled, empty if no profiling is requested. | |
| Module * | m_profileModule = nullptr | 
| Adress of the module which we want to profile, nullptr if no profiling is requested. | |
| StoreObjPtr< EventMetaData > | m_eventMetaDataPtr | 
| EventMetaData is used by processEvent()/processCore(). | |
| EventMetaData | m_previousEventMetaData | 
| Stores state of EventMetaData before it was last changed.  More... | |
| StoreObjPtr< ProcessStatistics > | m_processStatisticsPtr | 
| Also used in a number of places. | |
| bool | m_inRun | 
| Are we currently in a run? If yes, processEndRun() needs to do something. | |
| double | m_lastMetadataUpdate | 
| Time in seconds of last call for metadata update in event loop. | |
| double | m_metadataUpdateInterval | 
| Minimal time difference in seconds for metadata updates in event loop. | |
provides the core event processing loop.
Definition at line 29 of file EventProcessor.h.
| 
 | protected | 
Calls event() on one single module, setting up logging and statistics as needed.
| module | Module to call the event() function | 
Definition at line 214 of file EventProcessor.cc.
| 
 | static | 
Install signal handler for INT, TERM and QUIT signals.
If argument is NULL, EventProcessor's own signal handler will be installed.
Definition at line 300 of file EventProcessor.cc.
| void process | ( | const PathPtr & | startPath, | 
| long | maxEvent = 0 | ||
| ) | 
Processes the full module chain, starting with the first module in the given path.
Processes all events for the given run number and for events from 0 to maxEvent. If maxEvent is smaller or equal 0 the maximum number check is disabled and all events are processed. If runNumber is smaller than 0, the run number has to be set externally by a module and not the given number is used.
| startPath | The processing starts with the first module of this path. | 
| maxEvent | Optional: The maximum number of events that will be processed. If the number is smaller or equal 0, all events will be processed. | 
Definition at line 123 of file EventProcessor.cc.
| 
 | protected | 
Calls the begin run methods of all modules.
Loops over all module instances specified in a list and calls their beginRun() method. Please note: the beginRun() method of the module which triggered the beginRun() loop will also be called.
Definition at line 455 of file EventProcessor.cc.
| 
 | protected | 
Processes the full module chain consisting of an arbitrary number of connected paths, starting with the first module in the specified path.
| startPath | The processing starts with the first module of this path. | 
| modulePathList | A list of all modules which could be executed during the data processing (used for calling the beginRun() and endRun() method). | 
| maxEvent | The maximum number of events that will be processed. If the number is smaller or equal 0, all events are processed. | 
| isInputProcess | true when this is either the only or the input process | 
Definition at line 394 of file EventProcessor.cc.
| 
 | protected | 
Calls the end run methods of all modules.
Loops over all module instances specified in a list and calls their endRun() method. Please note: the endRun() method of the module which triggered the endRun() loop will also be called.
Definition at line 489 of file EventProcessor.cc.
| 
 | protected | 
Calls event() functions on all modules for the current event.
Used by processCore.
| moduleIter | iterator of the path containing all the modules | 
| skipMasterModule | skip the execution of the master module, presumably because this is the first event and it's already been done in initialize() | 
Definition at line 309 of file EventProcessor.cc.
| 
 | protected | 
Initializes the modules.
Loops over all module instances specified in a list and calls their initialize() method.
| modulePathList | A list of all modules which could be executed during the data processing. | 
| setEventInfo | if true the first event call of the master module will be called immidiately to load the event info right away so that it's available for subsequent modules | 
Definition at line 230 of file EventProcessor.cc.
| 
 | protected | 
Terminates the modules.
Loops over all module instances in reverse order specified in a list and calls their terminate() method.
| modulePathList | A list of all modules which could be executed during the data processing. | 
Definition at line 428 of file EventProcessor.cc.
| 
 | inline | 
Set the name of the module we want to profile.
| name | Name of the module as returned by getName() | 
Definition at line 57 of file EventProcessor.h.
| 
 | protected | 
Stores state of EventMetaData before it was last changed.
Useful since processEndRun() needs info about which run it needs to end.
Definition at line 166 of file EventProcessor.h.