Project
Loading...
Searching...
No Matches
o2::itsmft::AlpideCoder Class Reference

#include <AlpideCoder.h>

Classes

struct  HitsRecord
 
struct  PixLink
 

Public Types

enum  VerifierMismatchResult { UNEXPECTED_MISMATCH , EXPECTED_MISMATCH , RESOLVED }
 

Public Member Functions

 AlpideCoder ()=default
 
 ~AlpideCoder ()=default
 
int encodeChip (PayLoadCont &buffer, const o2::itsmft::ChipPixelData &chipData, uint16_t chipInModule, uint16_t bc, uint16_t roflags=0)
 
void addEmptyChip (PayLoadCont &buffer, int chipInMod, int bc)
 
void print () const
 
void reset ()
 

Static Public Member Functions

static bool isData (uint16_t v)
 
static bool isData (uint8_t v)
 
static bool isEmptyChip (uint8_t b)
 
static void setNoisyPixels (const NoiseMap *noise)
 
template<class T , typename CG >
static int decodeChip (ChipPixelData &chipData, T &buffer, std::vector< uint16_t > &seenChips, CG cidGetter)
 decode alpide data for the next non-empty chip from the buffer
 
template<typename LG , typename CG >
static bool verifyDecodedCable (std::map< int, ChipPixelData * > &seenChips, PayLoadCont &buffer, std::vector< uint16_t > &seenChipIDs, LG lidGetter, CG cidGetter)
 
static VerifierMismatchResult handleVerifierMismatch (PayLoadCont &buffer, PayLoadCont &reconstructedData, ChipPixelData *currentChip)
 
static bool isChipEmpty (uint8_t v)
 
static bool isChipHeader (uint8_t v)
 
static bool isChipTrailer (uint8_t v)
 
static bool isChipHeaderOrEmpty (uint8_t v)
 check if the byte corresponds to chip_header or chip_empty flag
 
static uint8_t bc2TimeStamp (int bc)
 
static uint16_t timeStamp2BC (uint8_t ts)
 

Static Public Attributes

static constexpr uint32_t ExpectChipHeader = 0x1 << 0
 
static constexpr uint32_t ExpectChipTrailer = 0x1 << 1
 
static constexpr uint32_t ExpectChipEmpty = 0x1 << 2
 
static constexpr uint32_t ExpectRegion = 0x1 << 3
 
static constexpr uint32_t ExpectData = 0x1 << 4
 
static constexpr uint32_t ExpectBUSY = 0x1 << 5
 
static constexpr uint32_t ExpectNextChip = ExpectChipHeader | ExpectChipEmpty
 
static constexpr int NRows = 512
 
static constexpr int RowMask = NRows - 1
 
static constexpr int NCols = 1024
 
static constexpr int NRegions = 32
 
static constexpr int NDColInReg = NCols / NRegions / 2
 
static constexpr int HitMapSize = 7
 
static constexpr uint32_t MaskEncoder = 0x3c00
 
static constexpr uint32_t MaskPixID = 0x3ff
 
static constexpr uint32_t MaskDColID = MaskEncoder | MaskPixID
 
static constexpr uint32_t MaskRegion = 0x1f
 
static constexpr uint32_t MaskChipID = 0x0f
 
static constexpr uint32_t MaskROFlags = 0x0f
 
static constexpr uint8_t MaskErrBusyViolation = 0x1 << 3
 
static constexpr uint8_t MaskErrDataOverrun = 0x3 << 2
 
static constexpr uint8_t MaskErrFatal = 0x7 << 1
 
static constexpr uint8_t MaskErrFlushedIncomplete = 0x1 << 2
 
static constexpr uint8_t MaskErrStrobeExtended = 0x1 << 1
 
static constexpr uint32_t MaskTimeStamp = 0xff
 
static constexpr uint32_t MaskReserved = 0xff
 
static constexpr uint32_t MaskHitMap = 0x7f
 
static constexpr uint32_t REGION = 0xc0
 
static constexpr uint32_t REGION_MASK = 0xe0
 
static constexpr uint32_t CHIPHEADER = 0xa0
 
static constexpr uint32_t CHIPTRAILER = 0xb0
 
static constexpr uint32_t CHIPEMPTY = 0xe0
 
