ATLAS Offline Software
Loading...
Searching...
No Matches
MuonLayerHoughAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "MuonLayerHoughAlg.h"
6
15
17 if (m_layerTool.empty()) {
18 ATH_MSG_ERROR("MuonLayerScanTool property is empty");
19 return StatusCode::FAILURE;
20 }
21 ATH_CHECK(m_layerTool.retrieve());
22 ATH_CHECK(m_printer.retrieve());
23 ATH_CHECK(m_keyRpc.initialize(!m_keyRpc.empty()));
24 ATH_CHECK(m_keyMdt.initialize(!m_keyMdt.empty()));
25 ATH_CHECK(m_keyTgc.initialize(!m_keyTgc.empty()));
26 ATH_CHECK(m_keyCsc.initialize(!m_keyCsc.empty()));
27 ATH_CHECK(m_keysTgc.initialize(!m_keysTgc.empty()));
28 ATH_CHECK(m_keyMM.initialize(!m_keyMM.empty()));
29 ATH_CHECK(m_combis.initialize());
31
32 return StatusCode::SUCCESS;
33}
34
35StatusCode MuonLayerHoughAlg::execute(const EventContext& ctx) const {
36 const Muon::RpcPrepDataContainer* rpcPrds{nullptr};
37 const Muon::MdtPrepDataContainer* mdtPrds{nullptr};
38 const Muon::TgcPrepDataContainer* tgcPrds{nullptr};
39 const Muon::CscPrepDataContainer* cscPrds{nullptr};
40 const Muon::sTgcPrepDataContainer* stgcPrds{nullptr};
41 const Muon::MMPrepDataContainer* mmPrds{nullptr};
42 ATH_CHECK(SG::get( mdtPrds, m_keyMdt, ctx));
43 ATH_CHECK(SG::get( rpcPrds, m_keyRpc, ctx));
44 ATH_CHECK(SG::get( tgcPrds, m_keyTgc, ctx));
45 ATH_CHECK(SG::get( cscPrds, m_keyCsc, ctx));
46 ATH_CHECK(SG::get( stgcPrds, m_keysTgc, ctx));
47 ATH_CHECK(SG::get( mmPrds, m_keyMM, ctx));
48
49
50
51 ATH_MSG_VERBOSE("calling layer tool ");
52 auto [combis, houghDataPerSectorVec] = m_layerTool->find(mdtPrds, cscPrds, tgcPrds, rpcPrds, stgcPrds, mmPrds, ctx);
53 SG::WriteHandle Handle(m_combis, ctx);
54 if (combis) {
55 ATH_CHECK(Handle.record(std::move(combis)));
56 } else {
57 ATH_MSG_VERBOSE("CombinationCollection " << m_combis << " is empty, recording");
58 ATH_CHECK(Handle.record(std::make_unique<MuonPatternCombinationCollection>()));
59 }
60
61 // write hough data to SG
63 if (houghDataPerSectorVec) {
64 ATH_CHECK(handle.record(std::move(houghDataPerSectorVec)));
65 } else {
66 ATH_MSG_VERBOSE("HoughDataPerSectorVec " << m_houghDataPerSectorVecKey << " is empty, recording");
67 ATH_CHECK(handle.record(std::make_unique<Muon::HoughDataPerSectorVec>()));
68 }
69 return StatusCode::SUCCESS;
70} // execute
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_VERBOSE(x,...)
Handle class for reading from StoreGate.
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_keyRpc
SG::WriteHandleKey< Muon::HoughDataPerSectorVec > m_houghDataPerSectorVecKey
SG::WriteHandleKey< MuonPatternCombinationCollection > m_combis
virtual StatusCode execute(const EventContext &ctx) const override
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_keyMM
ToolHandle< Muon::IMuonHoughPatternFinderTool > m_layerTool
SG::ReadHandleKey< Muon::MdtPrepDataContainer > m_keyMdt
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_keyTgc
SG::ReadHandleKey< Muon::CscPrepDataContainer > m_keyCsc
virtual StatusCode initialize() override
SG::ReadHandleKey< Muon::sTgcPrepDataContainer > m_keysTgc
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
MuonPrepDataContainerT< RpcPrepData > RpcPrepDataContainer
MuonPrepDataContainerT< TgcPrepData > TgcPrepDataContainer
MuonPrepDataContainerT< MdtPrepData > MdtPrepDataContainer
MuonPrepDataContainerT< sTgcPrepData > sTgcPrepDataContainer
MuonPrepDataContainerT< MMPrepData > MMPrepDataContainer
MuonPrepDataContainerT< CscPrepData > CscPrepDataContainer
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.