![]() |
ATLAS Offline Software
|
#include <EfexLatomeFibrePacker.h>
Public Types | |
enum | InputDataFrameType { InputDataFrameType::Normal, InputDataFrameType::Alignement } |
type of input data frame More... | |
using | myDataWord = uint32_t |
Public Member Functions | |
EfexLatomeFibrePacker () | |
Class implementing packing and unpacking data into LAr LATOME eFex format. More... | |
virtual | ~EfexLatomeFibrePacker () |
virtual std::vector< myDataWord > | getPackedData (const std::vector< myDataWord > &inFrame, myDataWord bcNumber, InputDataFrameType frameType) const override |
Function packing the data into the LATOME format, either standard or alignement frame. More... | |
virtual std::vector< myDataWord > | getPackedControl (const std::vector< myDataWord > &inFrame, myDataWord bcNumber, InputDataFrameType frameType) const override |
Function returning control words. More... | |
virtual bool | checkCRC (const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const override |
virtual myDataWord | getBcNumber (const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const override |
virtual myDataWord | getBcMask (InputDataFrameType frameType) const override |
virtual std::vector< myDataWord > | getUnpackedData (const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const override |
Function unpacking the data from LATOME format, either standard or alignement frame. More... | |
virtual myDataWord | crc9full (const std::vector< myDataWord > &inwords, size_t num_bits) const |
Functions calculating CRC over input data. More... | |
virtual myDataWord | crc9d32 (const std::vector< myDataWord > &inwords, size_t num_words, bool bit_reverse) const |
virtual myDataWord | crc9d23 (myDataWord inword, myDataWord in_crc, bool bit_reverse) const |
Public Attributes | |
myDataWord | K_28_5 = 0xbc |
myDataWord | K_28_1 = 0x3c |
myDataWord | K_28_0 = 0x1c |
Definition at line 10 of file EfexLatomeFibrePacker.h.
|
inherited |
Definition at line 25 of file FibrePackerBase.h.
|
stronginherited |
type of input data frame
Enumerator | |
---|---|
Normal | Standard data frame. |
Alignement | Special mapping/alignement frame. |
Definition at line 37 of file FibrePackerBase.h.
|
inline |
Class implementing packing and unpacking data into LAr LATOME eFex format.
The class does heavy lifting of packing and unpacking LATOME data packet. The format is taken from https://gitlab.cern.ch/atlas-lar-be-firmware/LATOME/LATOME/raw/master/LATOME/doc/LAr-LATOME-FW/LAr-LATOME-FW.pdf version from 29th of January 2020
Definition at line 21 of file EfexLatomeFibrePacker.h.
|
inlinevirtual |
Definition at line 22 of file EfexLatomeFibrePacker.h.
|
overridevirtual |
Implements FibrePackerBase.
Definition at line 106 of file EfexLatomeFibrePacker.cxx.
|
virtualinherited |
CRC9D23 as specified in LAr VHDL
Function does CRC9D23 calculation. Thanslated from LATOME VHDL to python by Ed Flaherty, then to c++ by jb
Definition at line 108 of file FibrePackerBase.cxx.
|
virtualinherited |
CRC9D32 as specified in LAr VHDL
Function does CRC9D32 calculation. Thanslated from LATOME VHDL to python by Ed Flaherty, then to c++ by jb
Definition at line 37 of file FibrePackerBase.cxx.
|
virtualinherited |
Functions calculating CRC over input data.
CRC9 with polynomial 1011111011 over num_bits bits
Uses a more succinct CRC calculation and flexible in terms of digits, checked versus old code but only supports bit reversal = true
Definition at line 8 of file FibrePackerBase.cxx.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
Function returning control words.
The control words are used to distinguish between standard data and K characters. Each K character is 8 bit long and can be at one of four positions in 32 bit word. Control words encode location of K characters in 32 bit words, for example 0x1 means K character in the lowest byte, 0x3 means two K-characters in two lowest bytes
Implements FibrePackerBase.
Definition at line 85 of file EfexLatomeFibrePacker.cxx.
|
overridevirtual |
Function packing the data into the LATOME format, either standard or alignement frame.
The function expects input data in vector inFrame. For normal frame, this is a vector of supercell energies. For alignement frame this function expects LATOME meta information in following format: inFrame[0] ... latome_id inFrame[1] ... latome_src_id inFrame[2] ... fiber_id
FEX_ID is always set to zero because it's eFex
Implements FibrePackerBase.
Definition at line 9 of file EfexLatomeFibrePacker.cxx.
|
overridevirtual |
Function unpacking the data from LATOME format, either standard or alignement frame.
For normal frame, the function returns a vector of supercell energies. For alignement frame the function returns LATOME meta information in following format: inFrame[0] ... latome_id inFrame[1] ... latome_src_id inFrame[2] ... fiber_id
Implements FibrePackerBase.
Definition at line 168 of file EfexLatomeFibrePacker.cxx.
|
inherited |
Definition at line 32 of file FibrePackerBase.h.
|
inherited |
Definition at line 31 of file FibrePackerBase.h.
|
inherited |
Definition at line 30 of file FibrePackerBase.h.