ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ITkStripsRodEncoder Class Reference

Athena Algorithm Tool that provides conversion from ITkStrips RDO to ROD format Bytestream. More...

#include <ITkStripsRodEncoder.h>

Inheritance diagram for ITkStripsRodEncoder:
Collaboration diagram for ITkStripsRodEncoder:

Public Member Functions

virtual ~ITkStripsRodEncoder ()=default
 Destructor. More...
 
virtual StatusCode initialize () override
 Initialize. More...
 
virtual void fillROD (std::vector< uint32_t > &vec32Data, const uint32_t &robID, const std::vector< const SCT_RDORawData * > &vecRDOs) const override
 Main Convert method. More...
 

Private Member Functions

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
 
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. More...
 
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. More...
 
uint16_t clusterFinder_sub (uint64_t &hits_high64, uint64_t &hits_low64, bool isSecondRow) const
 
uint32_t set32Bits (const unsigned short int *arr8Words, const unsigned short int *position, const unsigned short int &numWords) const
 
bool getBit_128b (uint8_t bit_addr, uint64_t data_high64, uint64_t data_low64) const
 
void setBit_128b (uint8_t bit_addr, bool value, uint64_t &data_high64, uint64_t &data_low64) const
 
bool getParity_8bits (uint8_t val) const
 
int getBarrelEC (const SCT_RDORawData *rdo) const
 Get the barrel/endcape info from the RDO. More...
 
int getDiskLayer (const SCT_RDORawData *rdo) const
 Get disk/layer info from the RDO. More...
 
int getPhiModule (const SCT_RDORawData *rdo) const
 Get the phi value info from the RDO. More...
 
int getEtaModule (const SCT_RDORawData *rdo) const
 Get the eta value info from the RDO. More...
 
int getStripMax (const SCT_RDORawData *rdo) const
 Get the maxumum strip value info from the RDO. More...
 
int side (const SCT_RDORawData *rdo) const
 Get the side info from the RDO. More...
 
int getTimeBin (const SCT_RDORawData *rdo) const
 Get the time bin info from the RDO. More...
 
int getStrip (const SCT_RDORawData *rdo) const
 Get the strip number info from the RDO. More...
 
Identifier offlineID (const SCT_RDORawData *rdo) const
 Get the offline Identifier from the RDO. More...
 
uint32_t onlineID (const SCT_RDORawData *rdo) const
 Get the online Identifier from the RDO. More...
 
int getRODLink (const SCT_RDORawData *rdo) const
 Get the ROD link number info in the RDO header data. More...
 
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. More...
 
uint16_t getHeaderUsingRDO (const SCT_RDORawData *rdo) const
 Get the 16-bit word for a header for a hit. More...
 
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. More...
 
uint16_t getTrailer (const int &errorWord) const
 Get the 16-bit word for a trailer, with or without ByteStream errors. More...
 

Private Attributes

std::atomic< uint8_t > m_bcid = 0
 Method to encode RDO data to vector of 16 bin words. More...
 
std::atomic< uint8_t > m_l0tag = 0
 
ToolHandle< IITkStripCablingToolm_cabling
 Providing mappings of online and offline identifiers and also serial numbers. More...
 
const SCT_IDm_itkStripsID {nullptr}
 Identifier helper class for the ITkStrips subdetector that creates compact Identifier objects and IdentifierHash or hash IDs. More...
 
BooleanProperty m_condensed {this, "CondensedMode", false, "Condensed mode (true) or Expanded mode (false)"}
 Example Boolean used to determine decoding mode, maybe unused finally. More...
 
std::set< Identifierm_swapModuleID {}
 Swap Module identifier, set by SCTRawContByteStreamTool. More...
 

Detailed Description

Athena Algorithm Tool that provides conversion from ITkStrips RDO to ROD format Bytestream.

Definition at line 29 of file ITkStripsRodEncoder.h.

Constructor & Destructor Documentation

◆ ~ITkStripsRodEncoder()

