ATLAS Offline Software
RpcRdoToPrepDataToolMT.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONRDOTOPREPDATA_RPCRDOTOPREPDATATOOLMT_H
6 #define MUONRDOTOPREPDATA_RPCRDOTOPREPDATATOOLMT_H
7 
8 #include <set>
9 
17 #include "MuonRDO/RpcCoinMatrix.h"
27 namespace Muon {
28 
30 
32  : public extends<AthAlgTool, IMuonRdoToPrepDataTool> {
33  public:
34  using base_class::base_class;
35  // setup/teardown functions, similar like those for Algorithm/Service
36  virtual StatusCode initialize() override;
37 
38  virtual StatusCode decode(const EventContext& ctx,
39  const std::vector<IdentifierHash>& idVect) const override;
40 
41  virtual StatusCode decode(const EventContext& ctx,
42  const std::vector<uint32_t>& robIds) const override;
43  virtual StatusCode provideEmptyContainer(const EventContext& ctx) const override;
44 
45  protected:
46  struct State {
47  State(const IMuonIdHelperSvc* idHelperSvc);
48 
51 
52 
54 
55  std::vector<std::unique_ptr<RpcPrepDataCollection>> rpcPrepDataCollections{};
56  std::vector<std::unique_ptr<RpcCoinDataCollection>> rpcCoinDataCollections{};
57 
59  std::unique_ptr<RpcPrepDataContainer> prepDataCont{nullptr};
61  std::unique_ptr<RpcCoinDataContainer> coinDataCont{nullptr};
62 
63 
64  // keepTrackOfFullEventDecoding
65  bool m_fullEventDone{false};
66 
67  // the set of already requested and decoded offline (PrepRawData)
68  // collections
69  std::unordered_set<IdentifierHash> m_decodedOfflineHashIds{};
70 
71  // the set of unrequested collections with phi hits stored with
72  // ambiguityFlag > 1
73  std::unordered_set<IdentifierHash> m_ambiguousCollections{};
74 
75  // the set of already requested and decoded ROBs
76  std::unordered_set<uint32_t> m_decodedRobIds{};
77  };
78 
80  StatusCode transferAndRecordPrepData(const EventContext& ctx,
81  State& state) const;
83  StatusCode transferAndRecordCoinData(const EventContext& ctx,
84  State& state) const;
86  StatusCode loadProcessedChambers(const EventContext& ctx, State& state) const;
87 
88  void printMTPrepData(const RpcPrepDataContainer& prepData) const;
89  void printMTCoinData(const RpcCoinDataContainer& prepData) const;
90 
91  // decoding method
92  StatusCode decodeImpl(const EventContext& ctx, State& state,
93  const std::vector<IdentifierHash>& idVect,
94  bool firstTimeInTheEvent) const;
95  StatusCode decodeImpl(const EventContext& ctx, State& state,
96  const std::vector<uint32_t>& robIds,
97  bool firstTimeInTheEvent) const;
98 
99  StatusCode processPad(const EventContext& ctx, State& state,
100  const RpcPad* rdoColl, bool& processingetaview,
101  bool& processingphiview, int& nPrepRawData,
102  const std::vector<IdentifierHash>& idVect,
103  bool doingSecondLoopAmbigColls) const;
104 
107  bool highptpad, // these are inputs
108  bool& triggerHit, unsigned short& threshold,
109  unsigned short& overlap, bool& toSkip) const;
110 
111  StatusCode processNrpcRdo(const EventContext& ctx, State& state) const;
112 
113 
114 
116  Gaudi::Property<float> m_etaphi_coincidenceTime{
117  this, "etaphi_coincidenceTime", 20., "time for phi*eta coincidence"};
119  Gaudi::Property<float> m_overlap_timeTolerance{
120  this, "overlap_timeTolerance", 10.,
121  "tolerance of the timing calibration"};
122  Gaudi::Property<bool> m_producePRDfromTriggerWords{
123  this, "produceRpcCoinDatafromTriggerWords", true,
124  "tore as prd the trigger hits"};
125  Gaudi::Property<bool> m_solvePhiAmbiguities{
126  this, "solvePhiAmbiguities", true,
127  "toggle on/off the removal of phi ambiguities"};
128  Gaudi::Property<bool> m_reduceCablingOverlap{
129  this, "reduceCablingOverlap", true, "toggle on/off the overlap removal"};
130  Gaudi::Property<float> m_timeShift{this, "timeShift", -12.5,
131  "any global time shift ?!"};
132  Gaudi::Property<bool> m_decodeData{
133  this, "DecodeData",
134  true};
135  Gaudi::Property<bool> m_RPCInfoFromDb{this, "RPCInfoFromDb", false};
136 
137  Gaudi::Property<bool> m_isMC{this, "isMC", false};
138 
140  this, "DetectorManagerKey", "MuonDetectorManager",
141  "Key of input MuonDetectorManager condition data"};
142 
144  this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
145 
148  this, "OutputCollection", "RPC_Measurements"};
151  this, "TriggerOutputCollection", "RPC_triggerHits"};
152 
154  "RPCPAD"};
155 
157  this, "NrpcInputCollection", "NRPCRDO"};
158 
159  // Rob Data Provider handle
160  ToolHandle<IRPC_RDO_Decoder> m_rpcRdoDecoderTool{
161  this, "RdoDecoderTool", "Muon::RpcRDO_Decoder"};
162 
164  this, "ReadKey", "RpcCondDbData", "Key of RpcCondDbData"};
166  this, "RpcCablingKey", "RpcCablingCondData", "Key of RpcCablingCondData"};
167  SG::ReadCondHandleKey<RpcCablingMap> m_nRpcCablingKey{this, "NrpcCablingKey","MuonNRPC_CablingMap",
168  "Key of MuonNRPC_CablingMap"};
169 
172  this, "RpcPrdContainerCacheKey", "",
173  "Optional external cache for the RPC PRD container"};
175  this, "RpcCoinDataContainerCacheKey", "",
176  "Optional external cache for the RPC coin data container"};
177 
179  this, "xAODKey", "",
180  "If empty, do not produce xAOD, otherwise this is the key of the output "
181  "xAOD MDT PRD container"};
182 
183  Gaudi::Property<double> m_stripTimeResolution{this, "timeResolution", 0.6 * Gaudi::Units::nanosecond,
184  "Estimated time resolution of the strip readout"};
185 };
186 } // namespace Muon
187 
188 #endif // !ATHEXJOBOPTIONS_CONCRETETOOL_H
IRPC_RDO_Decoder.h
RpcCoinDataContainer.h
Muon::MuonPrepDataContainer
Template for Muon PRD containers (which are basically collections of MuonPrepDataCollections).
Definition: MuonPrepDataContainer.h:42
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Muon::RpcRdoToPrepDataToolMT::m_reduceCablingOverlap
Gaudi::Property< bool > m_reduceCablingOverlap
Definition: RpcRdoToPrepDataToolMT.h:128
MuonPrepDataCollection_Cache.h
SG::UpdateHandleKey
Property holding a SG store/key/clid from which an UpdateHandle is made.
Definition: UpdateHandleKey.h:40
RpcCondDbData.h
Muon::RpcRdoToPrepDataToolMT::provideEmptyContainer
virtual StatusCode provideEmptyContainer(const EventContext &ctx) const override
Definition: RpcRdoToPrepDataToolMT.cxx:149
Muon::RpcRdoToPrepDataToolMT::State::m_fullEventDone
bool m_fullEventDone
Definition: RpcRdoToPrepDataToolMT.h:65
RpcCablingMap.h
Muon::RpcRdoToPrepDataToolMT::processPad
StatusCode processPad(const EventContext &ctx, State &state, const RpcPad *rdoColl, bool &processingetaview, bool &processingphiview, int &nPrepRawData, const std::vector< IdentifierHash > &idVect, bool doingSecondLoopAmbigColls) const
Definition: RpcRdoToPrepDataToolMT.cxx:541
Muon::MuonCoinDataCollection
Definition: MuonCoinDataCollection.h:25
Muon::RpcRdoToPrepDataToolMT::initialize
virtual StatusCode initialize() override
Definition: RpcRdoToPrepDataToolMT.cxx:49
Muon::RpcRdoToPrepDataToolMT::m_stripTimeResolution
Gaudi::Property< double > m_stripTimeResolution
Definition: RpcRdoToPrepDataToolMT.h:183
Muon::RpcRdoToPrepDataToolMT::m_rdoNrpcContainerKey
SG::ReadHandleKey< xAOD::NRPCRDOContainer > m_rdoNrpcContainerKey
Definition: RpcRdoToPrepDataToolMT.h:156
Muon::RpcRdoToPrepDataToolMT::m_RPCInfoFromDb
Gaudi::Property< bool > m_RPCInfoFromDb
correct time prd from cool db
Definition: RpcRdoToPrepDataToolMT.h:135
Muon::RpcRdoToPrepDataToolMT::printMTPrepData
void printMTPrepData(const RpcPrepDataContainer &prepData) const
Muon::RpcRdoToPrepDataToolMT
Definition: RpcRdoToPrepDataToolMT.h:32
Muon::RpcRdoToPrepDataToolMT::decode
virtual StatusCode decode(const EventContext &ctx, const std::vector< IdentifierHash > &idVect) const override
This code is thread-safe as we will propagate local thread collection contents to a thread-safe one.
Definition: RpcRdoToPrepDataToolMT.cxx:116
python.SystemOfUnits.nanosecond
float nanosecond
Definition: SystemOfUnits.py:134
Muon::RpcRdoToPrepDataToolMT::State::m_idHelperSvc
const IMuonIdHelperSvc * m_idHelperSvc
Definition: RpcRdoToPrepDataToolMT.h:53
MuonPrepDataContainer.h
SG::ReadHandleKey< RpcPadContainer >
Muon::RpcRdoToPrepDataToolMT::State::getPrepCollection
RpcPrepDataCollection * getPrepCollection(const Identifier &id)
Definition: RpcRdoToPrepDataToolMT.cxx:27
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::RpcRdoToPrepDataToolMT::decodeImpl
StatusCode decodeImpl(const EventContext &ctx, State &state, const std::vector< IdentifierHash > &idVect, bool firstTimeInTheEvent) const
Definition: RpcRdoToPrepDataToolMT.cxx:257
Muon::RpcRdoToPrepDataToolMT::m_xAODKey
SG::WriteHandleKey< xAOD::RpcStripContainer > m_xAODKey
Definition: RpcRdoToPrepDataToolMT.h:178
RpcStripContainer.h
Muon::RpcRdoToPrepDataToolMT::m_rpcCoinDataContainerKey
SG::WriteHandleKey< RpcCoinDataContainer > m_rpcCoinDataContainerKey
RpcCoinData containers.
Definition: RpcRdoToPrepDataToolMT.h:150
Muon::RpcRdoToPrepDataToolMT::m_coindataContainerCacheKey
SG::UpdateHandleKey< RpcCoinDataCollection_Cache > m_coindataContainerCacheKey
Definition: RpcRdoToPrepDataToolMT.h:174
Muon::RpcRdoToPrepDataToolMT::m_timeShift
Gaudi::Property< float > m_timeShift
Definition: RpcRdoToPrepDataToolMT.h:130
Muon::RpcRdoToPrepDataToolMT::m_rpcReadKey
SG::ReadCondHandleKey< RpcCablingCondData > m_rpcReadKey
Definition: RpcRdoToPrepDataToolMT.h:165
Muon::RpcRdoToPrepDataToolMT::State
Definition: RpcRdoToPrepDataToolMT.h:46
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
Muon::RpcRdoToPrepDataToolMT::m_prdContainerCacheKey
SG::UpdateHandleKey< RpcPrepDataCollection_Cache > m_prdContainerCacheKey
This is the key for the cache for the MDT PRD containers, can be empty.
Definition: RpcRdoToPrepDataToolMT.h:171
Muon::RpcRdoToPrepDataToolMT::State::m_decodedRobIds
std::unordered_set< uint32_t > m_decodedRobIds
Definition: RpcRdoToPrepDataToolMT.h:76
Muon::RpcRdoToPrepDataToolMT::processTriggerHitHypothesis
void processTriggerHitHypothesis(RpcCoinMatrix::const_iterator itD, RpcCoinMatrix::const_iterator itD_end, bool highptpad, bool &triggerHit, unsigned short &threshold, unsigned short &overlap, bool &toSkip) const
Definition: RpcRdoToPrepDataToolMT.cxx:993
IMuonRdoToPrepDataTool.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Muon::RpcRdoToPrepDataToolMT::State::State
State(const IMuonIdHelperSvc *idHelperSvc)
Definition: RpcRdoToPrepDataToolMT.cxx:21
MuonTrigCoinData_Cache.h
Muon::RpcRdoToPrepDataToolMT::m_rpcPrepDataContainerKey
SG::WriteHandleKey< RpcPrepDataContainer > m_rpcPrepDataContainerKey
RpcPrepData containers.
Definition: RpcRdoToPrepDataToolMT.h:147
MuonR4::State
CalibratedSpacePoint::State State
Definition: SpacePointCalibrator.cxx:40
AthAlgTool.h
Muon::RpcRdoToPrepDataToolMT::State::rpcPrepDataCollections
std::vector< std::unique_ptr< RpcPrepDataCollection > > rpcPrepDataCollections
Definition: RpcRdoToPrepDataToolMT.h:55
Muon::RpcRdoToPrepDataToolMT::State::coinDataCont
std::unique_ptr< RpcCoinDataContainer > coinDataCont
Pointer of the coin container stored in store gate.
Definition: RpcRdoToPrepDataToolMT.h:61
Muon::MuonPrepDataCollection
Template to hold collections of MuonPrepRawData objects.
Definition: MuonPrepDataCollection.h:46
Muon::RpcRdoToPrepDataToolMT::m_muDetMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_muDetMgrKey
Definition: RpcRdoToPrepDataToolMT.h:139
ReadCondHandleKey.h
Muon::RpcRdoToPrepDataToolMT::transferAndRecordPrepData
StatusCode transferAndRecordPrepData(const EventContext &ctx, State &state) const
Stores the PrepData container into store gate.
Definition: RpcRdoToPrepDataToolMT.cxx:157
Muon::RpcRdoToPrepDataToolMT::State::prepDataCont
std::unique_ptr< RpcPrepDataContainer > prepDataCont
Pointer of the prep container stored in store gate.
Definition: RpcRdoToPrepDataToolMT.h:59
Muon::MuonCoinDataContainer
Definition: MuonCoinDataContainer.h:32
Muon::RpcRdoToPrepDataToolMT::m_readKey
SG::ReadCondHandleKey< RpcCondDbData > m_readKey
Definition: RpcRdoToPrepDataToolMT.h:163
Muon::RpcRdoToPrepDataToolMT::m_etaphi_coincidenceTime
Gaudi::Property< float > m_etaphi_coincidenceTime
3 ns is the resolution of the RPC readout electronics
Definition: RpcRdoToPrepDataToolMT.h:116
Muon::RpcRdoToPrepDataToolMT::transferAndRecordCoinData
StatusCode transferAndRecordCoinData(const EventContext &ctx, State &state) const
Stores the CoinData container into store gate.
Definition: RpcRdoToPrepDataToolMT.cxx:218
Muon::RpcRdoToPrepDataToolMT::State::m_ambiguousCollections
std::unordered_set< IdentifierHash > m_ambiguousCollections
Definition: RpcRdoToPrepDataToolMT.h:73
Muon::RpcRdoToPrepDataToolMT::m_producePRDfromTriggerWords
Gaudi::Property< bool > m_producePRDfromTriggerWords
Definition: RpcRdoToPrepDataToolMT.h:122
threshold
Definition: chainparser.cxx:74
Muon::RpcRdoToPrepDataToolMT::m_decodeData
Gaudi::Property< bool > m_decodeData
toggle on/off the decoding of RPC RDO into RpcPerpData
Definition: RpcRdoToPrepDataToolMT.h:132
Muon::RpcRdoToPrepDataToolMT::printMTCoinData
void printMTCoinData(const RpcCoinDataContainer &prepData) const
RpcPad
Definition: RpcPad.h:21
MuonDetectorManager.h
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
Muon::RpcRdoToPrepDataToolMT::m_overlap_timeTolerance
Gaudi::Property< float > m_overlap_timeTolerance
Definition: RpcRdoToPrepDataToolMT.h:119
Muon::RpcRdoToPrepDataToolMT::m_idHelperSvc
ServiceHandle< IMuonIdHelperSvc > m_idHelperSvc
Definition: RpcRdoToPrepDataToolMT.h:143
RpcCablingCondData.h
Muon::RpcRdoToPrepDataToolMT::m_rpcRdoDecoderTool
ToolHandle< IRPC_RDO_Decoder > m_rpcRdoDecoderTool
Definition: RpcRdoToPrepDataToolMT.h:160
Muon::RpcRdoToPrepDataToolMT::State::rpcCoinDataCollections
std::vector< std::unique_ptr< RpcCoinDataCollection > > rpcCoinDataCollections
Definition: RpcRdoToPrepDataToolMT.h:56
Muon::RpcRdoToPrepDataToolMT::State::getCoinCollection
RpcCoinDataCollection * getCoinCollection(const Identifier &id)
Definition: RpcRdoToPrepDataToolMT.cxx:37
Muon::IMuonIdHelperSvc
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
Definition: IMuonIdHelperSvc.h:27
Muon::RpcRdoToPrepDataToolMT::loadProcessedChambers
StatusCode loadProcessedChambers(const EventContext &ctx, State &state) const
Load the hashes of the processed chambers.
Definition: RpcRdoToPrepDataToolMT.cxx:82
RpcPadContainer.h
Muon::RpcRdoToPrepDataToolMT::State::m_decodedOfflineHashIds
std::unordered_set< IdentifierHash > m_decodedOfflineHashIds
Definition: RpcRdoToPrepDataToolMT.h:69
Muon::RpcRdoToPrepDataToolMT::m_nRpcCablingKey
SG::ReadCondHandleKey< RpcCablingMap > m_nRpcCablingKey
Definition: RpcRdoToPrepDataToolMT.h:167
Muon::RpcRdoToPrepDataToolMT::m_rdoContainerKey
SG::ReadHandleKey< RpcPadContainer > m_rdoContainerKey
Definition: RpcRdoToPrepDataToolMT.h:153
Muon::RpcRdoToPrepDataToolMT::processNrpcRdo
StatusCode processNrpcRdo(const EventContext &ctx, State &state) const
15 ns should be the max.diff.
Definition: RpcRdoToPrepDataToolMT.cxx:907
Muon::RpcRdoToPrepDataToolMT::m_solvePhiAmbiguities
Gaudi::Property< bool > m_solvePhiAmbiguities
Definition: RpcRdoToPrepDataToolMT.h:125
Muon::RpcRdoToPrepDataToolMT::m_isMC
Gaudi::Property< bool > m_isMC
Definition: RpcRdoToPrepDataToolMT.h:137
IMuonIdHelperSvc.h
RpcCoinMatrix.h
NRPCRDOContainer.h
ServiceHandle
Definition: ClusterMakerTool.h:37
Identifier
Definition: IdentifierFieldParser.cxx:14