ATLAS Offline Software
Loading...
Searching...
No Matches
Decoder::Module Struct Reference
Collaboration diagram for Decoder::Module:

Classes

struct  Id

Public Member Functions

void addTob (const xAOD::eFexTauRoI &tob, uint32_t sliceNumber)
void addTob (const xAOD::eFexEMRoI &tob, uint32_t sliceNumber)
std::vector< uint32_t > getWords (const Id &id, int numSlices)

Public Attributes

std::map< Slice::Id, Sliceslices

Detailed Description

Definition at line 322 of file eFexByteStreamTool.cxx.

Member Function Documentation

◆ addTob() [1/2]

void Decoder::Module::addTob ( const xAOD::eFexEMRoI & tob,
uint32_t sliceNumber )
inline

Definition at line 334 of file eFexByteStreamTool.cxx.

334 {
335 const uint32_t fpgaNumber = (tob.isTOB()) ? 0 : tob.fpga(); // must put emTobs in fpga0, tauTobs in fpga1
336 slices[{.sliceNumber=sliceNumber,.fpgaNumber=fpgaNumber}].addTob(tob);
337 }
unsigned int fpga() const
FPGA number.
char isTOB() const
Is this one a TOB (or xTOB partner of a TOB)?
setEventNumber uint32_t
std::map< Slice::Id, Slice > slices

◆ addTob() [2/2]

void Decoder::Module::addTob ( const xAOD::eFexTauRoI & tob,
uint32_t sliceNumber )
inline

Definition at line 330 of file eFexByteStreamTool.cxx.

330 {
331 const uint32_t fpgaNumber = (tob.isTOB()) ? 1 : tob.fpga(); // must put emTobs in fpga0, tauTobs in fpga1
332 slices[{.sliceNumber=sliceNumber,.fpgaNumber=fpgaNumber}].addTob(tob);
333 }
char isTOB() const
Is this one a TOB (or xTOB partner of a TOB)?
unsigned int fpga() const
FPGA number.

◆ getWords()

std::vector< uint32_t > Decoder::Module::getWords ( const Id & id,
int numSlices )
inline

Definition at line 338 of file eFexByteStreamTool.cxx.

338 {
339 std::vector<uint32_t> out;
340
341 for(auto& [id,slice] : slices) {
342 auto sliceWords = slice.getWords(id);
343 out.insert(out.end(), sliceWords.begin(), sliceWords.end());
344 }
345
346 const size_t efexBlockSize = out.size(); // total size
347
348 uint32_t efexTrailer1 = 0;
349 efexTrailer1 += (efexBlockSize&0xfff);
350 efexTrailer1 += (id.efexNumber&0xf)<<12;
351 efexTrailer1 += (id.shelfNumber&0x1)<<16;
352 efexTrailer1 += (numSlices&0xf)<<24;
353
354 uint32_t efexTrailer2 = 0; // should really compute CRC and put in 20 MSBs
355
356 out.push_back(efexTrailer1);
357 out.push_back(efexTrailer2);
358 return out;
359 }

Member Data Documentation

◆ slices

std::map<Slice::Id,Slice> Decoder::Module::slices

Definition at line 360 of file eFexByteStreamTool.cxx.


The documentation for this struct was generated from the following file: