Skip to content

Commit 29cf724

Browse files
committed
TPC ZS: Use 8 bit magic word at end of TPC ZS Meta header, to be compatible with old linkzs
1 parent d0e48eb commit 29cf724

4 files changed

Lines changed: 10 additions & 5 deletions

File tree

DataFormats/Detectors/TPC/include/DataFormatsTPC/ZeroSuppression.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ struct TPCZSHDR {
4444
};
4545
struct TPCZSHDRV2 : public TPCZSHDR {
4646
static constexpr unsigned int TPC_ZS_NBITS_V3 = 12;
47-
unsigned short magicWord; // Magic word
4847
unsigned short firstZSDataOffset; // Offset (after the TPCZSHDRV2 header) in 128bit words to first ZS data (in between can be trigger words, etc.)
4948
unsigned short nTimebinHeaders; // Number of timebin headers
50-
unsigned short reserved; // 16 reserved bits, header is 128 bit
49+
unsigned short reserved1; // 16 reserved bits, header is 128 bit
50+
unsigned char reserved2; // 8 reserved bits, header is 128 bit
51+
unsigned char magicWord; // Magic word
5152
};
5253
struct TPCZSTBHDR {
5354
unsigned short rowMask;

DataFormats/Detectors/TPC/include/DataFormatsTPC/ZeroSuppressionLinkBased.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ static constexpr uint32_t DataWordSizeBytes = DataWordSizeBits / 8; ///< size of
3131
/// common header definition of the zero suppressed link based data
3232
struct CommonHeader {
3333
static constexpr uint32_t MagicWordLinkZS = 0xFC;
34+
static constexpr uint32_t MagicWordLinkZSMetaHeader = 0xFD;
3435
static constexpr uint32_t MagicWordTrigger = 0xAA;
3536
static constexpr uint32_t MagicWordTriggerV2 = 0xAB;
3637

@@ -53,8 +54,9 @@ struct CommonHeader {
5354
};
5455
};
5556

56-
bool hasCorrectMagicWord() const { return (magicWord == MagicWordLinkZS) || (magicWord == MagicWordTrigger) || (magicWord == MagicWordTriggerV2); }
57+
bool hasCorrectMagicWord() const { return (magicWord == MagicWordLinkZS) || (magicWord == MagicWordLinkZSMetaHeader) || (magicWord == MagicWordTrigger) || (magicWord == MagicWordTriggerV2); }
5758
bool isLinkZS() const { return (magicWord == MagicWordLinkZS); }
59+
bool isMetaHeader() const { return (magicWord == MagicWordLinkZSMetaHeader); }
5860
bool isTriggerInfo() const { return (magicWord == MagicWordTrigger); }
5961
bool isTriggerInfoV2() const { return (magicWord == MagicWordTriggerV2); }
6062
};

Detectors/TPC/reconstruction/src/RawProcessingHelpers.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ bool raw_processing_helpers::processZSdata(const char* data, size_t size, rdh_ut
8080
LOGP(debug, "orbit: {}, triggerOrbit: {}, triggerBC: {}, triggerBCOffset: {}", orbit, triggerOrbit, triggerBC, triggerBCOffset);
8181
zsdata = zsdata->next();
8282
continue;
83+
} else if (header.isMetaHeader()) {
84+
continue;
8385
}
8486

8587
const auto channelBits = zsdata->getChannelBits();

GPU/GPUTracking/Base/GPUReconstructionConvert.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ void zsEncoderImprovedLinkBased::init()
507507

508508
void zsEncoderImprovedLinkBased::initPage()
509509
{
510-
hdr->magicWord = 0x1234;
510+
hdr->magicWord = o2::tpc::zerosupp_link_based::CommonHeader::MagicWordLinkZSMetaHeader;
511511
hdr->nTimebinHeaders = 0;
512512
hdr->firstZSDataOffset = 0;
513513
}
@@ -638,7 +638,7 @@ void zsEncoderImprovedLinkBased::decodePage(std::vector<o2::tpc::Digit>& outputB
638638
if (decHDR->version != 3) {
639639
throw std::runtime_error("invalid ZS version");
640640
}
641-
if (decHDR->magicWord != 0x1234) {
641+
if (decHDR->magicWord != o2::tpc::zerosupp_link_based::CommonHeader::MagicWordLinkZSMetaHeader) {
642642
throw std::runtime_error("Magic word missing");
643643
}
644644
const float decodeBitsFactor = 1.f / (1 << (encodeBits - 10));

0 commit comments

Comments
 (0)