static constexpr uint32_t DATALONG = 0x0000
 
static constexpr uint32_t DATASHORT = 0x4000
 
static constexpr uint32_t BUSYOFF = 0xf0
 
static constexpr uint32_t BUSYON = 0xf1
 
static constexpr uint32_t ERROR_MASK = 0xf0
 
static constexpr int Error = -1
 
static constexpr int EOFFlag = -100
 

Detailed Description

Decoder / Encoder of ALPIDE payload stream. All decoding methods are static. Only a few encoding methods are non-static but can be made so if needed (will require to make the encoding buffers external to this class)

Definition at line 45 of file AlpideCoder.h.

Member Enumeration Documentation

◆ VerifierMismatchResult

Enumerator
UNEXPECTED_MISMATCH 
EXPECTED_MISMATCH 
RESOLVED 

Definition at line 617 of file AlpideCoder.h.

Constructor & Destructor Documentation

◆ AlpideCoder()

o2::itsmft::AlpideCoder::AlpideCoder ( )
default

◆ ~AlpideCoder()

o2::itsmft::AlpideCoder::~AlpideCoder ( )
default

Member Function Documentation

◆ addEmptyChip()

void o2::itsmft::AlpideCoder::addEmptyChip ( PayLoadCont buffer,
int  chipInMod,
int  bc 
)
inline

Definition at line 755 of file AlpideCoder.h.

◆ bc2TimeStamp()

static uint8_t o2::itsmft::AlpideCoder::bc2TimeStamp ( int  bc)
inlinestatic

Definition at line 748 of file AlpideCoder.h.

◆ decodeChip()

template<class T , typename CG >
static int o2::itsmft::AlpideCoder::decodeChip ( ChipPixelData chipData,
T &  buffer,
std::vector< uint16_t > &  seenChips,
CG  cidGetter 
)
inlinestatic

decode alpide data for the next non-empty chip from the buffer

Definition at line 128 of file AlpideCoder.h.

◆ encodeChip()

int AlpideCoder::encodeChip ( PayLoadCont buffer,
const o2::itsmft::ChipPixelData chipData,
uint16_t  chipInModule,
uint16_t  bc,
uint16_t  roflags = 0 
)

Definition at line 44 of file AlpideCoder.cxx.

◆ handleVerifierMismatch()

static VerifierMismatchResult o2::itsmft::AlpideCoder::handleVerifierMismatch ( PayLoadCont buffer,
PayLoadCont reconstructedData,
ChipPixelData currentChip 
)
inlinestatic

Definition at line 623 of file AlpideCoder.h.

◆ isChipEmpty()

static bool o2::itsmft::AlpideCoder::isChipEmpty ( uint8_t  v)
inlinestatic

Definition at line 737 of file AlpideCoder.h.

◆ isChipHeader()

static bool o2::itsmft::AlpideCoder::isChipHeader ( uint8_t  v)
inlinestatic

Definition at line 738 of file AlpideCoder.h.

◆ isChipHeaderOrEmpty()

static bool o2::itsmft::AlpideCoder::isChipHeaderOrEmpty ( uint8_t  v)
inlinestatic

check if the byte corresponds to chip_header or chip_empty flag

Definition at line 742 of file AlpideCoder.h.

◆ isChipTrailer()

static bool o2::itsmft::AlpideCoder::isChipTrailer ( uint8_t  v)
inlinestatic

Definition at line 739 of file AlpideCoder.h.

◆ isData() [1/2]

static bool o2::itsmft::AlpideCoder::isData ( uint16_t  v)
inlinestatic

Definition at line 113 of file AlpideCoder.h.

◆ isData() [2/2]

static bool o2::itsmft::AlpideCoder::isData ( uint8_t  v)
inlinestatic

Definition at line 114 of file AlpideCoder.h.

◆ isEmptyChip()

static bool o2::itsmft::AlpideCoder::isEmptyChip ( uint8_t  b)
inlinestatic

Definition at line 122 of file AlpideCoder.h.

◆ print()

void AlpideCoder::print ( ) const

Definition at line 22 of file AlpideCoder.cxx.

◆ reset()

void AlpideCoder::reset ( )

Definition at line 36 of file AlpideCoder.cxx.

