ATLAS Offline Software
NRPC_RawDataProviderTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONRPCCNVTOOLS_MUONNRPCRAWDATAPROVIDERTOOL_H
6 #define MUONRPCCNVTOOLS_MUONNRPCRAWDATAPROVIDERTOOL_H
7 
8 #include <set>
9 
12 #include "GaudiKernel/ServiceHandle.h"
13 #include "GaudiKernel/ToolHandle.h"
18 #include "eformat/Issue.h"
19 #include "eformat/SourceIdentifier.h"
20 
22 
23 
25 // Each ROB contains 6 e-links -> each e-link collects data from 3 TDCs (18 TDCs per ROB)
26 // 1 ROB -> 1 Sector of BIS78
27 //
28 // Bytestream definitions (32 bits words)
29 // word1 -> Number of words from e-link (3 TDCs): 6 (for empty) + 1 per hit
30 // word2 -> e-link ID
31 // word3 -> BCID
32 // word4 -> L1ID + Counter from event counter reset
33 // word5 -> hits (1 per word)
34 // (...)
35 // word(N-1) -> Trailer a0 + counters of hits in BCID+0, BCID+1, BCID+2
36 // word(N) -> counters of hits in BCID+3, BCID+4, BCID+5, BCID+6
37 //
38 //-------------------------------------------------------------------------------------------
39 //
40 // -- BCID decoding (word3)
41 // -- some inversions needed as follows, each letter represents 4 bits:
42 // word: ab|cd|ef|gh
43 // correct word: gh|ef|cd|ab
44 // BCID: g|he|fc|da (last 4 bits "b" not used)
45 //
46 //
47 // -- HITS decoding (word5 and following, when non empty)
48 // -- some inversions needed as follows, each letter represents 4 bits:
49 // word: ab|cd|ef|gh
50 // correct word: gh|ef|cd|ab
51 // TDC: gh
52 // Channel: ef
53 // Time over threshold: cd * 0.4 = ToT (ns)
54 // BCID-hit: a (last 4 bits of real BCID of the hit, may be different from the nominal BCID)
55 // time: b * 1.6 = time (ns)
56 //
58 
59 
60 namespace Muon {
61 
62  class NRPC_RawDataProviderTool : public extends<AthAlgTool, IMuonRawDataProviderTool> {
63  public:
64  NRPC_RawDataProviderTool(const std::string&, const std::string&, const IInterface*);
65 
67  virtual ~NRPC_RawDataProviderTool() = default;
68 
70  virtual StatusCode initialize() override;
71 
72 
74  virtual StatusCode convert(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs) const override;
75  virtual StatusCode convert(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs,
76  const std::vector<IdentifierHash>&) const override;
78  virtual StatusCode convert() const override;
79  virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec) const override;
80  virtual StatusCode convert(const std::vector<uint32_t>& robIds) const override;
81 
82  virtual StatusCode convert(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs,
83  const EventContext& ctx) const override;
84  virtual StatusCode convert(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs,
85  const std::vector<IdentifierHash>&, const EventContext& ctx) const override;
86  virtual StatusCode convert(const EventContext& ctx) const override;
87  virtual StatusCode convert(const std::vector<IdentifierHash>& HashVec, const EventContext& ctx) const override;
88  virtual StatusCode convert(const std::vector<uint32_t>& robIds,
89  const EventContext& ctx) const override;
90 
91  virtual StatusCode convertIntoContainer(const std::vector<const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment*>& vecRobs,
92  xAOD::NRPCRDOContainer& nrpcContainer) const;
93 
95 
96  private:
98 
99  SG::WriteHandleKey<xAOD::NRPCRDOContainer> m_rdoContainerKey{this, "NrpcRdoKey", "NRPCRDO", "WriteHandleKey for Output AOD::NRPCRDOContainer"};
100 
101  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
102 
103  // Rob Data Provider handle
104  ServiceHandle<IROBDataProviderSvc> m_robDataProvider{this, "ROBDataProviderSvc", "ROBDataProviderSvc"};
105 
106  SG::ReadCondHandleKey<MuonNRPC_CablingMap> m_readKey{this, "ReadKey", "MuonNRPC_CablingMap", "Key of MuonNRPC_CablingMap"};
107  };
108 } // namespace Muon
109 
110 #endif
IMuonRawDataProviderTool.h
MuonNRPC_CablingMap.h
Muon::NRPC_RawDataProviderTool::m_readKey
SG::ReadCondHandleKey< MuonNRPC_CablingMap > m_readKey
Definition: NRPC_RawDataProviderTool.h:106
Muon::NRPC_RawDataProviderTool::m_robDataProvider
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Definition: NRPC_RawDataProviderTool.h:104
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
Muon::NRPC_RawDataProviderTool::fillCollections
virtual StatusCode fillCollections(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, xAOD::NRPCRDOContainer &rdoIdc) const
Definition: NRPC_RawDataProviderTool.cxx:122
OFFLINE_FRAGMENTS_NAMESPACE::PointerType
const DataType * PointerType
Definition: RawEvent.h:25
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Muon::NRPC_RawDataProviderTool::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: NRPC_RawDataProviderTool.cxx:18
Muon::NRPC_RawDataProviderTool::m_rdoContainerKey
SG::WriteHandleKey< xAOD::NRPCRDOContainer > m_rdoContainerKey
Definition: NRPC_RawDataProviderTool.h:99
AthAlgTool.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ReadCondHandleKey.h
Muon::NRPC_RawDataProviderTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: NRPC_RawDataProviderTool.h:101
Muon::NRPC_RawDataProviderTool::~NRPC_RawDataProviderTool
virtual ~NRPC_RawDataProviderTool()=default
default destructor
Muon::NRPC_RawDataProviderTool::convert
virtual StatusCode convert() const override
the new ones
Definition: NRPC_RawDataProviderTool.cxx:48
Muon::NRPC_RawDataProviderTool::convertIntoContainer
virtual StatusCode convertIntoContainer(const std::vector< const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment * > &vecRobs, xAOD::NRPCRDOContainer &nrpcContainer) const
Convert method.
Definition: NRPC_RawDataProviderTool.cxx:32
SG::ReadCondHandleKey< MuonNRPC_CablingMap >
Muon::NRPC_RawDataProviderTool
Definition: NRPC_RawDataProviderTool.h:62
Muon::NRPC_RawDataProviderTool::BS
OFFLINE_FRAGMENTS_NAMESPACE::PointerType BS
Definition: NRPC_RawDataProviderTool.h:97
IROBDataProviderSvc.h
IMuonIdHelperSvc.h
Muon::NRPC_RawDataProviderTool::NRPC_RawDataProviderTool
NRPC_RawDataProviderTool(const std::string &, const std::string &, const IInterface *)
Definition: NRPC_RawDataProviderTool.cxx:12
NRPCRDOContainer.h
ServiceHandle< Muon::IMuonIdHelperSvc >