virtual ITkStripsRodEncoder::~ITkStripsRodEncoder ( )
virtualdefault

Destructor.

Member Function Documentation

◆ clusterFinder()

std::vector< uint16_t > ITkStripsRodEncoder::clusterFinder ( const std::bitset< 256 > &  inputData,
const uint8_t  maxCluster = 63 
) const
private

@breif Method to set pairs of 8 bit words to a 32 bit word.

Function used by the packFragments(...) method.

Parameters
arr8WordsPointer to array containing a pair of 8 bit words.
positionPointer to an array that gives the 32 bit starting positions of the 8 bit words and corresponding to arr8Words.
numWordsNumber of word to be set to a 32 bit word.

Definition at line 162 of file ITkStripsRodEncoder.cxx.

162  {
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 }

◆ clusterFinder_sub()

uint16_t ITkStripsRodEncoder::clusterFinder_sub ( uint64_t &  hits_high64,
uint64_t &  hits_low64,
bool  isSecondRow 
) const
private

Definition at line 223 of file ITkStripsRodEncoder.cxx.

223  {
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 }

◆ encodeData()

void ITkStripsRodEncoder::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
private

Definition at line 128 of file ITkStripsRodEncoder.cxx.

129  {
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 }

◆ fillROD()

void ITkStripsRodEncoder::fillROD ( std::vector< uint32_t > &  vec32Data,
const uint32_t &  robID,
const std::vector< const SCT_RDORawData * > &  vecRDOs 
) const
overridevirtual

Main Convert method.

Converts SCT RDO to a vector of 32 bit words. Starts by retrieving and collecting errors, then loops through RDO's and decode them to 16 bit words, and then finally it packs the 16 bit word into 32 bit words vector.

Parameters
vec32DataVector of 32 bit words to be filled with encoded RDOs from the SCT.
robIDID of the current readout buffer (ROB).
vecRDOsVector containing the RDOs to be coverted to vector of 32 bit words.

Definition at line 67 of file ITkStripsRodEncoder.cxx.

68  {
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 }

◆ getBarrelEC()

int ITkStripsRodEncoder::getBarrelEC ( const SCT_RDORawData rdo) const
private

Get the barrel/endcape info from the RDO.

Definition at line 322 of file ITkStripsRodEncoder.cxx.

322  {
323  const Identifier rdoID{rdo->identify()};
324  int itkBarrel{m_itkStripsID->barrel_ec(rdoID)};
325  return itkBarrel;
326 }

◆ getBit_128b()

bool ITkStripsRodEncoder::getBit_128b ( uint8_t  bit_addr,
uint64_t  data_high64,
uint64_t  data_low64 
) const
inlineprivate

Definition at line 205 of file ITkStripsRodEncoder.cxx.

205  {
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 }

◆ getDiskLayer()

int ITkStripsRodEncoder::getDiskLayer ( const SCT_RDORawData rdo) const
private

Get disk/layer info from the RDO.

Definition at line 329 of file ITkStripsRodEncoder.cxx.

329  {
330  const Identifier rdoID{rdo->identify()};
331  int itkDiskLayer{m_itkStripsID->layer_disk(rdoID)};
332  return itkDiskLayer;
333 }

◆ getEtaModule()

int ITkStripsRodEncoder::getEtaModule ( const SCT_RDORawData rdo) const
private

Get the eta value info from the RDO.

Definition at line 343 of file ITkStripsRodEncoder.cxx.

343  {
344  const Identifier rdoID{rdo->identify()};
345  int itkEtaModule{m_itkStripsID->eta_module(rdoID)};
346  return itkEtaModule;
347 }

◆ getHeaderPhysicsPacket()

uint16_t ITkStripsRodEncoder::getHeaderPhysicsPacket ( int  typ,
uint8_t  l0tag,
uint8_t  bc_count 
) const
private

Get the 16-bit word for a header with Type (PR or LP), L0Tag event and BCID.

