5#ifndef ATHENAMP_ATHMPEVTLOOPMGR_H
6#define ATHENAMP_ATHMPEVTLOOPMGR_H
8#include "GaudiKernel/IEventProcessor.h"
10#include "GaudiKernel/ToolHandle.h"
21 AthenaInterprocess::IMPRunStop>
33 virtual StatusCode
finalize()
override;
35 virtual StatusCode
nextEvent(
int maxevt)
override;
36 virtual StatusCode
executeEvent(EventContext &&ctx)
override;
37 virtual StatusCode
executeRun(
int maxevt)
override;
38 virtual StatusCode
stopRun()
override;
50 "Number of AthenaMP worker processes"};
52 Gaudi::Property<std::string>
m_workerTopDir{
this,
"WorkerTopDir",
"athenaMP_workers",
53 "Sub-directory of the main run directory that contains run directories of all workers"};
56 "ASCII file in the main run directory that lists outputs of all workers. Used by Job Transform"};
58 Gaudi::Property<std::string>
m_strategy{
this,
"Strategy",
"",
59 "Event processing strategy used by AthenaMP workers. E.g, Shared Queue, Round Robin"};
61 Gaudi::Property<bool>
m_isPileup{
this,
"IsPileup",
false,
62 "Is AthenaMP running a PileUp Digitization job?"};
65 "Copy all workers' logs into the main log file at the end of the job?"};
67 ToolHandleArray<IAthenaMPTool>
m_tools{
this,
"Tools", {}};
70 "Interval in milliseconds between checks of sub-processes statuses"};
73 "Interval in seconds between taking memory usage samples. 0 - no sampling"};
76 "Number of events to be processed by the main process before forking the workers. 0 - fork after BeginRun incident"};
79 "The value to be forwarded to the EventPrintoutInterval property of the AthenaEventLoopMgr"};
82 "The value to be forwarded to the ExecAtPreFork property of the AthenaEventLoopMgr"};
96 std::shared_ptr<AthenaInterprocess::FdsRegistry>
extractFds();
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
virtual StatusCode stopRun() override
std::vector< unsigned long > m_samplesSize
Gaudi::Property< int > m_nPollingInterval
virtual EventContext createEventContext() override
SmartIF< IDataShare > m_dataShare
AthMpEvtLoopMgr(const std::string &name, ISvcLocator *svcLocator)
virtual StatusCode finalize() override
virtual bool stopScheduled() const override
virtual StatusCode executeEvent(EventContext &&ctx) override
StringArrayProperty m_execAtPreFork
virtual StatusCode nextEvent(int maxevt) override
ToolHandleArray< IAthenaMPTool > m_tools
Gaudi::Property< int > m_nWorkers
Gaudi::Property< std::string > m_workerTopDir
StatusCode updateSkipEvents(int skipEvents)
Gaudi::Property< bool > m_collectSubprocessLogs
Gaudi::Property< unsigned int > m_eventPrintoutInterval
std::shared_ptr< AthenaInterprocess::FdsRegistry > extractFds()
Gaudi::Property< int > m_nEventsBeforeFork
Gaudi::Property< bool > m_isPileup
virtual ~AthMpEvtLoopMgr()=default
std::vector< unsigned long > m_samplesRss
virtual StatusCode executeRun(int maxevt) override
Gaudi::Property< std::string > m_strategy
AthMpEvtLoopMgr(const AthMpEvtLoopMgr &)=delete
ServiceHandle< IEventProcessor > m_evtProcessor
StatusCode generateOutputReport()
Gaudi::Property< std::string > m_outputReportName
std::vector< unsigned long > m_samplesSwap
std::vector< unsigned long > m_samplesPss
Gaudi::Property< int > m_nMemSamplingInterval
SmartIF< IService > m_evtSelector