Belle II Software development
|
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. | |
void | setProfileModuleName (const std::string &name) |
Set the name of the module we want to profile. | |
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. | |
Protected Member Functions | |
void | processInitialize (const ModulePtrList &modulePathList, bool setEventInfo=true) |
Initializes the modules. | |
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. | |
bool | processEvent (PathIterator moduleIter, bool skipMasterModule) |
Calls event() functions on all modules for the current event. | |
void | callEvent (Module *module) |
Calls event() on one single module, setting up logging and statistics as needed. | |
void | processTerminate (const ModulePtrList &modulePathList) |
Terminates the modules. | |
void | processBeginRun (bool skipDB=false) |
Calls the begin run methods of all modules. | |
void | processEndRun () |
Calls the end run methods of all modules. | |
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. | |
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. | |
bool | m_steerRootInputModuleOn = false |
True if the SteerRootInputModule is in charge for event processing. | |
provides the core event processing loop.
Definition at line 29 of file EventProcessor.h.
EventProcessor | ( | ) |
Constructor.
Definition at line 85 of file EventProcessor.cc.
|
protected |
Calls event() on one single module, setting up logging and statistics as needed.
module | Module to call the event() function |
Definition at line 226 of file EventProcessor.cc.
|
protected |
Calculate the maximum event number out of the argument from command line and the environment.
Definition at line 113 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 312 of file EventProcessor.cc.
|
static |
Install a signal handler 'fn' for given signal.
Definition at line 297 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 467 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 406 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 501 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 321 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 242 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 440 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.
|
static |
async-safe method to write something to STDERR.
Definition at line 72 of file EventProcessor.cc.
|
protected |
EventMetaData is used by processEvent()/processCore().
Definition at line 163 of file EventProcessor.h.
|
protected |
Are we currently in a run? If yes, processEndRun() needs to do something.
Definition at line 172 of file EventProcessor.h.
|
protected |
Time in seconds of last call for metadata update in event loop.
Definition at line 175 of file EventProcessor.h.
|
protected |
The master module that determines the experiment/run/event number.
Definition at line 153 of file EventProcessor.h.
|
protected |
Minimal time difference in seconds for metadata updates in event loop.
Definition at line 178 of file EventProcessor.h.
|
protected |
List of all modules in order initialized.
Definition at line 154 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.
|
protected |
Also used in a number of places.
Definition at line 169 of file EventProcessor.h.
|
protected |
Adress of the module which we want to profile, nullptr if no profiling is requested.
Definition at line 160 of file EventProcessor.h.
|
protected |
Name of the module which should be profiled, empty if no profiling is requested.
Definition at line 157 of file EventProcessor.h.
|
protected |
True if the SteerRootInputModule is in charge for event processing.
Definition at line 181 of file EventProcessor.h.