5#ifndef BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
6#define BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
14#include "Gaudi/Property.h"
15#include "eformat/SourceIdentifier.h"
19#include <unordered_map>
40 using base_class::base_class;
49 virtual void getROBData(
const EventContext& ctx,
const std::vector<uint32_t>& robIds,
50 VROBFRAG& robFragments,
51 const std::string_view callerName=
"UNKNOWN")
override;
57 virtual void setEventStatus(
const EventContext& ctx, uint32_t status)
override;
63 const std::function<
void(
const ROBF* )>& fn )
const override;
74 std::unordered_map<uint32_t, std::unique_ptr<const ROBF>>
robmap;
86 this,
"filterRobWithStatus", {},
"ROB IDs and status words to filter (full ROB SourceID)"};
88 this,
"filterSubDetWithStatus", {},
"Sub-detector IDs and status words to filter"};
90 this,
"filterEmptyROB",
false,
"Filter out empty ROB fragments"};
Maintain a set of objects, one per slot.
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
ROBDataProviderSvc provides access to individual ROB fragments.
virtual uint32_t getEventStatus(const EventContext &ctx) override
Retrieve the status for the event.
virtual void processCachedROBs(const EventContext &ctx, const std::function< void(const ROBF *)> &fn) const override
virtual const RawEvent * getEvent(const EventContext &ctx) override
Retrieve the whole event.
virtual StatusCode initialize() override
Initialize.
std::unordered_map< uint32_t, std::vector< uint32_t > > m_filterRobMap
map of full ROB Source ids and status words to be ignored for the ROB map
virtual void setNextEvent(const EventContext &ctx, const RawEvent *re) override
Add all ROBFragments of a RawEvent to cache.
Gaudi::Property< std::vector< std::pair< int, int > > > m_filterSubDetWithStatus
Gaudi::Property< bool > m_filterEmptyROB
virtual void getROBData(const EventContext &ctx, const std::vector< uint32_t > &robIds, VROBFRAG &robFragments, const std::string_view callerName="UNKNOWN") override
Retrieve ROBFragments for given ROB ids from cache.
bool filterRobWithStatus(const ROBF *rob)
method to filter ROBs with given Status code
virtual void setEventStatus(const EventContext &ctx, uint32_t status) override
Store the status for the event.
Gaudi::Property< std::vector< std::pair< int, int > > > m_filterRobWithStatus
OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment ROBF
ROB Fragment class.
SG::SlotSpecificObj< EventCache > m_eventsCache
std::unordered_map< eformat::SubDetector, std::vector< uint32_t > > m_filterSubDetMap
map of Sub Det Source ids and status words to be ignored for the ROB map
Maintain a set of objects, one per slot.
eformat::ROBFragment< PointerType > ROBFragment
ROB fragment cache per slot.
std::unordered_map< uint32_t, std::unique_ptr< const ROBF > > robmap