ATLAS Offline Software
SharedEvtQueueProvider.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ATHENAMPTOOLS_SHAREDEVTQUEUEPROVIDER_H
6 #define ATHENAMPTOOLS_SHAREDEVTQUEUEPROVIDER_H
7 
8 #include "AthenaMPToolBase.h"
9 #include "GaudiKernel/IIncidentListener.h"
11 
12 class IEventShare;
13 
14 class SharedEvtQueueProvider final : public extends<AthenaMPToolBase, IIncidentListener>
15 {
16  public:
17  SharedEvtQueueProvider(const std::string& type
18  , const std::string& name
19  , const IInterface* parent);
20 
21  virtual ~SharedEvtQueueProvider() override;
22 
23  // _________IAthenaMPTool_________
24  virtual int makePool ATLAS_NOT_THREAD_SAFE (int maxevt, int nprocs, const std::string& topdir) override;
26 
27  virtual void subProcessLogs(std::vector<std::string>&) override;
29 
30  // _________IIncidentListener___________
31  virtual void handle(const Incident& inc) override;
32 
33  // _____ Actual working horses ________
34  virtual std::unique_ptr<AthenaInterprocess::ScheduledWork> bootstrap_func() override;
35  virtual std::unique_ptr<AthenaInterprocess::ScheduledWork> exec_func() override;
36  virtual std::unique_ptr<AthenaInterprocess::ScheduledWork> fin_func() override;
37 
38  private:
42 
43  Gaudi::Property<bool> m_useSharedReader{this, "UseSharedReader", false, "Use shared reader"};
44  Gaudi::Property<int> m_nEventsBeforeFork{this, "EventsBeforeFork", 0, "Number of events before forking"};
45  Gaudi::Property<int> m_nChunkSize{this, "ChunkSize", 1};
46 
52  int m_nprocesses{-1};
53  int m_nChunkStart{0};
55 
56  int m_nEvtRequested{-1};
57  int m_nEvtCounted{0};
58 
60  SmartIF<IEventShare> m_evtShare;
61 
62  // Add next event chunk to the queue
63  void addEventsToQueue();
64 
65 };
66 
67 #endif
SharedEvtQueueProvider::m_nChunkSize
Gaudi::Property< int > m_nChunkSize
Definition: SharedEvtQueueProvider.h:45
SharedEvtQueueProvider::SharedEvtQueueProvider
SharedEvtQueueProvider()
SharedEvtQueueProvider::m_nEvtRequested
int m_nEvtRequested
Max event received from AppMgr.
Definition: SharedEvtQueueProvider.h:56
SharedEvtQueueProvider::m_nChunkStart
int m_nChunkStart
The beginning of the current chunk.
Definition: SharedEvtQueueProvider.h:53
SharedEvtQueueProvider::m_nEventsBeforeFork
Gaudi::Property< int > m_nEventsBeforeFork
Definition: SharedEvtQueueProvider.h:44
SharedEvtQueueProvider::addEventsToQueue
void addEventsToQueue()
Definition: SharedEvtQueueProvider.cxx:357
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
SharedEvtQueueProvider::m_sharedEventQueue
AthenaInterprocess::SharedQueue * m_sharedEventQueue
Definition: SharedEvtQueueProvider.h:59
SharedEvtQueueProvider::generateOutputReport
virtual AthenaMP::AllWorkerOutputs_ptr generateOutputReport() override
Definition: SharedEvtQueueProvider.cxx:104
SharedEvtQueueProvider::m_nprocesses
int m_nprocesses
We use this data member for adding negative numbers at the end of the event queue.
Definition: SharedEvtQueueProvider.h:52
SharedEvtQueueProvider::handle
virtual void handle(const Incident &inc) override
Definition: SharedEvtQueueProvider.cxx:337
SharedEvtQueueProvider::ATLAS_NOT_THREAD_SAFE
virtual StatusCode exec ATLAS_NOT_THREAD_SAFE() override
SharedEvtQueueProvider::subProcessLogs
virtual void subProcessLogs(std::vector< std::string > &) override
Definition: SharedEvtQueueProvider.cxx:96
SharedEvtQueueProvider::exec_func
virtual std::unique_ptr< AthenaInterprocess::ScheduledWork > exec_func() override
Definition: SharedEvtQueueProvider.cxx:215
SharedEvtQueueProvider::ATLAS_NOT_THREAD_SAFE
virtual int makePool ATLAS_NOT_THREAD_SAFE(int maxevt, int nprocs, const std::string &topdir) override
LHEonly.nprocs
nprocs
Definition: LHEonly.py:17
IEventShare
Abstract interface for sharing within an event stream.
Definition: IEventShare.h:25
AthenaInterprocess::SharedQueue
Definition: SharedQueue.h:21
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4FSStartPointFilter.exec
exec
Definition: LArG4FSStartPointFilter.py:103
SharedEvtQueueProvider::m_nEvtCounted
int m_nEvtCounted
The number of events this tool has counted itself in the input files.
Definition: SharedEvtQueueProvider.h:57
test_pyathena.parent
parent
Definition: test_pyathena.py:15
columnar::final
CM final
Definition: ColumnAccessor.h:106
SharedEvtQueueProvider::fin_func
virtual std::unique_ptr< AthenaInterprocess::ScheduledWork > fin_func() override
Definition: SharedEvtQueueProvider.cxx:327
AthenaMPToolBase.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
SharedEvtQueueProvider::bootstrap_func
virtual std::unique_ptr< AthenaInterprocess::ScheduledWork > bootstrap_func() override
Definition: SharedEvtQueueProvider.cxx:110
SharedEvtQueueProvider::SharedEvtQueueProvider
SharedEvtQueueProvider(const SharedEvtQueueProvider &)
SharedEvtQueueProvider::~SharedEvtQueueProvider
virtual ~SharedEvtQueueProvider() override
Definition: SharedEvtQueueProvider.cxx:36
SharedEvtQueueProvider::m_evtShare
SmartIF< IEventShare > m_evtShare
Definition: SharedEvtQueueProvider.h:60
SharedEvtQueueProvider::m_useSharedReader
Gaudi::Property< bool > m_useSharedReader
Definition: SharedEvtQueueProvider.h:43
SharedEvtQueueProvider::operator=
SharedEvtQueueProvider & operator=(const SharedEvtQueueProvider &)
AthenaMP::AllWorkerOutputs_ptr
std::unique_ptr< AllWorkerOutputs > AllWorkerOutputs_ptr
Definition: IAthenaMPTool.h:32
SharedQueue.h
SharedEvtQueueProvider
Definition: SharedEvtQueueProvider.h:15
SharedEvtQueueProvider::m_nPositionInChunk
int m_nPositionInChunk
Position within the current chunk.
Definition: SharedEvtQueueProvider.h:54