|  | 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()].emplace_back(std::move(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
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