13 declareInterface<Muon::IMuonRawDataProviderTool>(
this);
30 m_maxhashtoUse = m_idHelperSvc->mdtIdHelper().stationNameIndex(
"BME") != -1 ? m_idHelperSvc->mdtIdHelper().detectorElement_hash_max()
31 : m_idHelperSvc->mdtIdHelper().module_hash_max();
33 ATH_CHECK(m_rdoContainerKey.initialize());
35 ATH_CHECK(m_rdoContainerCacheKey.initialize(!m_rdoContainerCacheKey.key().empty()));
38 return StatusCode::SUCCESS;
42 const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs,
MdtCsmContainer& mdtContainer)
const {
47 if (frag->rod_ndata() != 0) {
48 m_decoder->fillCollections(*frag, mdtContainer).ignore();
50 ATH_MSG_DEBUG(
" ROB " << MSG::hex << frag->source_id() <<
" is delivered with an empty payload" );
56 return StatusCode::SUCCESS;
62 return convert(Gaudi::Hive::currentContext());
66 const EventContext& ctx)
const
72 return StatusCode::FAILURE;
74 return convert(readCdo->getAllROBId(), ctx);
78 return convert(HashVec, Gaudi::Hive::currentContext());
86 return StatusCode::FAILURE;
88 return convert(readCdo->getROBId(HashVec, msgStream()), ctx);
92 return convert(robIds, Gaudi::Hive::currentContext());
96 std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*> vecOfRobf;
97 m_robDataProvider->getROBData(ctx, robIds, vecOfRobf);
102 const std::vector<IdentifierHash>&)
const {
103 return convert(vecRobs, Gaudi::Hive::currentContext());
107 const std::vector<IdentifierHash>& ,
const EventContext& ctx)
const {
112 return convert(vecRobs, Gaudi::Hive::currentContext());
116 const EventContext& ctx)
const {
127 const bool externalCacheRDO = !m_rdoContainerCacheKey.key().
empty();
128 if (!externalCacheRDO) {
130 ATH_CHECK(rdoContainerHandle.
record(std::make_unique<MdtCsmContainer>(m_maxhashtoUse)));
132 rdoContainer = rdoContainerHandle.
ptr();
138 ATH_MSG_DEBUG(
"Created container using cache for " << m_rdoContainerCacheKey.key());
139 rdoContainer = rdoContainerHandle.
ptr();
144 ATH_MSG_ERROR(
"MdtCsmContainer is null, cannot convert MDT raw data");
145 return StatusCode::FAILURE;
149 ATH_CHECK(convertIntoContainer(vecRobs, *rdoContainer));
151 return StatusCode::SUCCESS;