ATLAS Offline Software
RpcRdoToPrepDataToolMT.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 #include <string>
10 
12 #include "GaudiKernel/ServiceHandle.h"
13 #include "GaudiKernel/ToolHandle.h"
20 #include "MuonRDO/RpcCoinMatrix.h"
31 namespace Muon {
32 
34 
36  : public extends<AthAlgTool, IMuonRdoToPrepDataTool> {
37  public:
38  RpcRdoToPrepDataToolMT(const std::string&, const std::string&,
39  const IInterface*);
40 
41  // setup/teardown functions, similar like those for Algorithm/Service
42  virtual StatusCode initialize() override;
43 
44  virtual StatusCode decode(const EventContext& ctx,
45  const std::vector<IdentifierHash>& idVect) const override;
46 
47  virtual StatusCode decode(const EventContext& ctx,
48  const std::vector<uint32_t>& robIds) const override;
49  virtual StatusCode provideEmptyContainer(const EventContext& ctx) const override;
50 
51  protected:
52  struct State;
53 
55  StatusCode transferAndRecordPrepData(const EventContext& ctx,
56  State& state) const;
58  StatusCode transferAndRecordCoinData(const EventContext& ctx,
59  State& state) const;
61  StatusCode loadProcessedChambers(const EventContext& ctx, State& state) const;
62 
63  void printMTPrepData(const Muon::RpcPrepDataContainer& prepData) const;
64  void printMTCoinData(const Muon::RpcCoinDataContainer& prepData) const;
65 
66  // decoding method
67  StatusCode decodeImpl(const EventContext& ctx, State& state,
68  const std::vector<IdentifierHash>& idVect,
69  bool firstTimeInTheEvent) const;
70  StatusCode decodeImpl(const EventContext& ctx, State& state,
71  const std::vector<uint32_t>& robIds,
72  bool firstTimeInTheEvent) const;
73 
74  StatusCode processPad(const EventContext& ctx, State& state,
75  const RpcPad* rdoColl, bool& processingetaview,
76  bool& processingphiview, int& nPrepRawData,
77  const std::vector<IdentifierHash>& idVect,
78  bool doingSecondLoopAmbigColls) const;
79 
82  bool highptpad, // these are inputs
83  bool& triggerHit, unsigned short& threshold,
84  unsigned short& overlap, bool& toSkip) const;
85 
86  StatusCode processNrpcRdo(const EventContext& ctx, State& state) const;
87 
88  struct State {
89  State(const RpcIdHelper& idHelper,
91  const EventContext& ctx);
92 
94  MsgStream& msg);
96  MsgStream& msg);
97 
99 
100  std::map<IdentifierHash, std::unique_ptr<Muon::RpcPrepDataCollection>>
102  std::map<IdentifierHash, std::unique_ptr<Muon::RpcCoinDataCollection>>
104 
106  std::unique_ptr<Muon::RpcPrepDataContainer> m_prepDataCont{nullptr};
108  std::unique_ptr<Muon::RpcCoinDataContainer> m_coinDataCont{nullptr};
111 
112  // keepTrackOfFullEventDecoding
113  bool m_fullEventDone{false};
114 
115  // the set of already requested and decoded offline (PrepRawData)
116  // collections
117  std::set<IdentifierHash> m_decodedOfflineHashIds{};
118 
119  // the set of unrequested collections with phi hits stored with
120  // ambiguityFlag > 1
121  std::set<IdentifierHash> m_ambiguousCollections{};
122 
123  // the set of already requested and decoded ROBs
124  std::set<uint32_t> m_decodedRobIds{};
125 
127  };
128 
130  Gaudi::Property<float> m_etaphi_coincidenceTime{
131  this, "etaphi_coincidenceTime", 20., "time for phi*eta coincidence"};
133  Gaudi::Property<float> m_overlap_timeTolerance{
134  this, "overlap_timeTolerance", 10.,
135  "tolerance of the timing calibration"};
136  Gaudi::Property<bool> m_producePRDfromTriggerWords{
137  this, "produceRpcCoinDatafromTriggerWords", true,
138  "tore as prd the trigger hits"};
139  Gaudi::Property<bool> m_solvePhiAmbiguities{
140  this, "solvePhiAmbiguities", true,
141  "toggle on/off the removal of phi ambiguities"};
142  Gaudi::Property<bool> m_reduceCablingOverlap{
143  this, "reduceCablingOverlap", true, "toggle on/off the overlap removal"};
144  Gaudi::Property<float> m_timeShift{this, "timeShift", -12.5,
145  "any global time shift ?!"};
146  Gaudi::Property<bool> m_decodeData{
147  this, "DecodeData",
148  true};
149  Gaudi::Property<bool> m_RPCInfoFromDb{
150  this, "RPCInfoFromDb", false};
151  // end of configurable options
152 
154  this, "DetectorManagerKey", "MuonDetectorManager",
155  "Key of input MuonDetectorManager condition data"};
156 
158  this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
159 
162  this, "OutputCollection", "RPC_Measurements"};
165  this, "TriggerOutputCollection", "RPC_triggerHits"};
166 
168  "RPCPAD"};
169 
171  this, "NrpcInputCollection", "NRPCRDO"};
172 
173  // Rob Data Provider handle
174  ToolHandle<Muon::IRPC_RDO_Decoder> m_rpcRdoDecoderTool{
175  this, "RdoDecoderTool", "Muon::RpcRDO_Decoder"};
176 
178  this, "ReadKey", "RpcCondDbData", "Key of RpcCondDbData"};
180  this, "RpcCablingKey", "RpcCablingCondData", "Key of RpcCablingCondData"};
182  "EventInfo", "event info key"};
184  this, "NrpcCablingKey", "MuonNRPC_CablingMap",
185  "Key of MuonNRPC_CablingMap"};
186 
189  this, "RpcPrdContainerCacheKey", "",
190  "Optional external cache for the RPC PRD container"};
192  this, "RpcCoinDataContainerCacheKey", "",
193  "Optional external cache for the RPC coin data container"};
194 
196  this, "xAODKey", "",
197  "If empty, do not produce xAOD, otherwise this is the key of the output "
198  "xAOD MDT PRD container"};
199 };
200 } // namespace Muon
201 
202 #endif // !ATHEXJOBOPTIONS_CONCRETETOOL_H
Muon::RpcRdoToPrepDataToolMT::m_rpcCoinDataContainerKey
SG::WriteHandleKey< Muon::RpcCoinDataContainer > m_rpcCoinDataContainerKey
RpcCoinData containers.
Definition: RpcRdoToPrepDataToolMT.h:164
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:142
Muon::RpcRdoToPrepDataToolMT::State::getCoinCollection
Muon::RpcCoinDataCollection * getCoinCollection(const IdentifierHash &hash, MsgStream &msg)
Definition: RpcRdoToPrepDataToolMT.cxx:53
Muon::RpcRdoToPrepDataToolMT::State::m_decodedRobIds
std::set< uint32_t > m_decodedRobIds
Definition: RpcRdoToPrepDataToolMT.h:124
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::State::m_decodedOfflineHashIds
std::set< IdentifierHash > m_decodedOfflineHashIds
Definition: RpcRdoToPrepDataToolMT.h:117
Muon::RpcRdoToPrepDataToolMT::provideEmptyContainer
virtual StatusCode provideEmptyContainer(const EventContext &ctx) const override
Definition: RpcRdoToPrepDataToolMT.cxx:192
Muon::RpcRdoToPrepDataToolMT::State::m_fullEventDone
bool m_fullEventDone
Definition: RpcRdoToPrepDataToolMT.h:113
Muon::RpcRdoToPrepDataToolMT::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: RpcRdoToPrepDataToolMT.h:157
Muon::RpcRdoToPrepDataToolMT::State::m_rpcPrepDataCollections
std::map< IdentifierHash, std::unique_ptr< Muon::RpcPrepDataCollection > > m_rpcPrepDataCollections
Definition: RpcRdoToPrepDataToolMT.h:101
Muon::RpcRdoToPrepDataToolMT::State::m_xaodHandle
SG::WriteHandle< xAOD::RpcStripContainer > m_xaodHandle
Handle to the xAOD container.
Definition: RpcRdoToPrepDataToolMT.h:110
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:592
MuonNRPC_CablingMap.h
Muon::MuonCoinDataCollection
Definition: MuonCoinDataCollection.h:25
Muon::RpcRdoToPrepDataToolMT::initialize
virtual StatusCode initialize() override
Definition: RpcRdoToPrepDataToolMT.cxx:76
Muon::RpcRdoToPrepDataToolMT::printMTCoinData
void printMTCoinData(const Muon::RpcCoinDataContainer &prepData) const
checkFileSG.toSkip
def toSkip(inpName)
Definition: checkFileSG.py:22
Muon::RpcRdoToPrepDataToolMT::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: RpcRdoToPrepDataToolMT.h:181
Muon::RpcRdoToPrepDataToolMT::m_rdoNrpcContainerKey
SG::ReadHandleKey< xAOD::NRPCRDOContainer > m_rdoNrpcContainerKey
Definition: RpcRdoToPrepDataToolMT.h:170
Muon::RpcRdoToPrepDataToolMT::m_RPCInfoFromDb
Gaudi::Property< bool > m_RPCInfoFromDb
correct time prd from cool db
Definition: RpcRdoToPrepDataToolMT.h:149
Muon::RpcRdoToPrepDataToolMT
Definition: RpcRdoToPrepDataToolMT.h:36
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:157
Muon::RpcRdoToPrepDataToolMT::State::m_rpcIdHelper
const RpcIdHelper & m_rpcIdHelper
Definition: RpcRdoToPrepDataToolMT.h:98
MuonPrepDataContainer.h
SG::ReadHandleKey< RpcPadContainer >
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::RpcRdoToPrepDataToolMT::State::State
State(const RpcIdHelper &idHelper, const SG::WriteHandleKey< xAOD::RpcStripContainer > &key, const EventContext &ctx)
Definition: RpcRdoToPrepDataToolMT.cxx:20
Muon::RpcRdoToPrepDataToolMT::decodeImpl
StatusCode decodeImpl(const EventContext &ctx, State &state, const std::vector< IdentifierHash > &idVect, bool firstTimeInTheEvent) const
Definition: RpcRdoToPrepDataToolMT.cxx:272
RpcIdHelper
Definition: RpcIdHelper.h:51
Muon::RpcRdoToPrepDataToolMT::m_xAODKey
SG::WriteHandleKey< xAOD::RpcStripContainer > m_xAODKey
Definition: RpcRdoToPrepDataToolMT.h:195
RpcStripContainer.h
Muon::RpcRdoToPrepDataToolMT::printMTPrepData
void printMTPrepData(const Muon::RpcPrepDataContainer &prepData) const
Muon::RpcRdoToPrepDataToolMT::m_nRpcCablingKey
SG::ReadCondHandleKey< MuonNRPC_CablingMap > m_nRpcCablingKey
Definition: RpcRdoToPrepDataToolMT.h:183
Muon::RpcRdoToPrepDataToolMT::State::m_ambiguousCollections
std::set< IdentifierHash > m_ambiguousCollections
Definition: RpcRdoToPrepDataToolMT.h:121
Muon::RpcRdoToPrepDataToolMT::m_coindataContainerCacheKey
SG::UpdateHandleKey< RpcCoinDataCollection_Cache > m_coindataContainerCacheKey
Definition: RpcRdoToPrepDataToolMT.h:191
Muon::RpcRdoToPrepDataToolMT::m_timeShift
Gaudi::Property< float > m_timeShift
Definition: RpcRdoToPrepDataToolMT.h:144
Muon::RpcRdoToPrepDataToolMT::m_rpcReadKey
SG::ReadCondHandleKey< RpcCablingCondData > m_rpcReadKey
Definition: RpcRdoToPrepDataToolMT.h:179
Muon::RpcRdoToPrepDataToolMT::RpcRdoToPrepDataToolMT
RpcRdoToPrepDataToolMT(const std::string &, const std::string &, const IInterface *)
Definition: RpcRdoToPrepDataToolMT.cxx:70
Muon::RpcRdoToPrepDataToolMT::State
15 ns should be the max.diff.
Definition: RpcRdoToPrepDataToolMT.h:88
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:188
Muon::RpcRdoToPrepDataToolMT::State::getPrepCollection
Muon::RpcPrepDataCollection * getPrepCollection(const IdentifierHash &hash, MsgStream &msg)
Definition: RpcRdoToPrepDataToolMT.cxx:37
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:1201
IMuonRdoToPrepDataTool.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonTrigCoinData_Cache.h
AthAlgTool.h
Muon::RpcRdoToPrepDataToolMT::State::m_prepDataCont
std::unique_ptr< Muon::RpcPrepDataContainer > m_prepDataCont
Pointer of the prep container stored in store gate.
Definition: RpcRdoToPrepDataToolMT.h:106
Muon::MuonPrepDataCollection
Template to hold collections of MuonPrepRawData objects.
Definition: MuonPrepDataCollection.h:46
Muon::RpcRdoToPrepDataToolMT::m_rpcPrepDataContainerKey
SG::WriteHandleKey< Muon::RpcPrepDataContainer > m_rpcPrepDataContainerKey
RpcPrepData containers.
Definition: RpcRdoToPrepDataToolMT.h:161
Muon::RpcRdoToPrepDataToolMT::m_muDetMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_muDetMgrKey
Definition: RpcRdoToPrepDataToolMT.h:153
ReadCondHandleKey.h
Muon::RpcRdoToPrepDataToolMT::transferAndRecordPrepData
StatusCode transferAndRecordPrepData(const EventContext &ctx, State &state) const
Stores the PrepData container into store gate.
Definition: RpcRdoToPrepDataToolMT.cxx:201
Muon::RpcRdoToPrepDataToolMT::State::m_rpcCoinDataCollections
std::map< IdentifierHash, std::unique_ptr< Muon::RpcCoinDataCollection > > m_rpcCoinDataCollections
Definition: RpcRdoToPrepDataToolMT.h:103
Muon::RpcRdoToPrepDataToolMT::State::m_modContext
const IdContext m_modContext
Definition: RpcRdoToPrepDataToolMT.h:126
Muon::MuonCoinDataContainer
Definition: MuonCoinDataContainer.h:32
Muon::RpcRdoToPrepDataToolMT::m_readKey
SG::ReadCondHandleKey< RpcCondDbData > m_readKey
Definition: RpcRdoToPrepDataToolMT.h:177
Muon::RpcRdoToPrepDataToolMT::m_etaphi_coincidenceTime
Gaudi::Property< float > m_etaphi_coincidenceTime
3 ns is the resolution of the RPC readout electronics
Definition: RpcRdoToPrepDataToolMT.h:130
Muon::RpcRdoToPrepDataToolMT::transferAndRecordCoinData
StatusCode transferAndRecordCoinData(const EventContext &ctx, State &state) const
Stores the CoinData container into store gate.
Definition: RpcRdoToPrepDataToolMT.cxx:233
Muon::RpcRdoToPrepDataToolMT::m_producePRDfromTriggerWords
Gaudi::Property< bool > m_producePRDfromTriggerWords
Definition: RpcRdoToPrepDataToolMT.h:136
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:146
RpcPad
Definition: RpcPad.h:21
MuonDetectorManager.h
EventInfo.h
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
Muon::RpcRdoToPrepDataToolMT::State::m_coinDataCont
std::unique_ptr< Muon::RpcCoinDataContainer > m_coinDataCont
Pointer of the coin container stored in store gate.
Definition: RpcRdoToPrepDataToolMT.h:108
Muon::RpcRdoToPrepDataToolMT::m_overlap_timeTolerance
Gaudi::Property< float > m_overlap_timeTolerance
Definition: RpcRdoToPrepDataToolMT.h:133
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
RpcCablingCondData.h
MuonIdHelper::module_context
IdContext module_context() const
id for module
Definition: MuonIdHelper.cxx:735
Muon::RpcRdoToPrepDataToolMT::loadProcessedChambers
StatusCode loadProcessedChambers(const EventContext &ctx, State &state) const
Load the hashes of the processed chambers.
Definition: RpcRdoToPrepDataToolMT.cxx:115
RpcPadContainer.h
Muon::RpcRdoToPrepDataToolMT::m_rpcRdoDecoderTool
ToolHandle< Muon::IRPC_RDO_Decoder > m_rpcRdoDecoderTool
Definition: RpcRdoToPrepDataToolMT.h:174
IdentifierHash
Definition: IdentifierHash.h:38
Muon::RpcRdoToPrepDataToolMT::m_rdoContainerKey
SG::ReadHandleKey< RpcPadContainer > m_rdoContainerKey
Definition: RpcRdoToPrepDataToolMT.h:167
IdContext
class IdContext
Definition: IdContext.h:34
Muon::RpcRdoToPrepDataToolMT::processNrpcRdo
StatusCode processNrpcRdo(const EventContext &ctx, State &state) const
Definition: RpcRdoToPrepDataToolMT.cxx:1112
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
Muon::RpcRdoToPrepDataToolMT::m_solvePhiAmbiguities
Gaudi::Property< bool > m_solvePhiAmbiguities
Definition: RpcRdoToPrepDataToolMT.h:139
IMuonIdHelperSvc.h
RpcCoinMatrix.h
NRPCRDOContainer.h
ServiceHandle< Muon::IMuonIdHelperSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37