Definition at line 365 of file ITkStripsRodEncoder.cxx.

365  {
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 }

◆ getHeaderUsingHash()

uint16_t ITkStripsRodEncoder::getHeaderUsingHash ( const IdentifierHash linkHash,
const int &  errorWord 
) const
private

Get the 16-bit word for a header for a link with a ByteStream error.

Definition at line 384 of file ITkStripsRodEncoder.cxx.

384  {
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 }

◆ getHeaderUsingRDO()

uint16_t ITkStripsRodEncoder::getHeaderUsingRDO ( const SCT_RDORawData rdo) const
private

Get the 16-bit word for a header for a hit.

Definition at line 377 of file ITkStripsRodEncoder.cxx.

377  {
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 }

◆ getParity_8bits()

bool ITkStripsRodEncoder::getParity_8bits ( uint8_t  val) const
private

Definition at line 357 of file ITkStripsRodEncoder.cxx.

357  {
358  val ^= val >> 4;
359  val ^= val >> 2;
360  val ^= val >> 1;
361  return val&1;
362 }

◆ getPhiModule()

int ITkStripsRodEncoder::getPhiModule ( const SCT_RDORawData rdo) const
private

Get the phi value info from the RDO.

Definition at line 336 of file ITkStripsRodEncoder.cxx.

336  {
337  const Identifier rdoID{rdo->identify()};
338  int itkPhiModule{m_itkStripsID->phi_module(rdoID)};
339  return itkPhiModule;
340 }

◆ getRODLink()

int ITkStripsRodEncoder::getRODLink ( const SCT_RDORawData rdo) const
private

Get the ROD link number info in the RDO header data.

Definition at line 310 of file ITkStripsRodEncoder.cxx.

310  {
311  return rodLinkFromOnlineID(onlineID(rdo));
312 }

◆ getStrip()

int ITkStripsRodEncoder::getStrip ( const SCT_RDORawData rdo) const
private

Get the strip number info from the RDO.

Definition at line 291 of file ITkStripsRodEncoder.cxx.

291  {
292  const Identifier rdoID{rdo->identify()};
293  return m_itkStripsID->strip(rdoID);
294 }

◆ getStripMax()

int ITkStripsRodEncoder::getStripMax ( const SCT_RDORawData rdo) const
private

Get the maxumum strip value info from the RDO.

Definition at line 350 of file ITkStripsRodEncoder.cxx.

350  {
351  const Identifier rdoID{rdo->identify()};
352  int itkStripMax{m_itkStripsID->strip_max(rdoID)};
353  return itkStripMax;
354 }

◆ getTimeBin()

int ITkStripsRodEncoder::getTimeBin ( const SCT_RDORawData rdo) const
private

Get the time bin info from the RDO.

◆ getTrailer()

uint16_t ITkStripsRodEncoder::getTrailer ( const int &  errorWord) const
private

Get the 16-bit word for a trailer, with or without ByteStream errors.

Definition at line 391 of file ITkStripsRodEncoder.cxx.

391  {
392  const uint16_t linkTrailer{static_cast<uint16_t>(0x4000 | errorWord)};
393  return linkTrailer;
394 }

◆ initialize()

StatusCode ITkStripsRodEncoder::initialize ( )
overridevirtual

Initialize.

Definition at line 45 of file ITkStripsRodEncoder.cxx.

45  {
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 }

◆ offlineID()

Identifier ITkStripsRodEncoder::offlineID ( const SCT_RDORawData rdo) const
private

Get the offline Identifier from the RDO.


Definition at line 297 of file ITkStripsRodEncoder.cxx.

297  {
298  const Identifier rdoId{rdo->identify()};
299  return m_itkStripsID->wafer_id(rdoId);
300 }

◆ onlineID()

uint32_t ITkStripsRodEncoder::onlineID ( const SCT_RDORawData rdo) const
private

Get the online Identifier from the RDO.

Definition at line 303 of file ITkStripsRodEncoder.cxx.

