ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCnv
MuonMM_CnvTools
src
NSWMMTP_RawDataProviderToolMT.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include "
NSWMMTP_RawDataProviderToolMT.h
"
5
#include "
xAODMuonRDO/NSWMMTPRDOAuxContainer.h
"
6
7
namespace
Muon
{
8
9
10
//=====================================================================
11
StatusCode
NSWMMTP_RawDataProviderToolMT::initialize
() {
12
ATH_CHECK
(
m_decoder
.retrieve());
13
ATH_CHECK
(
m_idHelperSvc
.retrieve());
14
ATH_CHECK
(
m_robDataProvider
.retrieve());
15
ATH_CHECK
(
m_rdoContainerKey
.initialize());
16
17
return
StatusCode::SUCCESS;
18
}
19
20
21
22
23
//=====================================================================
24
StatusCode
NSWMMTP_RawDataProviderToolMT::convertFragments
(
const
ROBFragmentList& fragments,
const
EventContext& ctx)
const
{
25
ATH_MSG_DEBUG
(__PRETTY_FUNCTION__ <<
": Got "
<< fragments.size() <<
" fragments"
);
26
SG::WriteHandle
rdoContainerHandle{
m_rdoContainerKey
, ctx};
27
xAOD::NSWMMTPRDOContainer
* pContainer{
nullptr
};
28
29
// Retrieve container, if it exists in the event store; otherwise, create one
30
31
ATH_CHECK
(rdoContainerHandle.
record
(std::make_unique<xAOD::NSWMMTPRDOContainer>(), std::make_unique<xAOD::NSWMMTPRDOAuxContainer>()));
32
pContainer = rdoContainerHandle.
ptr
();
33
for
(
const
auto
*
const
fragment : fragments) {
34
// NSW Common Decoder has already a try/catch inside and it's reporting errors/exceptions: wanna handle them here too?
35
ATH_CHECK
(
m_decoder
->fillCollection(*fragment, *pContainer));
36
}
37
38
return
StatusCode::SUCCESS;
39
}
40
41
42
//=====================================================================
43
StatusCode
NSWMMTP_RawDataProviderToolMT::convert
(
const
EventContext& ctx)
const
44
{
45
// Get all ROBs!
46
ROBFragmentList fragments;
47
std::vector<uint32_t> robIDs;
48
49
// Generate all possible ROB IDs, aka Source Identifiers
50
// Valid values are: 0x00{6b,6c}001[0..f]
51
robIDs.reserve(32);
52
for
(uint32_t detectorID : {eformat::MUON_MMEGA_ENDCAP_A_SIDE, eformat::MUON_MMEGA_ENDCAP_C_SIDE}) {
// 0x6B, 0x6C
53
for
(uint8_t sector{}; sector < 16; sector++) {
54
uint16_t moduleID = (0x1 << 4) | sector;
55
eformat::helper::SourceIdentifier sourceID{
static_cast<
eformat::SubDetector
>
(detectorID), moduleID};
56
robIDs.push_back(sourceID.simple_code());
57
}
58
}
59
60
m_robDataProvider
->getROBData(ctx, robIDs, fragments);
61
return
convertFragments
(fragments, ctx);
62
}
63
64
StatusCode
NSWMMTP_RawDataProviderToolMT::convert
(
const
std::vector<IdentifierHash>&,
const
EventContext&)
const
{
65
ATH_MSG_ERROR
(__PRETTY_FUNCTION__ <<
" not implemented!"
);
66
return
StatusCode::FAILURE;
67
}
68
StatusCode
NSWMMTP_RawDataProviderToolMT::convert
(
const
std::vector<uint32_t>&,
const
EventContext&)
const
{
69
ATH_MSG_ERROR
(__PRETTY_FUNCTION__ <<
" not implemented!"
);
70
return
StatusCode::FAILURE;
71
}
72
73
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x,...)
Definition
AthMsgStreamMacros.h:43
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x,...)
Definition
AthMsgStreamMacros.h:47
NSWMMTPRDOAuxContainer.h
NSWMMTP_RawDataProviderToolMT.h
Muon::NSWMMTP_RawDataProviderToolMT::convertFragments
StatusCode convertFragments(const ROBFragmentList &fragments, const EventContext &ctx) const
Definition
NSWMMTP_RawDataProviderToolMT.cxx:24
Muon::NSWMMTP_RawDataProviderToolMT::m_robDataProvider
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Definition
NSWMMTP_RawDataProviderToolMT.h:41
Muon::NSWMMTP_RawDataProviderToolMT::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
NSWMMTP_RawDataProviderToolMT.h:38
Muon::NSWMMTP_RawDataProviderToolMT::m_decoder
ToolHandle< INSWMMTP_ROD_Decoder > m_decoder
Definition
NSWMMTP_RawDataProviderToolMT.h:39
Muon::NSWMMTP_RawDataProviderToolMT::m_rdoContainerKey
SG::WriteHandleKey< xAOD::NSWMMTPRDOContainer > m_rdoContainerKey
Definition
NSWMMTP_RawDataProviderToolMT.h:43
Muon::NSWMMTP_RawDataProviderToolMT::convert
StatusCode convert(const EventContext &ctx) const override
Definition
NSWMMTP_RawDataProviderToolMT.cxx:43
Muon::NSWMMTP_RawDataProviderToolMT::initialize
StatusCode initialize() override
Definition
NSWMMTP_RawDataProviderToolMT.cxx:11
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition
TrackSystemController.h:46
xAOD::NSWMMTPRDOContainer
NSWMMTPRDOContainer_v1 NSWMMTPRDOContainer
Define the version of the NSW MM RDO container.
Definition
NSWMMTPRDOContainer.h:14
Generated on
for ATLAS Offline Software by
1.17.0