5#ifndef BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
6#define BYTESTREAMCNVSVCBASE_ROBDATAPROVIDERSVC_H
30#include "eformat/SourceIdentifier.h"
33#include "Gaudi/Property.h"
51 virtual void addROBData(
const EventContext& context,
const std::vector<uint32_t>& robIds,
const std::string_view callerName=
"UNKNOWN")
override;
54 virtual void setNextEvent(
const EventContext& context,
const std::vector<OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment>&
result)
override;
60 virtual void getROBData(
const EventContext& context,
const std::vector<uint32_t>& robIds, VROBFRAG& robFragments,
61 const std::string_view callerName=
"UNKNOWN")
override;
67 virtual void setEventStatus(
const EventContext& context, uint32_t status)
override;
70 virtual uint32_t
getEventStatus(
const EventContext& context)
override;
73 const std::function<
void(
const ROBF* )>& fn )
const override;
75 virtual bool isEventComplete(
const EventContext& )
const override {
return true; }
83 using ROBMAP = std::map<uint32_t, std::unique_ptr<const ROBF>, std::less<uint32_t>>;
98 this,
"filterRobWithStatus", {},
"ROB IDs and status words to filter (full ROB SourceID)"};
100 this,
"filterSubDetWithStatus", {},
"Sub-detector IDs and status words to filter"};
112 Gaudi::Property<bool>
m_filterEmptyROB{
this,
"filterEmptyROB",
false,
"Filter out empty ROB fragments"};
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
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.
FilterRobMap m_filterRobMap
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