Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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

 ITkStripsRodEncoder (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor. More...
 
virtual ~ITkStripsRodEncoder ()=default
 Destructor. More...
 
virtual StatusCode initialize () override
 Initialize. More...
 
virtual StatusCode finalize () override
 Finalize. 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, 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< ISCT_CablingToolm_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 30 of file ITkStripsRodEncoder.h.

Constructor & Destructor Documentation

◆ ITkStripsRodEncoder()

ITkStripsRodEncoder::ITkStripsRodEncoder ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Constructor.

Definition at line 45 of file ITkStripsRodEncoder.cxx.

46  :
47  base_class(type, name, parent){
48  //nop
49 }

◆ ~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 173 of file ITkStripsRodEncoder.cxx.

173  {
174 
175  std::vector<uint16_t> clusters;
176 
177  // Split the 256-bit input data into four 64-bit chunks for processing
178  uint64_t d0l = chunk<0>(inputData);
179  uint64_t d0h = chunk<1>(inputData);
180 
181  uint64_t d1l = chunk<2>(inputData);
182  uint64_t d1h = chunk<3>(inputData);
183 
184  while (d0l or d0h or d1l or d1h){
185  if (clusters.size() > maxCluster) break;
186 
187  uint16_t cluster1 = clusterFinder_sub(d1h, d1l, true);
188  if (cluster1 != 0x3ff) // No cluster was found
189  clusters.push_back(cluster1);
190 
191  if (clusters.size() > maxCluster) break;
192 
193  uint16_t cluster0 = clusterFinder_sub(d0h, d0l, false);
194  if (cluster0 != 0x3ff) // No cluster was found
195  clusters.push_back(cluster0);
196  }
197 
198  if (clusters.empty()) {
199  clusters.push_back(0x3fe);
200  } else {
201  clusters.back() |=1 << 11;
202  }
203 
204  return clusters;
205 }

◆ clusterFinder_sub()

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

Definition at line 226 of file ITkStripsRodEncoder.cxx.

226  {
227  uint8_t hit_addr = 128;
228  uint8_t hitpat_next3 = 0;
229 
230  if (hits_low64){
231  hit_addr = __builtin_ctzll(hits_low64);
232  } else if (hits_high64){
233  hit_addr = __builtin_ctzll(hits_high64) + 64;
234  }
235 
236  hitpat_next3 = getBit_128b(hit_addr+1, hits_high64, hits_low64) << 2
237  | getBit_128b(hit_addr+2, hits_high64, hits_low64) << 1
238  | getBit_128b(hit_addr+3, hits_high64, hits_low64);
239 
240  for (int i=0; i<4; ++i)
241  setBit_128b(hit_addr+i, 0, hits_high64, hits_low64);
242 
243  if (hit_addr == 128) {
244  return 0x3ff;
245  } else {
246  hit_addr += isSecondRow<<7;
247  return hit_addr << 3 | hitpat_next3;
248  }
249 }

◆ encodeData()

void ITkStripsRodEncoder::encodeData ( const std::vector< uint16_t > &  clusters,
std::vector< uint8_t > &  data_encode,
int  typ,
uint8_t  l0tag,
uint8_t  bc_count 
) const
private

code to be filled here

Definition at line 142 of file ITkStripsRodEncoder.cxx.

143  {
145  uint16_t header = getHeaderPhysicsPacket(ptyp, l0tag, bc_count);
146 
147  data_encode.push_back((header>>8) & 0xff);
148  data_encode.push_back(header & 0xff);
149 
150  size_t cluster_count = 0;
151  for ( uint16_t cluster : clusters) {
152  if (cluster_count == 4){
153  // Max number of clusters per package 4
154  break;
155  }
156 
157  uint16_t clusterbits = cluster & 0x7ff;
158  data_encode.push_back((clusterbits>>8) & 0xff);
159  data_encode.push_back(clusterbits & 0xff);
160  cluster_count++;
161  }
162 
163  while (cluster_count < 4) {
164  data_encode.push_back(0x7F); // Cluster empty (0x7FF in 12 bits)
165  data_encode.push_back(0xFF);
166  cluster_count++;
167  }
168 
169  return;
170 }

◆ 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 79 of file ITkStripsRodEncoder.cxx.

80  {
81  //code to be filled here
82 
83  std::unordered_map<uint64_t, std::vector<std::bitset<256>>> allStripData;
84 
85  for (const auto& rdo : vecRDOs) {
86  int barrel = getBarrelEC(rdo);
87  int disk = getDiskLayer(rdo);
88  int phi_mod = getPhiModule(rdo);
89  int eta_mod = getEtaModule(rdo);
90  int strip_max = getStripMax(rdo);
91 
92  if (strip_max < 0){
93  continue;
94  }
95  int eta_group;
96 
97  if (barrel == 0) {
98  eta_group = static_cast<int>(std::floor((eta_mod+1) / 2)); //To work with barrel
99  }else {
100  eta_group = static_cast<int>(std::floor(eta_mod / 2)); //To work with endcap
101  }
102 
103  int chips_per_module = (strip_max + 1) / 128;
104  uint64_t key = geometryKey(barrel, disk, phi_mod, eta_group);
105  auto& StripData = allStripData[key];
106 
107  if (StripData.empty()) {
108  StripData.resize(chips_per_module);
109  }
110 
111  //Populate the bitset for each chip with active strips
112  int strip = getStrip(rdo);
113  int chip = static_cast<int>(std::floor((strip + 1) / 128));
114  int strip_position = strip % 128;
115  int strip_logical_channel = 2*strip_position + (eta_mod & 1);
116  StripData[chip].set(strip_logical_channel);
117  }
118 
119  std::vector<uint8_t> vec8Data;
120  vec8Data.reserve(10);
121 
122  //Iterate over processed strip data and find clusters
123  for (const auto& [key, StripData] : allStripData) {
124  int ptype = 1;
125  for (size_t i = 0; i < StripData.size(); ++i) {
126  if (StripData[i].any()) {
127  std::bitset<256> hits = StripData[i];
128  //Use clusterFinder to extract clusters from the bitset
129  std::vector<uint16_t> clusters = clusterFinder(hits);
130  encodeData(clusters, vec8Data, ptype, m_l0tag , m_bcid);
131  }
132  }
133  //Update BCID and L0Tag counters
134  m_bcid = (m_bcid + 1) & 0x7F;
135  m_l0tag = (m_l0tag + 1) & 0x7F;
136  }
137  packFragments(vec8Data,vec32Data);
138  return;
139 }

◆ finalize()

StatusCode ITkStripsRodEncoder::finalize ( )
overridevirtual

Finalize.

Definition at line 74 of file ITkStripsRodEncoder.cxx.

74  {
75  return StatusCode::SUCCESS;
76 }

◆ getBarrelEC()

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

Get the barrel/endcape info from the RDO.

Definition at line 325 of file ITkStripsRodEncoder.cxx.

325  {
326  const Identifier rdoID{rdo->identify()};
327  int itkBarrel{m_itkStripsID->barrel_ec(rdoID)};
328  return itkBarrel;
329 }

◆ getBit_128b()

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

Definition at line 208 of file ITkStripsRodEncoder.cxx.

208  {
209  if (bit_addr > 127) return false;
210 
211  return bit_addr<64 ? data_low64>>bit_addr & 1 : data_high64>>(bit_addr-64) & 1;
212 }

◆ getDiskLayer()

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

Get disk/layer info from the RDO.

Definition at line 332 of file ITkStripsRodEncoder.cxx.

332  {
333  const Identifier rdoID{rdo->identify()};
334  int itkDiskLayer{m_itkStripsID->layer_disk(rdoID)};
335  return itkDiskLayer;
336 }

◆ getEtaModule()

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

Get the eta value info from the RDO.

Definition at line 346 of file ITkStripsRodEncoder.cxx.

346  {
347  const Identifier rdoID{rdo->identify()};
348  int itkEtaModule{m_itkStripsID->eta_module(rdoID)};
349  return itkEtaModule;
350 }

◆ 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 368 of file ITkStripsRodEncoder.cxx.

368  {
369  uint8_t bcid_low = bc_cout & 0x7; // BCID[2:0]
370  bool bc_parity = getParity_8bits(bc_cout);
371  //TYPE (4 bits) + FlagBit (1 bit) + L0tag (7 bits) + BCID (3 bits) + Parity (1 bit)
372  const uint16_t Header{static_cast<uint16_t>(((uint8_t)typ << 12) | (0x1 << 11) | (l0tag & 0x7f) << 4 | (bcid_low) << 1 | bc_parity)};
373  return Header;
374 
375 }

◆ 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 387 of file ITkStripsRodEncoder.cxx.

387  {
388  const int rodLink{rodLinkFromOnlineID(m_cabling->getOnlineIdFromHash(linkHash))};
389  const uint16_t linkHeader{static_cast<uint16_t>(0x2000 | errorWord | (m_condensed.value() << 8) | rodLink)};
390  return linkHeader;
391 }

◆ 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 380 of file ITkStripsRodEncoder.cxx.

380  {
381  const int rodLink{getRODLink(rdo)};
382  const uint16_t linkHeader{static_cast<uint16_t>(0x2000 | (m_condensed.value() << 8) | rodLink)};
383  return linkHeader;
384 }

◆ getParity_8bits()

bool ITkStripsRodEncoder::getParity_8bits ( uint8_t  val) const
private

Definition at line 360 of file ITkStripsRodEncoder.cxx.

360  {
361  val ^= val >> 4;
362  val ^= val >> 2;
363  val ^= val >> 1;
364  return val&1;
365 }

◆ getPhiModule()

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

Get the phi value info from the RDO.

Definition at line 339 of file ITkStripsRodEncoder.cxx.

339  {
340  const Identifier rdoID{rdo->identify()};
341  int itkPhiModule{m_itkStripsID->phi_module(rdoID)};
342  return itkPhiModule;
343 }

◆ getRODLink()

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

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

Definition at line 313 of file ITkStripsRodEncoder.cxx.

313  {
314  return rodLinkFromOnlineID(onlineID(rdo));
315 }

◆ getStrip()

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

Get the strip number info from the RDO.

Definition at line 294 of file ITkStripsRodEncoder.cxx.

294  {
295  const Identifier rdoID{rdo->identify()};
296  return m_itkStripsID->strip(rdoID);
297 }

◆ getStripMax()

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

Get the maxumum strip value info from the RDO.

Definition at line 353 of file ITkStripsRodEncoder.cxx.

353  {
354  const Identifier rdoID{rdo->identify()};
355  int itkStripMax{m_itkStripsID->strip_max(rdoID)};
356  return itkStripMax;
357 }

◆ 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 394 of file ITkStripsRodEncoder.cxx.

394  {
395  const uint16_t linkTrailer{static_cast<uint16_t>(0x4000 | errorWord)};
396  return linkTrailer;
397 }

◆ initialize()

StatusCode ITkStripsRodEncoder::initialize ( )
overridevirtual

Initialize.

Definition at line 54 of file ITkStripsRodEncoder.cxx.

54  {
55  ATH_MSG_DEBUG("ITkStripsRodEncoder::initialize()");
56 
57  // Retrieve cabling tool
58  ATH_CHECK(m_cabling.retrieve());
59  ATH_MSG_DEBUG("Retrieved tool " << m_cabling);
61  const InDetDD::SCT_DetectorManager* itkStripsDetManager{nullptr};
62  ATH_CHECK(detStore()->retrieve(itkStripsDetManager, "ITkStrip"));
63  const InDetDD::SiDetectorElementCollection* sctDetElementColl{itkStripsDetManager->getDetectorElementCollection()};
64  for (const InDetDD::SiDetectorElement* sctDetElement : *sctDetElementColl) {
65  if (sctDetElement->swapPhiReadoutDirection()) {
66  m_swapModuleID.insert(sctDetElement->identify());
67  }
68  }
69  ATH_MSG_DEBUG("Initialization was successful");
70  return StatusCode::SUCCESS;
71 }

◆ offlineID()

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

Get the offline Identifier from the RDO.


Definition at line 300 of file ITkStripsRodEncoder.cxx.

300  {
301  const Identifier rdoId{rdo->identify()};
302  return m_itkStripsID->wafer_id(rdoId);
303 }

◆ onlineID()

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

Get the online Identifier from the RDO.

Definition at line 306 of file ITkStripsRodEncoder.cxx.

306  {
307  const Identifier waferID{offlineID(rdo)};
308  const IdentifierHash offlineIDHash{m_itkStripsID->wafer_hash(waferID)};
309  return static_cast<uint32_t>(m_cabling->getOnlineIdFromHash(offlineIDHash));
310 }

◆ 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 252 of file ITkStripsRodEncoder.cxx.

252  {
253  int num8Words{static_cast<int>(vec8Words.size())};
254  if (num8Words % 4 != 0) {
255  // Just add additional 8-bit words to make the size a multiple of 4
256  while (num8Words % 4 != 0) {
257  vec8Words.push_back(0x40); // Padding byte
258  num8Words++;
259  }
260  }
261  // Now merge 4 consecutive 8-bit words into 32-bit words
262  const unsigned short int numWords{4};
263  const unsigned short int position[numWords]{0, 8, 16, 24};
264  unsigned short int arr8Words[numWords]{0, 0, 0, 0};
265 
266  for (int i{0}; i<num8Words; i += numWords) {
267  for (int j{0}; j<numWords; j++) {
268  arr8Words[j] = vec8Words[i + j];
269  }
270  const uint32_t uint32Word{set32Bits(arr8Words, position, numWords)};
271  vec32Words.push_back(uint32Word);
272  }
273  return;
274 }

◆ 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 278 of file ITkStripsRodEncoder.cxx.

279 {
280  uint32_t uint32Word{0};
281  uint32_t pos{0};
282  uint32_t uint8Word{0};
283  for (uint16_t i{0}; i<numWords; i++) {
284  uint8Word = static_cast<uint32_t>(*(arr8Words + i));
285  pos = static_cast<uint32_t>(*(position + i));
286  uint32Word |= (uint8Word << pos); // Shift the 8-bit word to its correct position and merge
287  }
288  return uint32Word;
289 }

◆ 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 215 of file ITkStripsRodEncoder.cxx.

215  {
216  if (bit_addr < 64) {
217  data_low64 = (data_low64 & ~(1ULL << bit_addr)) | ((uint64_t)value << bit_addr);
218  } else if (bit_addr < 128) {
219  data_high64 =
220  (data_high64 & ~(1ULL << (bit_addr-64))) | ((uint64_t)value << (bit_addr-64));
221  }
222 }

◆ side()

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

Get the side info from the RDO.

Definition at line 318 of file ITkStripsRodEncoder.cxx.

318  {
319  const Identifier rdoID{rdo->identify()};
320  int itkSide{m_itkStripsID->side(rdoID)};
321  return itkSide;
322 }

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 75 of file ITkStripsRodEncoder.h.

◆ m_cabling

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

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

Definition at line 157 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 167 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 164 of file ITkStripsRodEncoder.h.

◆ m_l0tag

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

Definition at line 76 of file ITkStripsRodEncoder.h.

◆ m_swapModuleID

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

Swap Module identifier, set by SCTRawContByteStreamTool.

Definition at line 170 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
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:30
ITkStripsRodEncoder::getDiskLayer
int getDiskLayer(const SCT_RDORawData *rdo) const
Get disk/layer info from the RDO.
Definition: ITkStripsRodEncoder.cxx:332
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
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:170
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:173
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
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ITkStripsRodEncoder::onlineID
uint32_t onlineID(const SCT_RDORawData *rdo) const
Get the online Identifier from the RDO.
Definition: ITkStripsRodEncoder.cxx:306
ITkStripsRodEncoder::clusterFinder_sub
uint16_t clusterFinder_sub(uint64_t &hits_high64, uint64_t &hits_low64, bool isSecondRow) const
Definition: ITkStripsRodEncoder.cxx:226
ITkStripsRodEncoder::getPhiModule
int getPhiModule(const SCT_RDORawData *rdo) const
Get the phi value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:339
ITkStripsRodEncoder::set32Bits
uint32_t set32Bits(const unsigned short int *arr8Words, const unsigned short int *position, const unsigned short int &numWords) const
Definition: ITkStripsRodEncoder.cxx:278
ITkStripsRodEncoder::getStripMax
int getStripMax(const SCT_RDORawData *rdo) const
Get the maxumum strip value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:353
ITkStripsRodEncoder::m_condensed
BooleanProperty m_condensed
Example Boolean used to determine decoding mode, maybe unused finally.
Definition: ITkStripsRodEncoder.h:167
ITkStripsRodEncoder::getRODLink
int getRODLink(const SCT_RDORawData *rdo) const
Get the ROD link number info in the RDO header data.
Definition: ITkStripsRodEncoder.cxx:313
columnar::ContainerId::cluster
@ cluster
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
lumiFormat.i
int i
Definition: lumiFormat.py:85
ITkStripsRodEncoder::offlineID
Identifier offlineID(const SCT_RDORawData *rdo) const
Get the offline Identifier from the RDO.
Definition: ITkStripsRodEncoder.cxx:300
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
test_pyathena.parent
parent
Definition: test_pyathena.py:15
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:360
ITkStripsRodEncoder::getEtaModule
int getEtaModule(const SCT_RDORawData *rdo) const
Get the eta value info from the RDO.
Definition: ITkStripsRodEncoder.cxx:346
ITkStripsRodEncoder::m_bcid
std::atomic< uint8_t > m_bcid
Method to encode RDO data to vector of 16 bin words.
Definition: ITkStripsRodEncoder.h:75
ITkStripsRodEncoder::setBit_128b
void setBit_128b(uint8_t bit_addr, bool value, uint64_t &data_high64, uint64_t &data_low64) const
Definition: ITkStripsRodEncoder.cxx:215
ITkStripsRodEncoder::m_l0tag
std::atomic< uint8_t > m_l0tag
Definition: ITkStripsRodEncoder.h:76
ITkStripsRodEncoder::getBit_128b
bool getBit_128b(uint8_t bit_addr, uint64_t data_high64, uint64_t data_low64) const
Definition: ITkStripsRodEncoder.cxx:208
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
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:368
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
ITkStripsRodEncoder::encodeData
void encodeData(const std::vector< uint16_t > &clusters, std::vector< uint8_t > &data_encode, int typ, uint8_t l0tag, uint8_t bc_count) const
Definition: ITkStripsRodEncoder.cxx:142
ITkStripsRodEncoder::getStrip
int getStrip(const SCT_RDORawData *rdo) const
Get the strip number info from the RDO.
Definition: ITkStripsRodEncoder.cxx:294
ITkStripsRodEncoder::getBarrelEC
int getBarrelEC(const SCT_RDORawData *rdo) const
Get the barrel/endcape info from the RDO.
Definition: ITkStripsRodEncoder.cxx:325
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:196
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:164
ITkStripsRodEncoder::m_cabling
ToolHandle< ISCT_CablingTool > m_cabling
Providing mappings of online and offline identifiers and also serial numbers.
Definition: ITkStripsRodEncoder.h:157
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:252
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14