303  {
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 }

◆ packFragments()

void ITkStripsRodEncoder::packFragments ( std::vector< uint8_t > &  vec8Words,
std::vector< uint32_t > &  vec32Words 
) const
private

Method to pack vector of 8 bit words intto a vector of 32 bit words.

Method us used by private method encodeData(...).

Parameters
vec8WordsVector containing 8 bit words.
vec32WordsVector for 32 bit words to be packed.

Definition at line 249 of file ITkStripsRodEncoder.cxx.

249  {
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 }

◆ set32Bits()

uint32_t ITkStripsRodEncoder::set32Bits ( const unsigned short int *  arr8Words,
const unsigned short int *  position,
const unsigned short int &  numWords 
) const
private

Definition at line 275 of file ITkStripsRodEncoder.cxx.

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 }

◆ setBit_128b()

void ITkStripsRodEncoder::setBit_128b ( uint8_t  bit_addr,
bool  value,
uint64_t &  data_high64,
uint64_t &  data_low64 
) const
inlineprivate

Definition at line 212 of file ITkStripsRodEncoder.cxx.

212  {
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 }

◆ side()

int ITkStripsRodEncoder::side ( const SCT_RDORawData rdo) const
private

Get the side info from the RDO.

Definition at line 315 of file ITkStripsRodEncoder.cxx.

315  {
316  const Identifier rdoID{rdo->identify()};
317  int itkSide{m_itkStripsID->side(rdoID)};
318  return itkSide;
319 }

Member Data Documentation

◆ m_bcid

std::atomic<uint8_t> ITkStripsRodEncoder::m_bcid = 0
mutableprivate

Method to encode RDO data to vector of 16 bin words.

Methods used by main convert methods fillROD(...).

Parameters
vecTimeBinsVector of time bins for RDOs.
vec16WordsVector of 16 bit words to filled from encoded RDO data.
rdoRDO raw data object to be encoded.
groupSizeGroup size info from the RDO.
stripStrip number info from the RDO.

Definition at line 70 of file ITkStripsRodEncoder.h.

◆ m_cabling

ToolHandle<IITkStripCablingTool> ITkStripsRodEncoder::m_cabling
private
Initial value:
{this,
"ITkStripCablingTool",
"ITkStripCablingTool",
"Tool to retrieve ITkStrips Cabling"}

Providing mappings of online and offline identifiers and also serial numbers.

Definition at line 153 of file ITkStripsRodEncoder.h.

◆ m_condensed

BooleanProperty ITkStripsRodEncoder::m_condensed {this, "CondensedMode", false, "Condensed mode (true) or Expanded mode (false)"}
private

Example Boolean used to determine decoding mode, maybe unused finally.

Definition at line 163 of file ITkStripsRodEncoder.h.

◆ m_itkStripsID

const SCT_ID* ITkStripsRodEncoder::m_itkStripsID {nullptr}
private

Identifier helper class for the ITkStrips subdetector that creates compact Identifier objects and IdentifierHash or hash IDs.

Also allows decoding of these IDs.

Definition at line 160 of file ITkStripsRodEncoder.h.

◆ m_l0tag

std::atomic<uint8_t> ITkStripsRodEncoder::m_l0tag = 0
mutableprivate

Definition at line 71 of file ITkStripsRodEncoder.h.

◆ m_swapModuleID

std::set<Identifier> ITkStripsRodEncoder::m_swapModuleID {}
private

Swap Module identifier, set by SCTRawContByteStreamTool.

Definition at line 166 of file ITkStripsRodEncoder.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
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
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_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::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
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
ITkStripsRodEncoder::getEtaModule
int getEtaModule(const SCT_RDORawData *rdo) const
Get the eta value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:343
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
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
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
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
ITkStripsRodEncoder::getStrip
int getStrip(const SCT_RDORawData *rdo) const
Get the strip number info from the RDO.
Definition: ITkStripsRodEncoder.cxx:291
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
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
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