12 return StatusCode::SUCCESS;
19 ATH_MSG_DEBUG(
"Retrieved " << rdoContainer->size() <<
" MDT RDOs.");
22 const unsigned int hashMax =
m_idHelperSvc->mdtIdHelper().module_hash_max();
23 ATH_CHECK(wh_mdtDigit.
record(std::make_unique<MdtDigitContainer>(hashMax)));
28 digitMap.resize(hashMax);
29 for (
const MdtCsm* csmColl : *rdoContainer) {
33 for (std::unique_ptr<MdtDigitCollection>&collection: digitMap) {
34 if (!collection)
continue;
36 ATH_CHECK(wh_mdtDigit->addCollection(collection.release(), hash));
38 return StatusCode::SUCCESS;
42 if (rdoColl.
empty()) {
43 return StatusCode::SUCCESS;
47 uint16_t subdetId = rdoColl.
SubDetId();
48 uint16_t mrodId = rdoColl.
MrodId();
49 uint16_t csmId = rdoColl.
CsmId();
55 std::unique_ptr<MdtDigit> newDigit{
m_mdtRdoDecoderTool->getDigit(ctx, *amtHit, subdetId, mrodId, csmId)};
65 std::unique_ptr<MdtDigitCollection>& outCollection = digitMap[coll_hash];
67 outCollection = std::make_unique<MdtDigitCollection>(
m_idHelperSvc->chamberId(newDigit->identify()), coll_hash);
69 outCollection->push_back(std::move(newDigit));
71 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
This is a "hash" representation of an Identifier.
MDT RDO's : data from a single channel of an AMT Atlas Muon TDC.
MDT RDOs : Chamber Service Module, container of AmtHits of a single Mdt chamber.
uint16_t CsmId() const
Returns the CSM online id (online identifier inside a MROD)
uint16_t MrodId() const
Returns the MROD id from the CSM header.
uint16_t SubDetId() const
Returns the sub-detector Id.
ToolHandle< Muon::IMDT_RDO_Decoder > m_mdtRdoDecoderTool
virtual StatusCode initialize() override final
virtual StatusCode execute(const EventContext &ctx) const override final
SG::WriteHandleKey< MdtDigitContainer > m_mdtDigitKey
SG::ReadHandleKey< MdtCsmContainer > m_mdtRdoKey
std::vector< std::unique_ptr< MdtDigitCollection > > DigitCollection
StatusCode decodeMdt(const EventContext &ctx, const MdtCsm &rdoCollection, DigitCollection &digitContainer) const
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
bool isPresent() const
Is the referenced object present in SG?
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.