ATLAS Offline Software
Loading...
Searching...
No Matches
ROBDataProviderSvc.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 BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
6#define BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
7
27
30#include "eformat/SourceIdentifier.h"
33#include "Gaudi/Property.h"
34#include <vector>
35#include <map>
36#include <memory>
37
38class ROBDataProviderSvc : public extends<AthService, IROBDataProviderSvc> {
39
40public:
43
45 ROBDataProviderSvc(const std::string& name, ISvcLocator* svcloc);
46
48 virtual StatusCode initialize() override;
49
51 virtual void addROBData(const EventContext& context, const std::vector<uint32_t>& robIds, const std::string_view callerName="UNKNOWN") override;
52
54 virtual void setNextEvent(const EventContext& context, const std::vector<OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment>& result) override;
55
57 virtual void setNextEvent(const EventContext& context, const RawEvent* re) override;
58
60 virtual void getROBData(const EventContext& context, const std::vector<uint32_t>& robIds, VROBFRAG& robFragments,
61 const std::string_view callerName="UNKNOWN") override;
62
64 virtual const RawEvent* getEvent(const EventContext& context) override;
65
67 virtual void setEventStatus(const EventContext& context, uint32_t status) override;
68
70 virtual uint32_t getEventStatus(const EventContext& context) override;
71
72 virtual void processCachedROBs(const EventContext& context,
73 const std::function< void(const ROBF* )>& fn ) const override;
74
75 virtual bool isEventComplete(const EventContext& /*context*/) const override { return true; }
76 virtual int collectCompleteEventData(const EventContext& /*context*/, const std::string_view /*callerName*/ ) override { return 0; }
77
78protected:
80 //typedef std::vector<ROBF*> VROBF;
81
83 using ROBMAP = std::map<uint32_t, std::unique_ptr<const ROBF>, std::less<uint32_t>>;
84
85 struct EventCache {
86 const RawEvent* event = nullptr;
87 uint32_t eventStatus = 0;
88 uint32_t currentLvl1ID = 0;
90
91 };
93
96 using ArrayPairIntType = std::vector<std::pair<int, int>>;
97 Gaudi::Property<ArrayPairIntType> m_filterRobWithStatus{
98 this, "filterRobWithStatus", {}, "ROB IDs and status words to filter (full ROB SourceID)"};
99 Gaudi::Property<ArrayPairIntType> m_filterSubDetWithStatus{
100 this, "filterSubDetWithStatus", {}, "Sub-detector IDs and status words to filter"};
101
103 using FilterRobMap = std::map<uint32_t, std::vector<uint32_t>>;
106 using FilterSubDetMap = std::map<eformat::SubDetector, std::vector<uint32_t>>;
109 bool filterRobWithStatus(const ROBF* rob);
110
112 Gaudi::Property<bool> m_filterEmptyROB{this, "filterEmptyROB", false, "Filter out empty ROB fragments"};
113 bool m_maskL2EFModuleID = false;
114
115private:
116 static void robmapClear(ROBMAP& toclear);
117};
118
119#endif
const boost::regex re(r_e)
Maintain a set of objects, one per slot.
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition RawEvent.h:37
virtual void setNextEvent(const EventContext &context, const std::vector< OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment > &result) override
Add a given LVL1/LVL2 ROBFragment to cache.
virtual void setEventStatus(const EventContext &context, uint32_t status) override
Store the status for the event.
virtual bool isEventComplete(const EventContext &) const override
std::map< uint32_t, std::unique_ptr< const ROBF >, std::less< uint32_t > > ROBMAP
vector of ROBFragment class
Gaudi::Property< ArrayPairIntType > m_filterSubDetWithStatus
virtual StatusCode initialize() override
initialize the service
virtual void addROBData(const EventContext &context, 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.
Gaudi::Property< ArrayPairIntType > m_filterRobWithStatus
Gaudi::Property< bool > m_filterEmptyROB
Filter out empty ROB fragments which are send by the ROS.
virtual void getROBData(const EventContext &context, const std::vector< uint32_t > &robIds, VROBFRAG &robFragments, const std::string_view callerName="UNKNOWN") override
Retrieve ROBFragments for given ROB ids from cache.
virtual int collectCompleteEventData(const EventContext &, const std::string_view) override
ROBDataProviderSvc(const std::string &name, ISvcLocator *svcloc)
Constructor.
virtual void processCachedROBs(const EventContext &context, const std::function< void(const ROBF *)> &fn) const override
std::vector< std::pair< int, int > > ArrayPairIntType
Remaining attributes are for configuration vector of Source ids and status words to be ignored for th...
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
static void robmapClear(ROBMAP &toclear)
bool filterRobWithStatus(const ROBF *rob)
method to filter ROBs with given Status code
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
virtual uint32_t getEventStatus(const EventContext &context) override
Retrieve the status for the event.
OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment ROBF
ROB Fragment class.
SG::SlotSpecificObj< EventCache > m_eventsCache
virtual const RawEvent * getEvent(const EventContext &context) override
Retrieve the whole event.
FilterSubDetMap m_filterSubDetMap
Maintain a set of objects, one per slot.
eformat::ROBFragment< PointerType > ROBFragment
Definition RawEvent.h:27