ATLAS Offline Software
|
#include <FibrePackerBase.h>
Public Types | |
enum | InputDataFrameType { InputDataFrameType::Normal, InputDataFrameType::Alignement } |
type of input data frame More... | |
using | myDataWord = uint32_t |
Public Member Functions | |
FibrePackerBase () | |
Basic class for FEX input data packers. More... | |
virtual | ~FibrePackerBase () |
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 |
virtual std::vector< myDataWord > | getPackedData (const std::vector< myDataWord > &inFrame, myDataWord bcNumber, InputDataFrameType frameType) const =0 |
Function taking SC energies and other stuff and packing them into a data packet. More... | |
virtual std::vector< myDataWord > | getPackedControl (const std::vector< myDataWord > &inFrame, myDataWord bcNumber, InputDataFrameType frameType) const =0 |
Function returning control words. More... | |
virtual bool | checkCRC (const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const =0 |
virtual myDataWord | getBcNumber (const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const =0 |
virtual myDataWord | getBcMask (InputDataFrameType frameType) const =0 |
virtual std::vector< myDataWord > | getUnpackedData (const std::vector< myDataWord > &encodedData, InputDataFrameType frameType) const =0 |
Public Attributes | |
myDataWord | K_28_5 = 0xbc |
myDataWord | K_28_1 = 0x3c |
myDataWord | K_28_0 = 0x1c |
Definition at line 9 of file FibrePackerBase.h.
using FibrePackerBase::myDataWord = uint32_t |
Definition at line 25 of file FibrePackerBase.h.
|
strong |
type of input data frame
Enumerator | |
---|---|
Normal | Standard data frame. |
Alignement | Special mapping/alignement frame. |
Definition at line 37 of file FibrePackerBase.h.
|
inline |
Basic class for FEX input data packers.
FibrePackerBase is an abstract class providing standard interface for packer classes. In addition it contains definition of hex codes for standard K-values and standard implementation of 9 bit CRC32 and CRC23. It is assumed that derived classes will
override packing and unpacking functions and use provided CRC calculation.
Definition at line 22 of file FibrePackerBase.h.
|
inlinevirtual |
Definition at line 23 of file FibrePackerBase.h.
|
pure virtual |
Implemented in EfexLatomeFibrePacker, EfexTrexFibrePacker, and EfexTobPacker.
|
virtual |
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.
|
virtual |
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.
|
virtual |
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.
|
pure virtual |
Implemented in EfexTobPacker, EfexLatomeFibrePacker, and EfexTrexFibrePacker.
|
pure virtual |
Implemented in EfexLatomeFibrePacker, EfexTrexFibrePacker, and EfexTobPacker.
|
pure virtual |
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
Implemented in EfexLatomeFibrePacker, EfexTrexFibrePacker, and EfexTobPacker.
|
pure virtual |
Function taking SC energies and other stuff and packing them into a data packet.
Implemented in EfexLatomeFibrePacker, EfexTrexFibrePacker, and EfexTobPacker.
|
pure virtual |
Implemented in EfexLatomeFibrePacker, EfexTrexFibrePacker, and EfexTobPacker.
myDataWord FibrePackerBase::K_28_0 = 0x1c |
Definition at line 32 of file FibrePackerBase.h.
myDataWord FibrePackerBase::K_28_1 = 0x3c |
Definition at line 31 of file FibrePackerBase.h.
myDataWord FibrePackerBase::K_28_5 = 0xbc |
Definition at line 30 of file FibrePackerBase.h.