ATLAS Offline Software
ITkStripsRodEncoder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "ITkStripsRodEncoder.h"
6 
12 
13 
14 #include "Identifier/Identifier.h"
16 
17 namespace { // Anonymous namespace
18  template<unsigned int n>
19  unsigned long long
20  chunk(std::bitset<128> b){
21  static constexpr std::bitset<128> mask64(~0ULL);
22  static constexpr unsigned int shift{n * 64};
23  return ((b >>shift) & mask64).to_ullong();
24  }
25  int
26  rodLinkFromOnlineID(const ITkStripOnlineId onlineID){
27  const uint32_t fibre{onlineID.fibre()};
28  const int formatter{static_cast<int>((fibre/12) & 0x7)};
29  const int linkNum{static_cast<int>((fibre - (formatter*12)) & 0xF)};
30  const int rodLink{(formatter << 4) | linkNum};
31  return rodLink;
32  }
33  uint64_t
34  geometryKey(int barrel, int disk, int phi_mod, int eta_group){
35  return (static_cast<uint64_t>(barrel) << 48) |
36  (static_cast<uint64_t>(disk) << 32) |
37  (static_cast<uint64_t>(phi_mod) << 16) |
38  static_cast<uint64_t>(eta_group);
39  }
40 
41 } // End of anonymous namespace
42 
43 // Initialize
46  ATH_MSG_DEBUG("ITkStripsRodEncoder::initialize()");
47 
48  // Retrieve cabling tool
49  ATH_CHECK(m_cabling.retrieve());
50  ATH_MSG_DEBUG("Retrieved tool " << m_cabling);
52  const InDetDD::SCT_DetectorManager* itkStripsDetManager{nullptr};
53  ATH_CHECK(detStore()->retrieve(itkStripsDetManager, "ITkStrip"));
54  const InDetDD::SiDetectorElementCollection* sctDetElementColl{itkStripsDetManager->getDetectorElementCollection()};
55  for (const InDetDD::SiDetectorElement* sctDetElement : *sctDetElementColl) {
56  if (sctDetElement->swapPhiReadoutDirection()) {
57  m_swapModuleID.insert(sctDetElement->identify());
58  }
59  }
60  ATH_MSG_DEBUG("Initialization was successful");
61  return StatusCode::SUCCESS;
62 }
63 
64 
65 
66 void
67 ITkStripsRodEncoder::fillROD(std::vector<uint32_t>& vec32Data, const uint32_t& /*robID*/,
68  const std::vector<const SCT_RDORawData*>& vecRDOs) const {
69  //code to be filled here
70 
71  std::unordered_map<uint64_t, std::vector<std::bitset<256>>> allStripData;
72 
73  for (const auto& rdo : vecRDOs) {
74  int barrel = getBarrelEC(rdo);
75  int disk = getDiskLayer(rdo);
76  int phi_mod = getPhiModule(rdo);
77  int eta_mod = getEtaModule(rdo);
78  int strip_max = getStripMax(rdo);
79 
80  if (strip_max < 0){
81  continue;
82  }
83  int eta_group;
84 
85  if (barrel == 0) {
86  eta_group = static_cast<int>(std::floor((eta_mod+1) / 2)); //To work with barrel
87  }else {
88  eta_group = static_cast<int>(std::floor(eta_mod / 2)); //To work with endcap
89  }
90 
91  int chips_per_module = (strip_max + 1) / 128;
92  uint64_t key = geometryKey(barrel, disk, phi_mod, eta_group);
93  auto& StripData = allStripData[key];
94 
95  if (StripData.empty()) {
96  StripData.resize(chips_per_module);
97  }
98 
99  //Populate the bitset for each chip with active strips
100  int strip = getStrip(rdo);
101  int chip = static_cast<int>(std::floor(strip / 128));
102  int strip_position = strip % 128;
103  int strip_logical_channel = 2*strip_position + (eta_mod & 1);
104  StripData[chip].set(strip_logical_channel);
105  }
106 
107  std::vector<uint8_t> vec8Data;
108  uint16_t ichannel = 0;
109  //Iterate over processed strip data and find clusters
110  for (const auto& [key, StripData] : allStripData) {
111  int ptype = 1;
112  for (size_t i = 0; i < StripData.size(); ++i) {
113  std::bitset<256> hits = StripData[i];
114  //Use clusterFinder to extract clusters from the bitset
115  std::vector<uint16_t> clusters = clusterFinder(hits);
116  encodeData(clusters, ichannel, vec8Data, ptype, m_l0tag , m_bcid);
117  ++ichannel;
118  }
119  }
120  //Update BCID and L0Tag counters
121  m_bcid = (m_bcid + 1) & 0x7F;
122  m_l0tag = (m_l0tag + 1) & 0x7F;
123  packFragments(vec8Data,vec32Data);
124  return;
125 }
126 
127 void
128 ITkStripsRodEncoder::encodeData(const std::vector<uint16_t>& clusters, const uint16_t ichannel,std::vector<uint8_t>& data_encode,
129  int ptyp, uint8_t l0tag, uint8_t bc_count) const {
130 
131  size_t total_clusters = clusters.size();
132  size_t cluster_pos = 0;
133 
134  while (cluster_pos < total_clusters) {
135  // Header + 4 clusters
136  uint16_t header = getHeaderPhysicsPacket(ptyp, l0tag, bc_count);
137  data_encode.push_back((header>>8) & 0xff);
138  data_encode.push_back(header & 0xff);
139 
140  size_t max_cluster_pp = 0; //Max clusters per packet
141  for (; max_cluster_pp < 4 && cluster_pos < total_clusters; ++max_cluster_pp, ++cluster_pos) {
142  uint16_t cluster = clusters[cluster_pos];
143  // cluster bits:
144  // "0" + 4-bit channel number + 11-bit cluster dropping the last cluster bit
145  uint16_t clusterbits = ((ichannel & 0xf) << 11) | (cluster & 0x7ff);
146  data_encode.push_back((clusterbits>>8) & 0xff);
147  data_encode.push_back(clusterbits & 0xff);
148  }
149 
150  while (max_cluster_pp < 4) {
151  data_encode.push_back(0x7F); // Cluster empty (0x7FF in 12 bits)
152  data_encode.push_back(0xFF);
153  ++max_cluster_pp;
154  }
155  }
156 
157  return;
158 }
159 
160 
161 std::vector<uint16_t>
162 ITkStripsRodEncoder::clusterFinder(const std::bitset<256>& inputData, const uint8_t maxCluster) const {
163 
164  std::vector<uint16_t> clusters;
165 
166  // Split into far (odd) and near (even) strips
167  std::bitset<128> dataEven;
168  std::bitset<128> dataOdd;
169  for(int i=0; i<128; ++i){
170  dataEven[i] = inputData[2*i];
171  dataOdd[i] = inputData[2*i+1];
172  }
173 
174  // Split the 128-bit Even and Odd data into four 64-bit chunks for processing
175  uint64_t d0l = chunk<0>(dataEven);
176  uint64_t d0h = chunk<1>(dataEven);
177 
178  uint64_t d1l = chunk<0>(dataOdd);
179  uint64_t d1h = chunk<1>(dataOdd);
180 
181  while (d0l or d0h or d1l or d1h){
182  if (clusters.size() > maxCluster) break;
183 
184  uint16_t cluster1 = clusterFinder_sub(d1h, d1l, true);
185  if (cluster1 != 0x3ff) // No cluster was found
186  clusters.push_back(cluster1);
187 
188  if (clusters.size() > maxCluster) break;
189 
190  uint16_t cluster0 = clusterFinder_sub(d0h, d0l, false);
191  if (cluster0 != 0x3ff) // No cluster was found
192  clusters.push_back(cluster0);
193  }
194 
195  if (clusters.empty()) {
196  clusters.push_back(0x3fe);
197  } else {
198  clusters.back() |=1 << 11;
199  }
200 
201  return clusters;
202 }
203 
204 inline bool
205 ITkStripsRodEncoder::getBit_128b(uint8_t bit_addr, uint64_t data_high64, uint64_t data_low64) const {
206  if (bit_addr > 127) return false;
207 
208  return bit_addr<64 ? data_low64>>bit_addr & 1 : data_high64>>(bit_addr-64) & 1;
209 }
210 
211 inline void
212 ITkStripsRodEncoder::setBit_128b(uint8_t bit_addr, bool value, uint64_t& data_high64, uint64_t& data_low64) const {
213  if (bit_addr < 64) {
214  data_low64 = (data_low64 & ~(1ULL << bit_addr)) | ((uint64_t)value << bit_addr);
215  } else if (bit_addr < 128) {
216  data_high64 =
217  (data_high64 & ~(1ULL << (bit_addr-64))) | ((uint64_t)value << (bit_addr-64));
218  }
219 }
220 
221 
222 uint16_t
223 ITkStripsRodEncoder::clusterFinder_sub(uint64_t& hits_high64, uint64_t& hits_low64, bool isSecondRow) const {
224  uint8_t hit_addr = 128;
225  uint8_t hitpat_next3 = 0;
226 
227  if (hits_low64){
228  hit_addr = __builtin_ctzll(hits_low64);
229  } else if (hits_high64){
230  hit_addr = __builtin_ctzll(hits_high64) + 64;
231  }
232 
233  hitpat_next3 = getBit_128b(hit_addr+1, hits_high64, hits_low64) << 2
234  | getBit_128b(hit_addr+2, hits_high64, hits_low64) << 1
235  | getBit_128b(hit_addr+3, hits_high64, hits_low64);
236 
237  for (int i=0; i<4; ++i)
238  setBit_128b(hit_addr+i, 0, hits_high64, hits_low64);
239 
240  if (hit_addr == 128) {
241  return 0x3ff;
242  } else {
243  hit_addr += isSecondRow<<7;
244  return hit_addr << 3 | hitpat_next3;
245  }
246 }
247 
248 void
249 ITkStripsRodEncoder::packFragments(std::vector<uint8_t>& vec8Words, std::vector<uint32_t>& vec32Words) const {
250  int num8Words{static_cast<int>(vec8Words.size())};
251  if (num8Words % 4 != 0) {
252  // Just add additional 8-bit words to make the size a multiple of 4
253  while (num8Words % 4 != 0) {
254  vec8Words.push_back(0x40); // Padding byte
255  num8Words++;
256  }
257  }
258  // Now merge 4 consecutive 8-bit words into 32-bit words
259  const unsigned short int numWords{4};
260  const unsigned short int position[numWords]{0, 8, 16, 24};
261  unsigned short int arr8Words[numWords]{0, 0, 0, 0};
262 
263  for (int i{0}; i<num8Words; i += numWords) {
264  for (int j{0}; j<numWords; j++) {
265  arr8Words[j] = vec8Words[i + j];
266  }
267  const uint32_t uint32Word{set32Bits(arr8Words, position, numWords)};
268  vec32Words.push_back(uint32Word);
269  }
270  return;
271 }
272 
273 // set32Bits function
274 // This function combines four 8-bit words into a 32-bit word
275 uint32_t ITkStripsRodEncoder::set32Bits(const unsigned short int* arr8Words, const unsigned short int* position, const unsigned short int& numWords) const
276 {
277  uint32_t uint32Word{0};
278  uint32_t pos{0};
279  uint32_t uint8Word{0};
280  for (uint16_t i{0}; i<numWords; i++) {
281  uint8Word = static_cast<uint32_t>(*(arr8Words + i));
282  pos = static_cast<uint32_t>(*(position + i));
283  uint32Word |= (uint8Word << pos); // Shift the 8-bit word to its correct position and merge
284  }
285  return uint32Word;
286 }
287 
288 
289 // Get RDO info functions
290 int
292  const Identifier rdoID{rdo->identify()};
293  return m_itkStripsID->strip(rdoID);
294 }
295 
298  const Identifier rdoId{rdo->identify()};
299  return m_itkStripsID->wafer_id(rdoId);
300 }
301 
302 uint32_t
304  const Identifier waferID{offlineID(rdo)};
305  const IdentifierHash offlineIDHash{m_itkStripsID->wafer_hash(waferID)};
306  return static_cast<uint32_t>(m_cabling->getOnlineIdFromHash(offlineIDHash));
307 }
308 
309 int
311  return rodLinkFromOnlineID(onlineID(rdo));
312 }
313 
314 int
316  const Identifier rdoID{rdo->identify()};
317  int itkSide{m_itkStripsID->side(rdoID)};
318  return itkSide;
319 }
320 
321 int
323  const Identifier rdoID{rdo->identify()};
324  int itkBarrel{m_itkStripsID->barrel_ec(rdoID)};
325  return itkBarrel;
326 }
327 
328 int
330  const Identifier rdoID{rdo->identify()};
331  int itkDiskLayer{m_itkStripsID->layer_disk(rdoID)};
332  return itkDiskLayer;
333 }
334 
335 int
337  const Identifier rdoID{rdo->identify()};
338  int itkPhiModule{m_itkStripsID->phi_module(rdoID)};
339  return itkPhiModule;
340 }
341 
342 int
344  const Identifier rdoID{rdo->identify()};
345  int itkEtaModule{m_itkStripsID->eta_module(rdoID)};
346  return itkEtaModule;
347 }
348 
349 int
351  const Identifier rdoID{rdo->identify()};
352  int itkStripMax{m_itkStripsID->strip_max(rdoID)};
353  return itkStripMax;
354 }
355 
356 bool
358  val ^= val >> 4;
359  val ^= val >> 2;
360  val ^= val >> 1;
361  return val&1;
362 }
363 
364 uint16_t
366  uint8_t bcid_low = bc_cout & 0x7; // BCID[2:0]
367  bool bc_parity = getParity_8bits(bc_cout);
368  //TYPE (4 bits) + FlagBit (1 bit) + L0tag (7 bits) + BCID (3 bits) + Parity (1 bit)
369  const uint16_t Header{static_cast<uint16_t>(((uint8_t)typ << 12) | (0x1 << 11) | (l0tag & 0x7f) << 4 | (bcid_low) << 1 | bc_parity)};
370  return Header;
371 
372 }
373 
374 
375 //the following may be needed for ITkStrips, but must have different implementation
376 uint16_t
378  const int rodLink{getRODLink(rdo)};
379  const uint16_t linkHeader{static_cast<uint16_t>(0x2000 | (m_condensed.value() << 8) | rodLink)};
380  return linkHeader;
381 }
382 
383 uint16_t
384 ITkStripsRodEncoder::getHeaderUsingHash(const IdentifierHash& linkHash, const int& errorWord) const {
385  const int rodLink{rodLinkFromOnlineID(m_cabling->getOnlineIdFromHash(linkHash))};
386  const uint16_t linkHeader{static_cast<uint16_t>(0x2000 | errorWord | (m_condensed.value() << 8) | rodLink)};
387  return linkHeader;
388 }
389 
390 uint16_t
391 ITkStripsRodEncoder::getTrailer(const int& errorWord) const {
392  const uint16_t linkTrailer{static_cast<uint16_t>(0x4000 | errorWord)};
393  return linkTrailer;
394 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
SCT_ID.h
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
ITkStripsRodEncoder::initialize
virtual StatusCode initialize() override
Initialize.
Definition: ITkStripsRodEncoder.cxx:45
ITkStripsRodEncoder::m_cabling
ToolHandle< IITkStripCablingTool > m_cabling
Providing mappings of online and offline identifiers and also serial numbers.
Definition: ITkStripsRodEncoder.h:153
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
SiliconTech::strip
@ strip
InDetDD::SCT_DetectorManager
Definition: SCT_DetectorManager.h:49
header
Definition: hcg.cxx:526
InDetDD::SiDetectorElementCollection
Definition: SiDetectorElementCollection.h:27
ITkStripsRodEncoder::getDiskLayer
int getDiskLayer(const SCT_RDORawData *rdo) const
Get disk/layer info from the RDO.
Definition: ITkStripsRodEncoder.cxx:329
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
ITkStripsRodEncoder.h
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ITkStripsRodEncoder::m_swapModuleID
std::set< Identifier > m_swapModuleID
Swap Module identifier, set by SCTRawContByteStreamTool.
Definition: ITkStripsRodEncoder.h:166
ITkStripsRodEncoder::clusterFinder
std::vector< uint16_t > clusterFinder(const std::bitset< 256 > &inputData, const uint8_t maxCluster=63) const
@breif Method to set pairs of 8 bit words to a 32 bit word.
Definition: ITkStripsRodEncoder.cxx:162
athena.value
value
Definition: athena.py:124
SCT_RDORawData
Definition: SCT_RDORawData.h:24
ITkStripOnlineId::fibre
std::uint32_t fibre() const
Return the fibre.
Definition: ITkStripOnlineId.cxx:25
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
SCT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: SCT_ID.h:740
ITkStripsRodEncoder::onlineID
uint32_t onlineID(const SCT_RDORawData *rdo) const
Get the online Identifier from the RDO.
Definition: ITkStripsRodEncoder.cxx:303
ITkStripsRodEncoder::clusterFinder_sub
uint16_t clusterFinder_sub(uint64_t &hits_high64, uint64_t &hits_low64, bool isSecondRow) const
Definition: ITkStripsRodEncoder.cxx:223
ITkStripsRodEncoder::getPhiModule
int getPhiModule(const SCT_RDORawData *rdo) const
Get the phi value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:336
ITkStripsRodEncoder::getHeaderUsingHash
uint16_t getHeaderUsingHash(const IdentifierHash &linkHash, const int &errorWord) const
Get the 16-bit word for a header for a link with a ByteStream error.
Definition: ITkStripsRodEncoder.cxx:384
ITkStripsRodEncoder::set32Bits
uint32_t set32Bits(const unsigned short int *arr8Words, const unsigned short int *position, const unsigned short int &numWords) const
Definition: ITkStripsRodEncoder.cxx:275
ITkStripsRodEncoder::getStripMax
int getStripMax(const SCT_RDORawData *rdo) const
Get the maxumum strip value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:350
ITkStripsRodEncoder::m_condensed
BooleanProperty m_condensed
Example Boolean used to determine decoding mode, maybe unused finally.
Definition: ITkStripsRodEncoder.h:163
ITkStripsRodEncoder::getRODLink
int getRODLink(const SCT_RDORawData *rdo) const
Get the ROD link number info in the RDO header data.
Definition: ITkStripsRodEncoder.cxx:310
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
lumiFormat.i
int i
Definition: lumiFormat.py:85
ITkStripsRodEncoder::encodeData
void encodeData(const std::vector< uint16_t > &clusters, const uint16_t ichannel, std::vector< uint8_t > &data_encode, int typ, uint8_t l0tag, uint8_t bc_count) const
Definition: ITkStripsRodEncoder.cxx:128
ITkStripsRodEncoder::offlineID
Identifier offlineID(const SCT_RDORawData *rdo) const
Get the offline Identifier from the RDO.
Definition: ITkStripsRodEncoder.cxx:297
beamspotman.n
n
Definition: beamspotman.py:727
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SCT_ID::wafer_hash
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
Definition: SCT_ID.h:492
ITkStripsRodEncoder::getParity_8bits
bool getParity_8bits(uint8_t val) const
Definition: ITkStripsRodEncoder.cxx:357
SCT_RDORawData.h
ITkStripsRodEncoder::getEtaModule
int getEtaModule(const SCT_RDORawData *rdo) const
Get the eta value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:343
ITkStripsRodEncoder::getHeaderUsingRDO
uint16_t getHeaderUsingRDO(const SCT_RDORawData *rdo) const
Get the 16-bit word for a header for a hit.
Definition: ITkStripsRodEncoder.cxx:377
ITkStripsRodEncoder::m_bcid
std::atomic< uint8_t > m_bcid
Method to encode RDO data to vector of 16 bin words.
Definition: ITkStripsRodEncoder.h:70
ITkStripsRodEncoder::setBit_128b
void setBit_128b(uint8_t bit_addr, bool value, uint64_t &data_high64, uint64_t &data_low64) const
Definition: ITkStripsRodEncoder.cxx:212
ITkStripsRodEncoder::m_l0tag
std::atomic< uint8_t > m_l0tag
Definition: ITkStripsRodEncoder.h:71
ITkStripsRodEncoder::getBit_128b
bool getBit_128b(uint8_t bit_addr, uint64_t data_high64, uint64_t data_low64) const
Definition: ITkStripsRodEncoder.cxx:205
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
ITkStripsRodEncoder::fillROD
virtual void fillROD(std::vector< uint32_t > &vec32Data, const uint32_t &robID, const std::vector< const SCT_RDORawData * > &vecRDOs) const override
Main Convert method.
Definition: ITkStripsRodEncoder.cxx:67
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
IdentifierHash.h
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
vtune_athena.formatter
formatter
Definition: vtune_athena.py:19
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
SiDetectorElementCollection.h
ITkStripsRodEncoder::getHeaderPhysicsPacket
uint16_t getHeaderPhysicsPacket(int typ, uint8_t l0tag, uint8_t bc_count) const
Get the 16-bit word for a header with Type (PR or LP), L0Tag event and BCID.
Definition: ITkStripsRodEncoder.cxx:365
SiDetectorElement.h
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
ITkStripsRodEncoder::side
int side(const SCT_RDORawData *rdo) const
Get the side info from the RDO.
Definition: ITkStripsRodEncoder.cxx:315
ITkStripsRodEncoder::getStrip
int getStrip(const SCT_RDORawData *rdo) const
Get the strip number info from the RDO.
Definition: ITkStripsRodEncoder.cxx:291
ITkStripsRodEncoder::getTrailer
uint16_t getTrailer(const int &errorWord) const
Get the 16-bit word for a trailer, with or without ByteStream errors.
Definition: ITkStripsRodEncoder.cxx:391
ITkStripsRodEncoder::getBarrelEC
int getBarrelEC(const SCT_RDORawData *rdo) const
Get the barrel/endcape info from the RDO.
Definition: ITkStripsRodEncoder.cxx:322
SCT_ID::strip
int strip(const Identifier &id) const
Definition: SCT_ID.h:764
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
ITkStripOnlineId
Definition: ITkStripOnlineId.h:16
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition: SCT_ID.h:746
SCT_ID::strip_max
int strip_max(const Identifier &id) const
Definition: SCT_ID.cxx:197
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
DetectorZone::barrel
@ barrel
SCT_ID::side
int side(const Identifier &id) const
Definition: SCT_ID.h:752
InDetRawData::identify
virtual Identifier identify() const override final
Definition: InDetRawData.h:41
SCT_ID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition: SCT_ID.h:464
SCT_DetectorManager.h
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
ITkStripsRodEncoder::m_itkStripsID
const SCT_ID * m_itkStripsID
Identifier helper class for the ITkStrips subdetector that creates compact Identifier objects and Ide...
Definition: ITkStripsRodEncoder.h:160
ITkStripsRodEncoder::packFragments
void packFragments(std::vector< uint8_t > &vec8Words, std::vector< uint32_t > &vec32Words) const
Method to pack vector of 8 bit words intto a vector of 32 bit words.
Definition: ITkStripsRodEncoder.cxx:249
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14