◆ setNoisyPixels()

static void o2::itsmft::AlpideCoder::setNoisyPixels ( const NoiseMap noise)
inlinestatic

Definition at line 124 of file AlpideCoder.h.

◆ timeStamp2BC()

static uint16_t o2::itsmft::AlpideCoder::timeStamp2BC ( uint8_t  ts)
inlinestatic

Definition at line 749 of file AlpideCoder.h.

◆ verifyDecodedCable()

template<typename LG , typename CG >
static bool o2::itsmft::AlpideCoder::verifyDecodedCable ( std::map< int, ChipPixelData * > &  seenChips,
PayLoadCont buffer,
std::vector< uint16_t > &  seenChipIDs,
LG  lidGetter,
CG  cidGetter 
)
inlinestatic

Verifies the decoder by comparing the contents a cable by re-encoding seen chips back into the ALPIDE format.

Definition at line 469 of file AlpideCoder.h.

Member Data Documentation

◆ BUSYOFF

constexpr uint32_t o2::itsmft::AlpideCoder::BUSYOFF = 0xf0
staticconstexpr

Definition at line 108 of file AlpideCoder.h.

◆ BUSYON

constexpr uint32_t o2::itsmft::AlpideCoder::BUSYON = 0xf1
staticconstexpr

Definition at line 109 of file AlpideCoder.h.

◆ CHIPEMPTY

constexpr uint32_t o2::itsmft::AlpideCoder::CHIPEMPTY = 0xe0
staticconstexpr

Definition at line 105 of file AlpideCoder.h.

◆ CHIPHEADER

constexpr uint32_t o2::itsmft::AlpideCoder::CHIPHEADER = 0xa0
staticconstexpr

Definition at line 103 of file AlpideCoder.h.

◆ CHIPTRAILER

constexpr uint32_t o2::itsmft::AlpideCoder::CHIPTRAILER = 0xb0
staticconstexpr

Definition at line 104 of file AlpideCoder.h.

◆ DATALONG

constexpr uint32_t o2::itsmft::AlpideCoder::DATALONG = 0x0000
staticconstexpr

Definition at line 106 of file AlpideCoder.h.

◆ DATASHORT

constexpr uint32_t o2::itsmft::AlpideCoder::DATASHORT = 0x4000
staticconstexpr

Definition at line 107 of file AlpideCoder.h.

◆ EOFFlag

constexpr int o2::itsmft::AlpideCoder::EOFFlag = -100
staticconstexpr

Definition at line 117 of file AlpideCoder.h.

◆ Error

constexpr int o2::itsmft::AlpideCoder::Error = -1
staticconstexpr

Definition at line 116 of file AlpideCoder.h.

◆ ERROR_MASK

constexpr uint32_t o2::itsmft::AlpideCoder::ERROR_MASK = 0xf0
staticconstexpr

Definition at line 110 of file AlpideCoder.h.

◆ ExpectBUSY

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectBUSY = 0x1 << 5
staticconstexpr

Definition at line 75 of file AlpideCoder.h.

◆ ExpectChipEmpty

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectChipEmpty = 0x1 << 2
staticconstexpr

Definition at line 72 of file AlpideCoder.h.

◆ ExpectChipHeader

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectChipHeader = 0x1 << 0
staticconstexpr

Definition at line 70 of file AlpideCoder.h.

◆ ExpectChipTrailer

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectChipTrailer = 0x1 << 1
staticconstexpr

Definition at line 71 of file AlpideCoder.h.

◆ ExpectData

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectData = 0x1 << 4
staticconstexpr

Definition at line 74 of file AlpideCoder.h.

◆ ExpectNextChip

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectNextChip = ExpectChipHeader | ExpectChipEmpty
staticconstexpr

Definition at line 76 of file AlpideCoder.h.

◆ ExpectRegion

constexpr uint32_t o2::itsmft::AlpideCoder::ExpectRegion = 0x1 << 3
staticconstexpr

Definition at line 73 of file AlpideCoder.h.

◆ HitMapSize

constexpr int o2::itsmft::AlpideCoder::HitMapSize = 7
staticconstexpr

Definition at line 82 of file AlpideCoder.h.

