ATLAS Offline Software
ROBDataProviderSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
6 #define BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
7 
30 #include "eformat/SourceIdentifier.h"
33 #include <vector>
34 #include <map>
35 #include <memory>
36 
37 class ROBDataProviderSvc : public extends<AthService, IROBDataProviderSvc> {
38 
39 public:
42 
44  ROBDataProviderSvc(const std::string& name, ISvcLocator* svcloc);
45 
47  virtual StatusCode initialize() override;
48 
50  virtual void addROBData(const std::vector<uint32_t>& robIds, const std::string_view callerName="UNKNOWN") override;
51 
53  virtual void setNextEvent(const std::vector<ROBF>& result) override;
54 
56  virtual void setNextEvent(const RawEvent* re) override;
57 
59  virtual void getROBData(const std::vector<uint32_t>& robIds, std::vector<const ROBF*>& robFragments, const std::string_view callerName="UNKNOWN") override;
60 
62  virtual const RawEvent* getEvent() override;
63 
65  virtual void setEventStatus(uint32_t status) override;
66 
68  virtual uint32_t getEventStatus() override;
69 
70 
72  virtual void addROBData(const EventContext& context, const std::vector<uint32_t>& robIds, const std::string_view callerName="UNKNOWN") override;
73  virtual void setNextEvent(const EventContext& context, const std::vector<OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment>& result) override;
74  virtual void setNextEvent(const EventContext& context, const RawEvent* re) override;
75  virtual void getROBData(const EventContext& context, const std::vector<uint32_t>& robIds, VROBFRAG& robFragments,
76  const std::string_view callerName="UNKNOWN") override;
77  virtual const RawEvent* getEvent(const EventContext& context) override;
78  virtual void setEventStatus(const EventContext& context, uint32_t status) override;
79  virtual uint32_t getEventStatus(const EventContext& context) override;
80 
81  virtual void processCachedROBs(const EventContext& context,
82  const std::function< void(const ROBF* )>& fn ) const override;
83 
84  virtual bool isEventComplete(const EventContext& /*context*/) const override { return true; }
85  virtual int collectCompleteEventData(const EventContext& /*context*/, const std::string_view /*callerName*/ ) override { return 0; }
86 
87 protected:
89  //typedef std::vector<ROBF*> VROBF;
90 
92  typedef std::map<uint32_t, std::unique_ptr<const ROBF>, std::less<uint32_t> > ROBMAP;
93 
94  struct EventCache {
95  const RawEvent* event = 0;
99 
100  };
102 
105  typedef SimpleProperty< std::vector< std::pair<int, int> > > ArrayPairIntProperty;
106  ArrayPairIntProperty m_filterRobWithStatus; // filter with full ROB SourceID
108 
110  typedef std::map<uint32_t, std::vector<uint32_t> > FilterRobMap;
113  typedef std::map<eformat::SubDetector, std::vector<uint32_t> > FilterSubDetMap;
116  bool filterRobWithStatus(const ROBF* rob);
117 
119  BooleanProperty m_filterEmptyROB;
120  bool m_maskL2EFModuleID = false;
121 
122 private:
123  static void robmapClear(ROBMAP& toclear);
124 };
125 
126 #endif
ROBDataProviderSvc::getEvent
virtual const RawEvent * getEvent() override
Retrieve the whole event.
Definition: ROBDataProviderSvc.cxx:342
ROBDataProviderSvc::ArrayPairIntProperty
SimpleProperty< std::vector< std::pair< int, int > > > ArrayPairIntProperty
Remaining attributes are for configuration vector of Source ids and status words to be ignored for th...
Definition: ROBDataProviderSvc.h:105
ROBDataProviderSvc::setEventStatus
virtual void setEventStatus(uint32_t status) override
Store the status for the event.
Definition: ROBDataProviderSvc.cxx:353
ROBDataProviderSvc::getEventStatus
virtual uint32_t getEventStatus() override
Retrieve the status for the event.
Definition: ROBDataProviderSvc.cxx:362
get_generator_info.result
result
Definition: get_generator_info.py:21
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ROBDataProviderSvc::addROBData
virtual void addROBData(const std::vector< uint32_t > &robIds, const std::string_view callerName="UNKNOWN") override
Add ROBFragments to cache for given ROB ids, ROB fragments may be retrieved with DataCollector.
Definition: ROBDataProviderSvc.cxx:147
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition: RawEvent.h:37
ROBDataProviderSvc::EventCache::robmap
ROBMAP robmap
Definition: ROBDataProviderSvc.h:98
ROBDataProviderSvc::m_filterRobWithStatus
ArrayPairIntProperty m_filterRobWithStatus
Definition: ROBDataProviderSvc.h:106
ROBDataProviderSvc::FilterSubDetMap
std::map< eformat::SubDetector, std::vector< uint32_t > > FilterSubDetMap
map of Sub Det Source ids and status words to be ignored for the ROB map
Definition: ROBDataProviderSvc.h:113
ROBDataProviderSvc::getROBData
virtual void getROBData(const EventContext &context, const std::vector< uint32_t > &robIds, VROBFRAG &robFragments, const std::string_view callerName="UNKNOWN") override
ROBDataProviderSvc::getROBData
virtual void getROBData(const std::vector< uint32_t > &robIds, std::vector< const ROBF * > &robFragments, const std::string_view callerName="UNKNOWN") override
Retrieve ROBFragments for given ROB ids from cache.
Definition: ROBDataProviderSvc.cxx:293
ROBDataProviderSvc::ROBF
OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment ROBF
ROB Fragment class.
Definition: ROBDataProviderSvc.h:41
ROBDataProviderSvc::m_maskL2EFModuleID
bool m_maskL2EFModuleID
Definition: ROBDataProviderSvc.h:120
ROBDataProviderSvc::initialize
virtual StatusCode initialize() override
initialize the service
Definition: ROBDataProviderSvc.cxx:97
SG::SlotSpecificObj
Maintain a set of objects, one per slot.
Definition: AthenaKernel/AthenaKernel/SlotSpecificObj.h:70
python.getCurrentFolderTag.fn
fn
Definition: getCurrentFolderTag.py:65
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
RawEvent.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ROBDataProviderSvc::ROBMAP
std::map< uint32_t, std::unique_ptr< const ROBF >, std::less< uint32_t > > ROBMAP
vector of ROBFragment class
Definition: ROBDataProviderSvc.h:92
ROBDataProviderSvc::FilterRobMap
std::map< uint32_t, std::vector< uint32_t > > FilterRobMap
map of full ROB Source ids and status words to be ignored for the ROB map
Definition: ROBDataProviderSvc.h:110
ROBDataProviderSvc::ROBDataProviderSvc
ROBDataProviderSvc(const std::string &name, ISvcLocator *svcloc)
Constructor.
Definition: ROBDataProviderSvc.cxx:87
ROBDataProviderSvc::EventCache
Definition: ROBDataProviderSvc.h:94
ROBDataProviderSvc::setNextEvent
virtual void setNextEvent(const std::vector< ROBF > &result) override
Add a given LVL1/LVL2 ROBFragment to cache.
Definition: ROBDataProviderSvc.cxx:191
ROBDataProviderSvc::isEventComplete
virtual bool isEventComplete(const EventContext &) const override
Definition: ROBDataProviderSvc.h:84
ROBDataProviderSvc
Definition: ROBDataProviderSvc.h:37
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ROBDataProviderSvc::m_filterEmptyROB
BooleanProperty m_filterEmptyROB
Filter out empty ROB fragments which are send by the ROS.
Definition: ROBDataProviderSvc.h:119
ROBDataProviderSvc::EventCache::eventStatus
uint32_t eventStatus
Definition: ROBDataProviderSvc.h:96
ROBDataProviderSvc::m_filterSubDetMap
FilterSubDetMap m_filterSubDetMap
Definition: ROBDataProviderSvc.h:114
re
const boost::regex re(r_e)
ROBDataProviderSvc::collectCompleteEventData
virtual int collectCompleteEventData(const EventContext &, const std::string_view) override
Definition: ROBDataProviderSvc.h:85
ROBDataProviderSvc::robmapClear
static void robmapClear(ROBMAP &toclear)
Definition: ROBDataProviderSvc.cxx:335
AthService.h
SlotSpecificObj.h
Maintain a set of objects, one per slot.
merge.status
status
Definition: merge.py:17
ROBDataProviderSvc::m_filterRobMap
FilterRobMap m_filterRobMap
Definition: ROBDataProviderSvc.h:111
ROBDataProviderSvc::processCachedROBs
virtual void processCachedROBs(const EventContext &context, const std::function< void(const ROBF *)> &fn) const override
Definition: ROBDataProviderSvc.cxx:371
ROBDataProviderSvc::m_eventsCache
SG::SlotSpecificObj< EventCache > m_eventsCache
Definition: ROBDataProviderSvc.h:101
ROBDataProviderSvc::filterRobWithStatus
bool filterRobWithStatus(const ROBF *rob)
method to filter ROBs with given Status code
Definition: ROBDataProviderSvc.cxx:382
IROBDataProviderSvc.h
ROBDataProviderSvc::EventCache::currentLvl1ID
uint32_t currentLvl1ID
Definition: ROBDataProviderSvc.h:97
ROBDataProviderSvc::m_filterSubDetWithStatus
ArrayPairIntProperty m_filterSubDetWithStatus
Definition: ROBDataProviderSvc.h:107