ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaMPTools
src
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"
10
#include "
AthenaInterprocess/SharedQueue.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
;
25
virtual
StatusCode exec
ATLAS_NOT_THREAD_SAFE
()
override
;
26
27
virtual
void
subProcessLogs
(std::vector<std::string>&)
override
;
28
virtual
AthenaMP::AllWorkerOutputs_ptr
generateOutputReport
()
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
:
39
SharedEvtQueueProvider
();
40
SharedEvtQueueProvider
(
const
SharedEvtQueueProvider
&);
41
SharedEvtQueueProvider
&
operator=
(
const
SharedEvtQueueProvider
&);
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};
54
int
m_nPositionInChunk
{0};
55
56
int
m_nEvtRequested
{-1};
57
int
m_nEvtCounted
{0};
58
59
AthenaInterprocess::SharedQueue
*
m_sharedEventQueue
{
nullptr
};
60
SmartIF<IEventShare>
m_evtShare
;
61
62
// Add next event chunk to the queue
63
void
addEventsToQueue
();
64
65
};
66
67
#endif
AthenaMPToolBase.h
SharedQueue.h
AthenaInterprocess::SharedQueue
Definition
SharedQueue.h:21
IEventShare
Abstract interface for sharing within an event stream.
Definition
IEventShare.h:25
SharedEvtQueueProvider::bootstrap_func
virtual std::unique_ptr< AthenaInterprocess::ScheduledWork > bootstrap_func() override
Definition
SharedEvtQueueProvider.cxx:110
SharedEvtQueueProvider::m_nEvtRequested
int m_nEvtRequested
Max event received from AppMgr.
Definition
SharedEvtQueueProvider.h:56
SharedEvtQueueProvider::exec_func
virtual std::unique_ptr< AthenaInterprocess::ScheduledWork > exec_func() override
Definition
SharedEvtQueueProvider.cxx:215
SharedEvtQueueProvider::SharedEvtQueueProvider
SharedEvtQueueProvider(const std::string &type, const std::string &name, const IInterface *parent)
Definition
SharedEvtQueueProvider.cxx:28
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::m_sharedEventQueue
AthenaInterprocess::SharedQueue * m_sharedEventQueue
Definition
SharedEvtQueueProvider.h:59
SharedEvtQueueProvider::~SharedEvtQueueProvider
virtual ~SharedEvtQueueProvider() override
Definition
SharedEvtQueueProvider.cxx:36
SharedEvtQueueProvider::m_nEventsBeforeFork
Gaudi::Property< int > m_nEventsBeforeFork
Definition
SharedEvtQueueProvider.h:44
SharedEvtQueueProvider::SharedEvtQueueProvider
SharedEvtQueueProvider(const SharedEvtQueueProvider &)
SharedEvtQueueProvider::ATLAS_NOT_THREAD_SAFE
virtual StatusCode exec ATLAS_NOT_THREAD_SAFE() override
SharedEvtQueueProvider::m_evtShare
SmartIF< IEventShare > m_evtShare
Definition
SharedEvtQueueProvider.h:60
SharedEvtQueueProvider::m_nEvtCounted
int m_nEvtCounted
The number of events this tool has counted itself in the input files.
Definition
SharedEvtQueueProvider.h:57
SharedEvtQueueProvider::m_useSharedReader
Gaudi::Property< bool > m_useSharedReader
Definition
SharedEvtQueueProvider.h:43
SharedEvtQueueProvider::m_nChunkSize
Gaudi::Property< int > m_nChunkSize
Definition
SharedEvtQueueProvider.h:45
SharedEvtQueueProvider::handle
virtual void handle(const Incident &inc) override
Definition
SharedEvtQueueProvider.cxx:337
SharedEvtQueueProvider::generateOutputReport
virtual AthenaMP::AllWorkerOutputs_ptr generateOutputReport() override
Definition
SharedEvtQueueProvider.cxx:104
SharedEvtQueueProvider::addEventsToQueue
void addEventsToQueue()
Definition
SharedEvtQueueProvider.cxx:357
SharedEvtQueueProvider::m_nChunkStart
int m_nChunkStart
The beginning of the current chunk.
Definition
SharedEvtQueueProvider.h:53
SharedEvtQueueProvider::operator=
SharedEvtQueueProvider & operator=(const SharedEvtQueueProvider &)
SharedEvtQueueProvider::m_nPositionInChunk
int m_nPositionInChunk
Position within the current chunk.
Definition
SharedEvtQueueProvider.h:54
SharedEvtQueueProvider::subProcessLogs
virtual void subProcessLogs(std::vector< std::string > &) override
Definition
SharedEvtQueueProvider.cxx:96
SharedEvtQueueProvider::fin_func
virtual std::unique_ptr< AthenaInterprocess::ScheduledWork > fin_func() override
Definition
SharedEvtQueueProvider.cxx:327
SharedEvtQueueProvider::ATLAS_NOT_THREAD_SAFE
virtual int makePool ATLAS_NOT_THREAD_SAFE(int maxevt, int nprocs, const std::string &topdir) override
SharedEvtQueueProvider::SharedEvtQueueProvider
SharedEvtQueueProvider()
AthenaMP::AllWorkerOutputs_ptr
std::unique_ptr< AllWorkerOutputs > AllWorkerOutputs_ptr
Definition
IAthenaMPTool.h:32
type
Generated on
for ATLAS Offline Software by
1.17.0