◆ MaskChipID

constexpr uint32_t o2::itsmft::AlpideCoder::MaskChipID = 0x0f
staticconstexpr

Definition at line 89 of file AlpideCoder.h.

◆ MaskDColID

constexpr uint32_t o2::itsmft::AlpideCoder::MaskDColID = MaskEncoder | MaskPixID
staticconstexpr

Definition at line 87 of file AlpideCoder.h.

◆ MaskEncoder

constexpr uint32_t o2::itsmft::AlpideCoder::MaskEncoder = 0x3c00
staticconstexpr

Definition at line 85 of file AlpideCoder.h.

◆ MaskErrBusyViolation

constexpr uint8_t o2::itsmft::AlpideCoder::MaskErrBusyViolation = 0x1 << 3
staticconstexpr

Definition at line 91 of file AlpideCoder.h.

◆ MaskErrDataOverrun

constexpr uint8_t o2::itsmft::AlpideCoder::MaskErrDataOverrun = 0x3 << 2
staticconstexpr

Definition at line 92 of file AlpideCoder.h.

◆ MaskErrFatal

constexpr uint8_t o2::itsmft::AlpideCoder::MaskErrFatal = 0x7 << 1
staticconstexpr

Definition at line 93 of file AlpideCoder.h.

◆ MaskErrFlushedIncomplete

constexpr uint8_t o2::itsmft::AlpideCoder::MaskErrFlushedIncomplete = 0x1 << 2
staticconstexpr

Definition at line 94 of file AlpideCoder.h.

◆ MaskErrStrobeExtended

constexpr uint8_t o2::itsmft::AlpideCoder::MaskErrStrobeExtended = 0x1 << 1
staticconstexpr

Definition at line 95 of file AlpideCoder.h.

◆ MaskHitMap

constexpr uint32_t o2::itsmft::AlpideCoder::MaskHitMap = 0x7f
staticconstexpr

Definition at line 98 of file AlpideCoder.h.

◆ MaskPixID

constexpr uint32_t o2::itsmft::AlpideCoder::MaskPixID = 0x3ff
staticconstexpr

Definition at line 86 of file AlpideCoder.h.

◆ MaskRegion

constexpr uint32_t o2::itsmft::AlpideCoder::MaskRegion = 0x1f
staticconstexpr

Definition at line 88 of file AlpideCoder.h.

◆ MaskReserved

constexpr uint32_t o2::itsmft::AlpideCoder::MaskReserved = 0xff
staticconstexpr

Definition at line 97 of file AlpideCoder.h.

◆ MaskROFlags

constexpr uint32_t o2::itsmft::AlpideCoder::MaskROFlags = 0x0f
staticconstexpr

Definition at line 90 of file AlpideCoder.h.

◆ MaskTimeStamp

constexpr uint32_t o2::itsmft::AlpideCoder::MaskTimeStamp = 0xff
staticconstexpr

Definition at line 96 of file AlpideCoder.h.

◆ NCols

constexpr int o2::itsmft::AlpideCoder::NCols = 1024
staticconstexpr

Definition at line 79 of file AlpideCoder.h.

◆ NDColInReg

constexpr int o2::itsmft::AlpideCoder::NDColInReg = NCols / NRegions / 2
staticconstexpr

Definition at line 81 of file AlpideCoder.h.

◆ NRegions

constexpr int o2::itsmft::AlpideCoder::NRegions = 32
staticconstexpr

Definition at line 80 of file AlpideCoder.h.

◆ NRows

constexpr int o2::itsmft::AlpideCoder::NRows = 512
staticconstexpr

Definition at line 77 of file AlpideCoder.h.

◆ REGION

constexpr uint32_t o2::itsmft::AlpideCoder::REGION = 0xc0
staticconstexpr

Definition at line 101 of file AlpideCoder.h.

◆ REGION_MASK

constexpr uint32_t o2::itsmft::AlpideCoder::REGION_MASK = 0xe0
staticconstexpr

Definition at line 102 of file AlpideCoder.h.

◆ RowMask

constexpr int o2::itsmft::AlpideCoder::RowMask = NRows - 1
staticconstexpr

Definition at line 78 of file AlpideCoder.h.


The documentation for this class was generated from the following files: