 |
ATLAS Offline Software
|
#include <SharedEvtQueueConsumer.h>
|
Gaudi::Property< bool > | m_useSharedReader {this, "UseSharedReader", false, "Work in pair with a SharedReader"} |
|
Gaudi::Property< bool > | m_useSharedWriter {this, "UseSharedWriter", false, "Work in pair with a SharedWriter"} |
|
Gaudi::Property< bool > | m_isRoundRobin {this, "IsRoundRobin", false, "Are we running in the 'reproducible mode'?"} |
|
Gaudi::Property< bool > | m_debug {this, "Debug", false} |
|
Gaudi::Property< bool > | m_readEventOrders {this, "ReadEventOrders", false} |
|
Gaudi::Property< int > | m_nEventsBeforeFork {this, "EventsBeforeFork", 0} |
|
Gaudi::Property< std::string > | m_eventOrdersFile {this, "EventOrdersFile", "athenamp_eventorders.txt"} |
|
int | m_rankId {-1} |
|
int | m_nSkipEvents {0} |
|
ServiceHandle< IChronoStatSvc > | m_chronoStatSvc |
|
SmartIF< IEventSeek > | m_evtSeek |
|
SmartIF< IEvtSelectorSeek > | m_evtSelSeek |
|
IEvtSelector::Context * | m_evtContext {nullptr} |
|
SmartIF< IEventShare > | m_evtShare |
|
SmartIF< IDataShare > | m_dataShare |
|
AthenaInterprocess::SharedQueue * | m_sharedEventQueue {nullptr} |
|
std::unique_ptr< AthenaInterprocess::SharedQueue > | m_sharedRankQueue |
|
std::map< pid_t, std::pair< int, TimeValType > > | m_eventStat |
|
std::queue< pid_t > | m_finQueue |
|
std::vector< int > | m_eventOrders |
|
pid_t | m_masterPid |
|
Definition at line 23 of file SharedEvtQueueConsumer.h.
◆ TimeValType
◆ ESRange_Status
Enumerator |
---|
ESRANGE_SUCCESS | |
ESRANGE_NOTFOUND | |
ESRANGE_SEEKFAILED | |
ESRANGE_PROCFAILED | |
ESRANGE_FILENOTMADE | |
ESRANGE_BADINPFILE | |
Definition at line 58 of file AthenaMPToolBase.h.
◆ Func_Flag
◆ SharedEvtQueueConsumer()
SharedEvtQueueConsumer::SharedEvtQueueConsumer |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~SharedEvtQueueConsumer()
SharedEvtQueueConsumer::~SharedEvtQueueConsumer |
( |
| ) |
|
|
overridevirtual |
◆ ATLAS_NOT_THREAD_SAFE() [1/5]
virtual StatusCode exec SharedEvtQueueConsumer::ATLAS_NOT_THREAD_SAFE |
( |
| ) |
|
|
overridevirtual |
◆ ATLAS_NOT_THREAD_SAFE() [2/5]
◆ ATLAS_NOT_THREAD_SAFE() [3/5]
int mapAsyncFlag AthenaMPToolBase::ATLAS_NOT_THREAD_SAFE |
( |
Func_Flag |
flag, |
|
|
pid_t |
pid = 0 |
|
) |
| |
|
protectedinherited |
◆ ATLAS_NOT_THREAD_SAFE() [4/5]
virtual int makePool SharedEvtQueueConsumer::ATLAS_NOT_THREAD_SAFE |
( |
int |
maxevt, |
|
|
int |
nprocs, |
|
|
const std::string & |
topdir |
|
) |
| |
|
overridevirtual |
◆ ATLAS_NOT_THREAD_SAFE() [5/5]
virtual StatusCode wait_once SharedEvtQueueConsumer::ATLAS_NOT_THREAD_SAFE |
( |
pid_t & |
pid | ) |
|
|
overridevirtual |
◆ bootstrap_func() [1/2]
Definition at line 254 of file SharedEvtQueueConsumer.cxx.
260 *(
int*)(outwork->data) = 1;
261 outwork->size =
sizeof(
int);
265 std::map<IService*,int> bkgEvtSelectors;
268 for(IService* ptrSvc : serviceLocator()->getServices()) {
269 IEvtSelector* evtsel =
dynamic_cast<IEvtSelector*
>(ptrSvc);
277 ATH_MSG_ERROR(
"Failed to cast IEvtSelector* onto IEvtSelectorSeek* for " << (ptrSvc)->
name());
282 bkgEvtSelectors.emplace(ptrSvc,0);
295 SmartIF<IIncidentSvc> p_incidentSvc(serviceLocator()->service(
"IncidentSvc"));
300 p_incidentSvc->fireIncident(Incident(
name(),
"PostFork"));
309 std::ostringstream workindex;
317 if(
mkdir(worker_rundir.string().c_str(),S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)==-1) {
318 ATH_MSG_ERROR(
"Unable to make worker run directory: " << worker_rundir.string() <<
". " <<
fmterror(errno));
327 ATH_MSG_INFO(
"Logs redirected in the AthenaMP event worker PID=" << getpid());
334 ATH_MSG_INFO(
"Io registry updated in the AthenaMP event worker PID=" << getpid());
338 if(std::filesystem::is_regular_file(
"SimParams.db"))
339 COPY_FILE_HACK(
"SimParams.db", abs_worker_rundir.string()+
"/SimParams.db");
340 if(std::filesystem::is_regular_file(
"DigitParams.db"))
341 COPY_FILE_HACK(
"DigitParams.db", abs_worker_rundir.string()+
"/DigitParams.db");
342 if(std::filesystem::is_regular_file(
"PDGTABLE.MeV"))
343 COPY_FILE_HACK(
"PDGTABLE.MeV", abs_worker_rundir.string()+
"/PDGTABLE.MeV");
353 ATH_MSG_INFO(
"File descriptors re-opened in the AthenaMP event worker PID=" << getpid());
363 if (!propertyServer || propertyServer->setProperty(
"MakeStreamingToolClient",
m_rankId + 1).isFailure()) {
364 ATH_MSG_ERROR(
"Could not change AthenaPoolSharedIOCnvSvc MakeClient Property");
368 ATH_MSG_DEBUG(
"Successfully made the conversion service a share client");
378 ATH_CHECK( propertyServer.isValid(), outwork);
381 if(propertyServer->getProperty(&skipEventsProp).isFailure()) {
382 ATH_MSG_INFO(
"Event Selector does not have SkipEvents property");
390 ATH_CHECK( evtSelSvc.isValid(), outwork);
400 ATH_MSG_ERROR(
"Error retrieving Event Selector with IEvtSelectorSeek interface for PileUp job");
411 for(
auto [evtsel,curEvt] : bkgEvtSelectors) {
412 if(evtsel->start().isSuccess()) {
414 SmartIF<IEvtSelectorSeek> evtselseek(evtsel);
416 ATH_MSG_ERROR(
"Failed to seek to " << curEvt <<
" in the BKG Event Selector " << evtsel->name());
422 ATH_MSG_ERROR(
"Failed to restart BKG Event Selector " << evtsel->name());
437 if(
line.empty())
continue;
441 int rank = std::stoi(
line,&
idx);
443 msg(
MSG::INFO) <<
"This worker will proces the following events #";
446 int evtnum = std::stoi(
line,&
idx);
466 if(chdir(worker_rundir.string().c_str())==-1) {
467 ATH_MSG_ERROR(
"Failed to chdir to " << worker_rundir.string());
475 *(
int*)(outwork->data) = 0;
◆ bootstrap_func() [2/2]
◆ evtSelector()
IEvtSelector* AthenaMPToolBase::evtSelector |
( |
| ) |
|
|
inlineprotectedinherited |
◆ exec_func()
Implements AthenaMPToolBase.
Definition at line 479 of file SharedEvtQueueConsumer.cxx.
481 ATH_MSG_INFO(
"Exec function in the AthenaMP worker PID=" << getpid());
485 long intmask =
pow(0x100,
sizeof(
int))-1;
487 int nEventsProcessed(0);
488 long evtnumAndChunk(0);
490 unsigned evtCounter(0);
491 int evtnum(0), chunkSize(1);
501 System::ProcessTime time_start = System::getProcessTime();
505 bool firstOrder(
true);
517 evtnum = *predefinedEvt;
519 fs << (firstOrder?
":":
",") << evtnum;
522 ATH_MSG_INFO(
"Read event number from the orders file: " << evtnum);
531 if(evtnumAndChunk<=0) {
532 evtnumAndChunk *= -1;
533 ATH_MSG_DEBUG(
"No more events are expected. The total number of events for this job = " << evtnumAndChunk);
536 ATH_MSG_DEBUG(
"Received value from the queue 0x" << std::hex << evtnumAndChunk << std::dec);
537 chunkSize = evtnumAndChunk >> (
sizeof(
int)*8);
538 evtnum = evtnumAndChunk & intmask;
539 ATH_MSG_INFO(
"Received from the queue: event num=" << evtnum <<
" chunk size=" << chunkSize);
542 for(
int i(0);
i<chunkSize;++
i) {
543 fs << (firstOrder?
":":
",") << evtnum+
i;
582 nEventsProcessed += chunkSize;
588 ATH_MSG_ERROR(
"Unable to process the chunk (" << evtnum <<
"," << evtnum+chunkSize-1 <<
")");
601 System::ProcessTime time_delta = System::getProcessTime() - time_start;
602 TimeValType elapsedTime = time_delta.elapsedTime<System::Sec>();
628 *(
int*)(
outdata) = (all_ok?0:1);
630 memcpy((
char*)
outdata+
sizeof(
int),&func,
sizeof(func));
631 memcpy((
char*)
outdata+
sizeof(
int)+
sizeof(func),&nEventsProcessed,
sizeof(
int));
632 memcpy((
char*)
outdata+2*
sizeof(
int)+
sizeof(func),&elapsedTime,
sizeof(elapsedTime));
634 outwork->size = outsize;
◆ fin_func()
Implements AthenaMPToolBase.
Definition at line 642 of file SharedEvtQueueConsumer.cxx.
644 ATH_MSG_INFO(
"Fin function in the AthenaMP worker PID=" << getpid());
653 if(
m_appMgr->finalize().isFailure()) {
654 std::cerr <<
"Unable to finalize AppMgr" << std::endl;
664 *(
int*)(
outdata) = (all_ok?0:1);
666 memcpy((
char*)
outdata+
sizeof(
int),&func,
sizeof(func));
668 memcpy((
char*)
outdata+
sizeof(
int)+
sizeof(func),&nEvt,
sizeof(
int));
670 memcpy((
char*)
outdata+2*
sizeof(
int)+
sizeof(func),&elapsed,
sizeof(elapsed));
673 outwork->size = outsize;
◆ finalize()
StatusCode SharedEvtQueueConsumer::finalize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from AthenaMPToolBase.
Definition at line 96 of file SharedEvtQueueConsumer.cxx.
106 srand((
unsigned)
time(0));
107 std::ostringstream randname;
109 std::string ordersFileBak =
m_eventOrdersFile+std::string(
"-bak-")+randname.str();
120 std::ostringstream workerIndex;
124 std::string ordersFileWorker(worker_rundir.string()+std::string(
"/")+
m_eventOrdersFile);
125 ATH_MSG_INFO(
"Processing " << ordersFileWorker <<
" ...");
126 std::fstream fs_worker(ordersFileWorker.c_str(),std::fstream::in);
128 while(fs_worker.good()) {
129 std::getline(fs_worker,
line);
142 return StatusCode::SUCCESS;
◆ fmterror()
std::string AthenaMPToolBase::fmterror |
( |
int |
errnum | ) |
|
|
protectedinherited |
Definition at line 333 of file AthenaMPToolBase.cxx.
336 strerror_r(errnum, buf,
sizeof(buf));
337 return std::string(buf);
◆ generateOutputReport()
Reimplemented in EvtRangeProcessor, EvtRangeScatterer, and SharedWriterTool.
Definition at line 119 of file AthenaMPToolBase.cxx.
124 ATH_MSG_WARNING(
name() <<
" cannot make output report because FileMgr has not been configured to write log file!");
131 std::ostringstream workindex;
144 std::ifstream inpStream(
logFile.string().c_str());
145 std::set<std::string> reportedFiles;
146 while(!inpStream.eof()) {
147 std::getline(inpStream,
line);
148 if(
line.find(
"WRITE")!=std::string::npos) {
151 std::vector<std::string>
entries;
152 while(startpos<
line.size()) {
153 while(
line[startpos]==
' ')
156 size_t endpos =
line.find(
' ',startpos);
157 if(endpos==std::string::npos) endpos =
line.size();
158 entries.push_back(
line.substr(startpos,endpos-startpos));
165 if(reportedFiles.find(
basename.string())==reportedFiles.end())
166 reportedFiles.insert(
basename.string());
171 if(
it1==jobOutputs->end()) {
177 newOutput.
filename = absolutename.string();
181 newOutput.
shared = (
line.find(
"SHARED")!=std::string::npos);
183 (*jobOutputs)[
basename.string()].push_back(newOutput);
◆ handleSavedPfc()
int AthenaMPToolBase::handleSavedPfc |
( |
const std::filesystem::path & |
dest_path | ) |
|
|
protectedinherited |
Definition at line 396 of file AthenaMPToolBase.cxx.
398 if(std::filesystem::is_regular_file(
"PoolFileCatalog.xml.AthenaMP-saved"))
399 COPY_FILE_HACK(
"PoolFileCatalog.xml.AthenaMP-saved",dest_path.string()+
"/PoolFileCatalog.xml");
◆ initialize()
StatusCode SharedEvtQueueConsumer::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from AthenaMPToolBase.
Definition at line 48 of file SharedEvtQueueConsumer.cxx.
59 ATH_MSG_ERROR(
"Unable to dyn-cast PileUpEventLoopMgr to IEventSeek");
60 return StatusCode::FAILURE;
75 return StatusCode::FAILURE;
83 m_dataShare = SmartIF<IDataShare>(serviceLocator()->service(
"AthenaPoolSharedIOCnvSvc"));
86 return StatusCode::FAILURE;
93 return StatusCode::SUCCESS;
◆ killChildren()
void AthenaMPToolBase::killChildren |
( |
| ) |
|
|
overridevirtualinherited |
◆ operator()
virtual std::unique_ptr<ScheduledWork> AthenaInterprocess::IMessageDecoder::operator |
( |
| ) |
const & |
|
pure virtualinherited |
◆ redirectLog()
int AthenaMPToolBase::redirectLog |
( |
const std::string & |
rundir, |
|
|
bool |
addTimeStamp = true |
|
) |
| |
|
protectedinherited |
Definition at line 269 of file AthenaMPToolBase.cxx.
272 int dup2result1(0), dup2result2(0);
274 int newout =
open(std::string(
rundir+
"/AthenaMP.log").c_str(),O_CREAT | O_RDWR, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH);
279 dup2result1 = dup2(newout, STDOUT_FILENO);
280 dup2result2 = dup2(newout, STDERR_FILENO);
281 TEMP_FAILURE_RETRY(close(newout));
282 if(dup2result1==-1) {
286 if(dup2result2==-1) {
292 SmartIF<IProperty> propertyServer(
msgSvc());
293 if(propertyServer==0) {
298 std::string propertyName(
"Format");
299 std::string oldFormat(
"");
300 StringProperty formatProp(propertyName,oldFormat);
301 StatusCode sc = propertyServer->getProperty(&formatProp);
306 oldFormat = formatProp.value();
307 if(oldFormat.find(
"%t")==std::string::npos) {
309 std::string newFormat(
"%t " + oldFormat);
310 StringProperty newFormatProp(std::move(propertyName),newFormat);
311 ATH_CHECK(propertyServer->setProperty(newFormatProp), -1);
314 ATH_MSG_DEBUG(
"MsgSvc format already contains timestamps. Nothing to be done");
◆ reopenFd()
int AthenaMPToolBase::reopenFd |
( |
int |
fd, |
|
|
const std::string & |
name |
|
) |
| |
|
privateinherited |
Definition at line 419 of file AthenaMPToolBase.cxx.
422 int old_openflags = fcntl(
fd,F_GETFL,0);
423 switch(old_openflags & O_ACCMODE) {
438 int old_descflags = fcntl(
fd,F_GETFD,0);
439 off_t oldpos = lseek(
fd,0,SEEK_CUR);
455 if(lseek(newfd,oldpos,SEEK_SET)==-1){
457 TEMP_FAILURE_RETRY(close(newfd));
460 TEMP_FAILURE_RETRY(close(
fd));
461 if(dup2(newfd,
fd)==-1) {
462 ATH_MSG_ERROR(
"When re-opening file descriptors unable to duplicate descriptor for " <<
name <<
". " <<
fmterror(errno));
463 TEMP_FAILURE_RETRY(close(newfd));
466 if(fcntl(
fd,F_SETFD,old_descflags)==-1) {
467 ATH_MSG_ERROR(
"When re-opening file descriptors unable to set descriptor flags for " <<
name <<
". " <<
fmterror(errno));
468 TEMP_FAILURE_RETRY(close(newfd));
471 TEMP_FAILURE_RETRY(close(newfd));
◆ reopenFds()
int AthenaMPToolBase::reopenFds |
( |
| ) |
|
|
protectedinherited |
Definition at line 340 of file AthenaMPToolBase.cxx.
348 std::vector<const Io::FileAttr*> filemgrFiles;
349 std::vector<const Io::FileAttr*>::const_iterator itFile;
350 unsigned filenum =
m_fileMgr->getFiles(filemgrFiles);
351 if(filenum!=filemgrFiles.size())
352 ATH_MSG_WARNING(
"getFiles returned " << filenum <<
" while vector size is " << filemgrFiles.size());
354 for(itFile=filemgrFiles.begin();itFile!=filemgrFiles.end();++itFile) {
356 const std::string&
filename = (**itFile).name();
363 ATH_MSG_WARNING(
"FD=-1 detected on an open file retrieved from FileMgr. Skip FD reopening. File name: " <<
filename);
375 if(fdLog.find(regEntry.fd)!=fdLog.end()) {
376 ATH_MSG_DEBUG(
"The file from FdsRegistry " << regEntry.name <<
" was registered with FileMgr. Skip reopening");
379 ATH_MSG_WARNING(
"The file " << regEntry.name <<
" has not been registered with the FileMgr!");
381 if(regEntry.fd==-1) {
383 ATH_MSG_WARNING(
"FD=-1 detected on an open file retrieved from FD Registry. Skip FD reopening. File name: " << regEntry.name);
387 if(
reopenFd(regEntry.fd,regEntry.name))
390 fdLog.insert(regEntry.fd);
◆ reportSubprocessStatuses()
void SharedEvtQueueConsumer::reportSubprocessStatuses |
( |
| ) |
|
|
overridevirtual |
◆ setMaxEvt()
virtual void AthenaMPToolBase::setMaxEvt |
( |
int |
maxEvt | ) |
|
|
inlineoverridevirtualinherited |
◆ setMPRunStop()
|
inlineoverridevirtualinherited |
◆ setRandString()
void AthenaMPToolBase::setRandString |
( |
const std::string & |
randStr | ) |
|
|
overridevirtualinherited |
◆ subProcessLogs()
void SharedEvtQueueConsumer::subProcessLogs |
( |
std::vector< std::string > & |
filenames | ) |
|
|
overridevirtual |
◆ updateIoReg()
int AthenaMPToolBase::updateIoReg |
( |
const std::string & |
rundir | ) |
|
|
protectedinherited |
◆ useFdsRegistry()
◆ waitForSignal()
void AthenaMPToolBase::waitForSignal |
( |
| ) |
|
|
protectedinherited |
Definition at line 403 of file AthenaMPToolBase.cxx.
405 ATH_MSG_INFO(
"Bootstrap worker PID " << getpid() <<
" - waiting for SIGUSR1");
413 sigprocmask (SIG_BLOCK, &
mask, &oldmask);
415 sigsuspend (&oldmask);
416 sigprocmask (SIG_UNBLOCK, &
mask, NULL);
◆ m_appMgr
◆ m_chronoStatSvc
ServiceHandle<IChronoStatSvc> SharedEvtQueueConsumer::m_chronoStatSvc |
|
private |
◆ m_dataShare
SmartIF<IDataShare> SharedEvtQueueConsumer::m_dataShare |
|
private |
◆ m_debug
Gaudi::Property<bool> SharedEvtQueueConsumer::m_debug {this, "Debug", false} |
|
private |
◆ m_eventOrders
std::vector<int> SharedEvtQueueConsumer::m_eventOrders |
|
private |
◆ m_eventOrdersFile
Gaudi::Property<std::string> SharedEvtQueueConsumer::m_eventOrdersFile {this, "EventOrdersFile", "athenamp_eventorders.txt"} |
|
private |
◆ m_eventStat
◆ m_evtContext
IEvtSelector::Context* SharedEvtQueueConsumer::m_evtContext {nullptr} |
|
private |
◆ m_evtProcessor
◆ m_evtSeek
SmartIF<IEventSeek> SharedEvtQueueConsumer::m_evtSeek |
|
private |
◆ m_evtSelector
SmartIF<IEvtSelector> AthenaMPToolBase::m_evtSelector |
|
protectedinherited |
◆ m_evtSelName
std::string AthenaMPToolBase::m_evtSelName |
|
protectedinherited |
◆ m_evtSelSeek
◆ m_evtShare
SmartIF<IEventShare> SharedEvtQueueConsumer::m_evtShare |
|
private |
◆ m_fdsRegistry
◆ m_fileMgr
◆ m_fileMgrLog
std::string AthenaMPToolBase::m_fileMgrLog |
|
protectedinherited |
◆ m_finQueue
std::queue<pid_t> SharedEvtQueueConsumer::m_finQueue |
|
private |
◆ m_ioMgr
◆ m_isPileup
Gaudi::Property<bool> AthenaMPToolBase::m_isPileup {this, "IsPileup", false, "Flag for configuring PileUpEventLoopMgr"} |
|
protectedinherited |
◆ m_isRoundRobin
Gaudi::Property<bool> SharedEvtQueueConsumer::m_isRoundRobin {this, "IsRoundRobin", false, "Are we running in the 'reproducible mode'?"} |
|
private |
◆ m_masterPid
pid_t SharedEvtQueueConsumer::m_masterPid |
|
private |
◆ m_maxEvt
int AthenaMPToolBase::m_maxEvt {-1} |
|
protectedinherited |
◆ m_mpRunStop
◆ m_nEventsBeforeFork
Gaudi::Property<int> SharedEvtQueueConsumer::m_nEventsBeforeFork {this, "EventsBeforeFork", 0} |
|
private |
◆ m_nprocs
int AthenaMPToolBase::m_nprocs {-1} |
|
protectedinherited |
◆ m_nSkipEvents
int SharedEvtQueueConsumer::m_nSkipEvents {0} |
|
private |
◆ m_processGroup
◆ m_randStr
std::string AthenaMPToolBase::m_randStr |
|
protectedinherited |
◆ m_rankId
int SharedEvtQueueConsumer::m_rankId {-1} |
|
private |
◆ m_readEventOrders
Gaudi::Property<bool> SharedEvtQueueConsumer::m_readEventOrders {this, "ReadEventOrders", false} |
|
private |
◆ m_sharedEventQueue
◆ m_sharedRankQueue
◆ m_subprocDirPrefix
std::string AthenaMPToolBase::m_subprocDirPrefix |
|
protectedinherited |
◆ m_subprocTopDir
std::string AthenaMPToolBase::m_subprocTopDir |
|
protectedinherited |
◆ m_useSharedReader
Gaudi::Property<bool> SharedEvtQueueConsumer::m_useSharedReader {this, "UseSharedReader", false, "Work in pair with a SharedReader"} |
|
private |
◆ m_useSharedWriter
Gaudi::Property<bool> SharedEvtQueueConsumer::m_useSharedWriter {this, "UseSharedWriter", false, "Work in pair with a SharedWriter"} |
|
private |
The documentation for this class was generated from the following files:
const std::vector< ProcessStatus > & getStatuses() const
Gaudi::Property< bool > m_isRoundRobin
Gaudi::Property< bool > m_useSharedReader
path
python interpreter configuration --------------------------------------—
def mkdir(path, recursive=True)
Gaudi::Property< bool > m_readEventOrders
SmartIF< IEventSeek > m_evtSeek
SmartIF< IEvtSelectorSeek > m_evtSelSeek
const std::vector< Process > & getChildren() const
bool try_receive_basic(T &)
std::map< pid_t, std::pair< int, TimeValType > > m_eventStat
AllWorkerOutputs::iterator AllWorkerOutputsIterator
std::vector< WorkerOutput > SingleWorkerOutputs
#define COPY_FILE_HACK(_src, _dest)
virtual StatusCode seek(IEvtSelector::Context &c, int evtnum) const =0
Seek to a given event number.
virtual int curEvent(const IEvtSelector::Context &c) const =0
return the current event number.
msgSvc
Provide convenience handles for various services.
SmartIF< IDataShare > m_dataShare
std::vector< HWIdentifier >::iterator it1
Gaudi::Property< int > m_nEventsBeforeFork
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< int > m_eventOrders
std::unique_ptr< AthenaInterprocess::SharedQueue > m_sharedRankQueue
Gaudi::Property< std::string > m_eventOrdersFile
ServiceHandle< IChronoStatSvc > m_chronoStatSvc
SmartIF< IEventShare > m_evtShare
AthenaInterprocess::SharedQueue * m_sharedEventQueue
virtual bool stopScheduled() const =0
def time(flags, cells_name, *args, **kw)
#define ATH_MSG_WARNING(x)
IEvtSelector::Context * m_evtContext
std::unique_ptr< AllWorkerOutputs > AllWorkerOutputs_ptr
Gaudi::Property< bool > m_useSharedWriter
void * xmalloc(size_t size)
Trapping version of malloc.
constexpr int pow(int base, int exp) noexcept
Gaudi::Property< bool > m_debug
std::map< std::string, SingleWorkerOutputs > AllWorkerOutputs
Abstract interface for seeking for an event selector.
System::ProcessTime::TimeValueType TimeValType