|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef PIXELRAWDATABYTESTREAM_PIXEL_RODDECODER_H
6 #define PIXELRAWDATABYTESTREAM_PIXEL_RODDECODER_H
12 #include "GaudiKernel/ServiceHandle.h"
13 #include "eformat/SourceIdentifier.h"
33 const IInterface*
parent ) ;
44 std::vector<IdentifierHash>* vecHash,
const EventContext& ctx)
const override;
107 bool CheckLinkStart(
const bool Link_start,
const int rodId,
const unsigned int mLink,
const unsigned int mBCID,
const unsigned int mLVL1ID,
const int LVL1A);
120 BooleanProperty
m_checkDuplicatedPixel{
this,
"CheckDuplicatedPixel",
true,
"Check duplicated pixels in fillCollection method"};
138 {
this,
"PixelReadoutManager",
"PixelReadoutManager",
"Pixel readout manager" };
141 {
this,
"PixelCablingCondData",
"PixelCablingCondData",
"Pixel cabling key"};
144 {
this,
"PixelHitDiscCnfgData",
"PixelHitDiscCnfgData",
"Pixel FEI4 HitDiscConfig key"};
169 std::array<uint64_t, PixelRodDecoder::ERROR_CONTAINER_MAX> &bsErrWord,
172 const char *error_description)
const;
uint32_t decodeL1ID_IBL(const uint32_t word) const
std::atomic_uint m_numFlaggedErrors
uint32_t decodeFeI4Bflag_IBL(const uint32_t word) const
std::atomic_uint m_numBCIDWarnings
std::atomic_uint m_numDecodingErrors
void checkUnequalNumberOfHeaders(const unsigned int nFragmentsPerFE[8], uint32_t robId) const
if the check duplicated RDO flag is true, check that this RDO is unique (returns true if unique)
constexpr static size_t ERROR_CONTAINER_MAX
InDetRawDataCollection< PixelRDORawData > PixelRawCollection
std::atomic_uint m_numTrailerErrors
IDC like storage for BS errors, TODO, customise implementation further so that we store int rather th...
ServiceHandle< InDetDD::IPixelReadoutManager > m_pixelReadout
uint32_t decodeFE(const uint32_t word) const
bool CheckLinkStart(const bool Link_start, const int rodId, const unsigned int mLink, const unsigned int mBCID, const unsigned int mLVL1ID, const int LVL1A)
uint32_t decodeL1ID(const uint32_t word) const
uint32_t decodeFEFlags2(const uint32_t word) const
uint32_t extractSLinkfromLinkNum(const uint32_t linkNum) const
SG::ReadCondHandleKey< PixelHitDiscCnfgData > m_condHitDiscCnfgKey
uint32_t decodeToT(const uint32_t word, bool isIBLorDBM) const
PixelErrorsEnum
< Possible errors in pixel data decoding
StatusCode initialize() override
uint32_t decodeModule(const uint32_t word) const
uint32_t decodeColumn(const uint32_t word, bool isIBLorDBM) const
std::atomic_uint m_masked_errors
std::atomic_uint m_numDuplicatedPixels
std::atomic_uint m_numPreambleErrors
StatusCode finalize() override
uint32_t getDataType(unsigned int rawDataWord, bool link_start) const
std::atomic_uint m_numBCIDErrors
uint32_t decodeServiceCode_IBL(const uint32_t word) const
uint32_t decodeMCCFlags(const uint32_t word) const
std::atomic_uint m_numTimeOutErrors
::StatusCode StatusCode
StatusCode definition for legacy code.
uint32_t decodeTrailerBitflips(const uint32_t word) const
uint32_t decodeSkippedTrigTrailer_IBL(const uint32_t word) const
uint32_t decodeRow(const uint32_t word, bool isIBLorDBM) const
uint32_t decodeBcidTrailer_IBL(const uint32_t word) const
std::atomic_uint m_numRODErrors
uint32_t decodeModule_IBL(const uint32_t word) const
uint32_t decodeLinkNumTrailer_IBL(const uint32_t word) const
uint32_t decodeL1IDskip(const uint32_t word) const
uint32_t decodeBCID_IBL(const uint32_t word) const
uint32_t extractFefromLinkNum(const uint32_t linkNum) const
std::atomic_uint m_numLimitError
std::atomic_uint m_numDisabledFEErrors
uint32_t decodeHeaderErrors(const uint32_t word) const
bool thisRdoIsUnique(const Identifier &pixelRdo, std::unordered_set< Identifier > &pixelRdosSeenSoFar) const
get local FEI4
std::atomic_uint m_numLVL1IDErrors
std::atomic_uint m_numInvalidIdentifiers
std::atomic_uint m_numGenWarnings
uint32_t treatmentFEFlagInfo(unsigned int serviceCode, unsigned int serviceCodeCounter) const
uint32_t decodeLinkNumFEFlag_IBL(const uint32_t word) const
const PixelID * m_pixel_id
void propagateROBErrorsToModules(const PixelCablingCondData *pixCabling, uint32_t robId, std::array< uint64_t, PixelRodDecoder::ERROR_CONTAINER_MAX > &bsErrWord, IDCInDetBSErrContainer &decodingErrors, PixelByteStreamErrors::PixelErrorsEnum error_code, const char *error_description) const
uint32_t decodeServiceCodeCounter_IBL(const uint32_t word) const
bool m_is_dbm_module
if the flag is set to true appropriate bits are set in event info
StatusCode updateEventInfoIfEventCorrupted(bool isCorrupted) const
checks if all FEs have sent the same number of headers, if not, generate warning message
uint32_t decodeBCID(const uint32_t word) const
SG::ReadCondHandleKey< PixelCablingCondData > m_condCablingKey
unsigned int getLocalFEI4(const uint32_t fe, const uint64_t onlineId) const
in case of invalid ROB fragments set corresponding error flags in all linked modules.
uint32_t decodeCondensedModeBit_IBL(const uint32_t word) const
BooleanProperty m_checkDuplicatedPixel
uint32_t decodeLinkNumHit_IBL(const uint32_t word) const
uint32_t decodeRawData(const uint32_t word) const
uint32_t decodeTrailerErrors_IBL(const uint32_t word) const
bool checkDataWordsCorruption(uint32_t word) const
checks if data words do not look like header & trailer markers, return true if so,...
const unsigned m_maxNumBCIDWarnings
StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment *robFrag, IPixelRDO_Container *rdoIdc, IDCInDetBSErrContainer &decodingErrors, std::vector< IdentifierHash > *vecHash, const EventContext &ctx) const override
std::atomic_uint m_numLinkMaskedByPPC
const unsigned m_maxNumGenWarnings
uint32_t decodeTrailerErrors(const uint32_t word) const
PixelRodDecoder(const std::string &type, const std::string &name, const IInterface *parent)