18#include <fairlogger/Logger.h>
33 for (
int i = 0;
i <
NCRU;
i++) {
43 int nfileopened =
NCRU;
46 for (
int i = 0;
i <
NCRU;
i++) {
48 nametmp.append(Form(
"cru%02d",
i));
52 std::cout <<
"Warning: a file (" <<
i <<
") was already open, closing" << std::endl;
55 mFile[
i].open(nametmp.c_str(), std::fstream::in | std::fstream::binary);
57 std::cout <<
"Cannot open " << nametmp << std::endl;
73 std::cerr <<
"No streams available" << std::endl;
79 printf(
"Full input buffer size = %d byte\n", fullsize);
81 char*
pos =
new char[fullsize];
82 for (
int i = 0;
i <
NCRU;
i++) {
97 printf(
"Number of TOF compressed streamers = %d/%d\n", nfileopened,
NCRU);
106 for (
int i = 0;
i <
NCRU;
i++) {
126void Decoder::InsertDigit(
int icrate,
int itrm,
int itdc,
int ichain,
int channel, uint32_t
orbit, uint16_t bunchid,
int time_ext,
int tdc,
int tot)
130 if (itrm == 3 && ((icrate % 2 == 0) || (itdc / 3 > 0))) {
135 fromRawHit2Digit(icrate, itrm, itdc, ichain, channel,
orbit, bunchid, time_ext + tdc, tot, digitInfo);
178 printf(
"DeltaBC = %d\n", deltaBC);
185 for (
int i = 0;
i < nhits;
i++) {
186 if (icrate % 2 == 1 && itrm == 3 &&
mUnion[icru]->packedHit.tdcID / 3 > 0) {
241 LOG(
debug) <<
"No valid channel for icrate = " << icrate <<
", itrm = " << itrm <<
", ichain = " << ichain <<
", itdc = " << itdc <<
", channel = " << channel;
246 dinfo.
tdc = tdc % 1024;
253 char* point =
reinterpret_cast<char*
>(current);
267 std::cout <<
"-------- START DECODE EVENTS IN THE HB ----------------------------------------" << std::endl;
269 auto start = std::chrono::high_resolution_clock::now();
274 for (
int icru = 0; icru <
NCRU; icru++) {
279 printf(
"decoding cru %d\n", icru);
293 char* shift =
reinterpret_cast<char*
>(
mRDH);
294 auto rdhsz = RDHUtils::getHeaderSize(*
mRDH);
314 printf(
"%d) orbit ID = %d -- bunch ID = %d\n", icrate,
orbit, bunchid);
319 while (!
mUnion[icru]->frameHeader.mustBeZero) {
332 for (
int idw = 0; idw < ndw; ++idw) {
360 std::vector<Digit> digTemp;
366 printf(
"___CRATE HEADER____\n");
367 printf(
"DRM ID = %d\n",
mUnion[icru]->crateHeader.drmID);
368 printf(
"Bunch ID = %d\n",
mUnion[icru]->crateHeader.bunchID);
369 printf(
"Slot part. mask = %d\n",
mUnion[icru]->crateHeader.slotPartMask);
370 printf(
"Must be ONE = %d\n",
mUnion[icru]->crateHeader.mustBeOne);
371 printf(
"___________________\n");
376 printf(
"___CRATE TRAILER___\n");
377 printf(
"Event counter = %d\n",
mUnion[icru]->crateTrailer.eventCounter);
378 printf(
"Number of diagnostics = %d\n",
mUnion[icru]->crateTrailer.numberOfDiagnostics);
379 printf(
"Must be ONE = %d\n",
mUnion[icru]->crateTrailer.mustBeOne);
380 printf(
"___________________\n");
385 printf(
"______TRM_INFO_____\n");
386 printf(
"TRM ID = %d\n",
mUnion[icru]->frameHeader.trmID);
387 printf(
"Frame ID = %d\n",
mUnion[icru]->frameHeader.frameID);
388 printf(
"N. hits = %d\n",
mUnion[icru]->frameHeader.numberOfHits);
389 printf(
"DeltaBC = %d\n",
mUnion[icru]->frameHeader.deltaBC);
390 printf(
"Must be Zero = %d\n",
mUnion[icru]->frameHeader.mustBeZero);
391 printf(
"___________________\n");
396 printf(
"______HIT_INFO_____\n");
397 printf(
"TDC ID = %d\n",
mUnion[icru]->packedHit.tdcID);
398 printf(
"CHAIN ID = %d\n",
mUnion[icru]->packedHit.chain);
399 printf(
"CHANNEL ID = %d\n",
mUnion[icru]->packedHit.channel);
400 printf(
"TIME = %d\n",
mUnion[icru]->packedHit.time);
401 printf(
"TOT = %d\n",
mUnion[icru]->packedHit.tot);
402 printf(
"___________________\n");
407 printf(
"______RDH_INFO_____\n");
409 printf(
"VERSION = %d\n",
v);
411 printf(
"BLOCK LENGTH = %d\n",
int(RDHUtils::getBlockLength(
mRDH)));
413 printf(
"HEADER SIZE = %d\n",
int(RDHUtils::getHeaderSize(*
mRDH)));
414 printf(
"MEMORY SIZE = %d\n",
int(RDHUtils::getMemorySize(*
mRDH)));
415 printf(
"PACKET COUNTER= %d\n",
int(RDHUtils::getPacketCounter(*
mRDH)));
416 printf(
"CRU ID = %d\n",
int(RDHUtils::getCRUID(*
mRDH)));
417 printf(
"LINK ID = %d\n",
int(RDHUtils::getLinkID(*
mRDH)));
418 printf(
"___________________\n");
Definition of the TOF encoder.
Header to collect LHC related constants.
static constexpr Int_t NPADS
static constexpr double BC_IN_WINDOW_INV
static Int_t getCHFromECH(int echan)
static constexpr int BC_IN_ORBIT
static Int_t getECHFromIndexes(int crate, int trm, int chain, int tdc, int chan)
static constexpr int NWINDOW_IN_ORBIT
std::vector< uint64_t > mErrors
void fillDigitsInStrip(std::vector< Strip > *strips, int channel, int tdc, int tot, uint64_t nbc, UInt_t istrip, uint32_t triggerorbit=0, uint16_t triggerbunch=0)
std::vector< CrateHeaderData > mCrateHeaderData
uint64_t mReadoutWindowCurrent
static const int MAXWINDOWS
std::vector< PatternData > mCratePatterns
std::vector< Strip > * mStripsCurrent
int mChannelCounts[o2::tof::Geo::NCHANNELS]
std::vector< Strip > * mStripsNext[MAXWINDOWS - 1]
void flushOutputContainer(std::vector< Digit > &digits)
std::vector< uint8_t > mPatterns
Diagnostic mDiagnosticFrequency
void insertDigitInFuture(Int_t channel, Int_t tdc, Int_t tot, uint64_t bc, Int_t label=0, uint32_t triggerorbit=0, uint16_t triggerbunch=0)
void fillDiagnosticFrequency()
InteractionRecord mFirstIR
int mIntegratedBytes[NCRU]
void printHitInfo(int icru) const
void readTRM(int icru, int icrate, uint32_t orbit, uint16_t bunchid)
void printTRMInfo(int icru) const
Union_t * mUnionEnd[NCRU]
char * nextPage(void *current, int shift=8192)
void printCrateInfo(int icru) const
bool open(std::string name)
std::ifstream mFile[NCRU]
static void fromRawHit2Digit(int icrate, int itrm, int itdc, int ichain, int channel, uint32_t orbit, uint16_t bunchid, int tdc, int tot, DigitInfo &dinfo)
void printCrateTrailerInfo(int icru) const
o2::header::RAWDataHeader * mRDH
void InsertDigit(int icrate, int itrm, int itdc, int ichain, int channel, uint32_t orbit, uint16_t bunchid, int time_ext, int tdc, int tot)
GLuint const GLchar * name
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
uint16_t bc
bunch crossing ID of interaction
static constexpr int getVersion()
get numeric version of the RDH
uint32_t numberOfDiagnostics
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
FrameHeader_t frameHeader
CrateTrailer_t crateTrailer
CrateHeader_t crateHeader