ATLAS Offline Software
RpcCablingData.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONCABLINGDATA_RPCCABLINGDATA_H
5 #define MUONCABLINGDATA_RPCCABLINGDATA_H
6 
7 
8 #include <cstdint>
9 #include <iostream>
10 #include <set>
15 #define CABLING_OPERATORS(CL_NAME) \
18  bool operator<(const CL_NAME& other) const { return m_cache.hash < other.m_cache.hash; } \
19  bool operator==(const CL_NAME& other) const {return m_cache.hash == other.m_cache.hash; } \
20  bool operator!=(const CL_NAME& other) const { return m_cache.hash != other.m_cache.hash; } \
21  bool operator!() const {return !m_cache.hash;} \
22  \
23  CL_NAME() = default; \
24  CL_NAME(const CL_NAME& other): CL_NAME{} { \
25  m_cache.hash = other.m_cache.hash; \
26  } \
27  CL_NAME& operator=(const CL_NAME& other) { \
28  if (&other != this) m_cache.hash = other.m_cache.hash; \
29  return *this; \
30  }
31 
32 namespace Muon{
40  // cppcheck-suppress operatorEqVarError; stationIndex, etc intentionally not copied.
42 
43  int8_t& stationIndex{m_cache.cache[0]};
44  int8_t& eta{m_cache.cache[1]};
45  int8_t& phi{m_cache.cache[2]};
46  int8_t& doubletR{m_cache.cache[3]};
47 
48  int8_t& doubletPhi{m_cache.cache[4]};
49  int8_t& doubletZ{m_cache.cache[5]};
50  int8_t& gasGap{m_cache.cache[6]};
51 
55  static constexpr int8_t measPhiBit = 1 << 0;
56  static constexpr int8_t stripSideBit = 1 << 1;
57 
59  bool measuresPhi() const { return m_measPhiStrip & measPhiBit; }
61  bool stripSide() const { return m_measPhiStrip & stripSideBit; }
63  void setMeasPhiAndSide(bool measPhi, bool stripSide) {
65  }
66  private:
67  union {
68  long int hash{0};
69  int8_t cache[8];
70  } m_cache{};
71  int8_t& m_measPhiStrip{m_cache.cache[7]};
72 
73  };
74 
79  // cppcheck-suppress operatorEqVarError; subDetector, etc intentionally not copied.
86  int16_t& board{m_cache.cache[2]};
87  private:
88  union {
89  int64_t hash{0};
91  } m_cache{};
92  };
93 
98  RpcCablingData() = default;
104  bool operator<(const RpcCablingData&) const = delete;
106  bool operator==(const RpcCablingData& other) const {
107  return strip == other.strip && channelId == other.channelId &&
108  static_cast<const RpcCablingOfflineID&>(*this) == other &&
109  static_cast<const RpcCablingOnlineID&>(*this) == other;
110  }
113  return !((*this) == other);
114  }
115  };
116  std::ostream& operator<<(std::ostream& ostr, const RpcCablingOfflineID& obj);
117  std::ostream& operator<<(std::ostream& ostr, const RpcCablingOnlineID& obj);
118  std::ostream& operator<<(std::ostream& ostr, const RpcCablingData& obj);
119 
120 }
121 
122 #undef CABLING_OPERATORS
123 #endif
Muon::RpcCablingOfflineID::doubletZ
int8_t & doubletZ
doublet Phi -> 1,2
Definition: RpcCablingData.h:49
Muon::RpcCablingOfflineID::stationIndex
int8_t & stationIndex
Definition: RpcCablingData.h:43
Muon::RpcCablingOnlineID::subDetector
int16_t & subDetector
Identifier of the subdetector region in the readout BA / BC etc.
Definition: RpcCablingData.h:82
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
Muon::RpcCablingData::channelId
uint8_t channelId
Online board channel number.
Definition: RpcCablingData.h:102
Muon::RpcCablingOfflineID::m_cache
union Muon::RpcCablingOfflineID::@168 m_cache
Muon::RpcCablingOfflineID::measuresPhi
bool measuresPhi() const
: Does the channel measure phi
Definition: RpcCablingData.h:59
Muon::RpcCablingData::operator!=
bool operator!=(RpcCablingData &other) const
Inequality operator.
Definition: RpcCablingData.h:112
Muon::RpcCablingOfflineID::setMeasPhiAndSide
void setMeasPhiAndSide(bool measPhi, bool stripSide)
Sets the measuresPhi & stripSide fields of the cabling data object.
Definition: RpcCablingData.h:63
Muon::RpcCablingOfflineID::stripSide
bool stripSide() const
: Is the strip readout on the opposite side
Definition: RpcCablingData.h:61
Muon::RpcCablingOfflineID
Struct to represent the offline identifier of the Rpc measurement decomposed into the particular fiel...
Definition: RpcCablingData.h:39
Muon::RpcCablingOfflineID::cache
int8_t cache[8]
Definition: RpcCablingData.h:69
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::RpcCablingOfflineID::measPhiBit
static constexpr int8_t measPhiBit
gas gap -> 1-3
Definition: RpcCablingData.h:55
xAOD::int16_t
setScaleOne setStatusOne setSaturated int16_t
Definition: gFexGlobalRoI_v1.cxx:55
Muon::RpcCablingOnlineID::m_cache
union Muon::RpcCablingOnlineID::@169 m_cache
Muon::RpcCablingOfflineID::eta
int8_t & eta
Station of the chamber (i.e, BIL,BIS,etc.)
Definition: RpcCablingData.h:44
Muon::RpcCablingOnlineID::boardSector
int16_t & boardSector
Unique Identifier of the Rpc chamber from an online perspective
Definition: RpcCablingData.h:84
Muon::RpcCablingOnlineID::board
int16_t & board
Unique identifier of the tdc chip.
Definition: RpcCablingData.h:86
CABLING_OPERATORS
#define CABLING_OPERATORS(CL_NAME)
: Helper structs to convert the Identifier of a Rpc measurement from its offline representation into ...
Definition: RpcCablingData.h:17
Muon::RpcCablingOfflineID::gasGap
int8_t & gasGap
doublet Z -> 1,2
Definition: RpcCablingData.h:50
Muon::RpcCablingData::operator==
bool operator==(const RpcCablingData &other) const
Equality in terms of all offline & online fields are matching.
Definition: RpcCablingData.h:106
Muon::RpcCablingOfflineID::doubletR
int8_t & doubletR
Station phi of the RPC station.
Definition: RpcCablingData.h:46
Muon::RpcCablingOnlineID::hash
int64_t hash
Definition: RpcCablingData.h:89
Muon::RpcCablingData::strip
uint8_t strip
Offline strip number.
Definition: RpcCablingData.h:100
Muon::RpcCablingData
Helper struct that is parsed to the cabling map to translate between the offline & online Identifiers...
Definition: RpcCablingData.h:96
Muon::RpcCablingOfflineID::stripSideBit
static constexpr int8_t stripSideBit
Definition: RpcCablingData.h:56
Muon::RpcCablingOnlineID
In an analogous way to the RpcCablingOfflineID, the RpcCablingOnlineID, holds all information needed ...
Definition: RpcCablingData.h:78
Muon::RpcCablingOfflineID::doubletPhi
int8_t & doubletPhi
doublet R -> 1,2
Definition: RpcCablingData.h:48
Muon::operator<<
std::ostream & operator<<(std::ostream &ostr, const Muon::HedgehogBoard &board)
Definition: HedgehogBoard.cxx:11
Muon::RpcCablingData::RpcCablingData
RpcCablingData()=default
Default constructor.
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
Muon::RpcCablingOfflineID::m_measPhiStrip
int8_t & m_measPhiStrip
Definition: RpcCablingData.h:71
Muon::RpcCablingOfflineID::phi
int8_t & phi
Eta index of the RPC station.
Definition: RpcCablingData.h:45
Muon::RpcCablingData::operator<
bool operator<(const RpcCablingData &) const =delete
No sorting operator.
python.PyAthena.obj
obj
Definition: PyAthena.py:132
Muon::RpcCablingOnlineID::cache
int16_t cache[4]
Definition: RpcCablingData.h:90
Muon::RpcCablingOfflineID::hash
long int hash
Definition: RpcCablingData.h:68