Skip to content

Commit 848d3b8

Browse files
bazinskidavidrohr
authored andcommitted
TRD remove straggling error output and add option for trigger fix
1 parent ce3e745 commit 848d3b8

5 files changed

Lines changed: 4 additions & 29 deletions

File tree

DataFormats/Detectors/TRD/include/DataFormatsTRD/RawDataStats.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ enum OptionBits {
9090
TRDIgnoreTrackletHCHeaderBit,
9191
TRDEnableRootOutputBit,
9292
TRDFixSM1617Bit,
93+
TRDIgnore2StageTrigger,
9394
TRDGenerateStats
9495
};
9596

Detectors/TRD/reconstruction/include/TRDReconstruction/DigitsParser.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ class DigitsParser
7171
void clear() { mDigits.clear(); }
7272
uint64_t getDumpedDataCount() { return mWordsDumped; }
7373
uint64_t getDataWordsParsed() { return mDataWordsParsed; }
74-
void tryFindMCMHeaderAndDisplay(std::array<uint32_t, o2::trd::constants::HBFBUFFERMAX>::iterator mStartParse);
75-
//void tryFindMCMHeaderAndDisplay(std::array<uint32_t, o2::trd::constants::HBFBUFFERMAX>::iterator mStartParse);
7674
void OutputIncomingData();
7775
void setParsingHisto(TH1F* parsingerrors, TList* parsingerrors2d)
7876
{

Detectors/TRD/reconstruction/src/CruRawReader.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ int CruRawReader::processHalfCRU(int cruhbfstartoffset)
542542
** DIGITS NOW ***
543543
*****************/
544544
// Check if we have a calibration trigger ergo we do actually have digits data. check if we are now at the end of the data due to bugs, i.e. if trackletparsing read padding words.
545-
if (linkstart != linkend && mCurrentHalfCRUHeader.EventType == o2::trd::constants::ETYPECALIBRATIONTRIGGER) { // calibration trigger
545+
if (linkstart != linkend && (mCurrentHalfCRUHeader.EventType == o2::trd::constants::ETYPECALIBRATIONTRIGGER || mOptions[TRDIgnore2StageTrigger])) { // calibration trigger
546546
if (mHeaderVerbose) {
547547
LOG(info) << "*** Digit Parsing : starting at " << std::hex << linkstart << " at hbfoffset: " << std::dec << mHBFoffset32 << " linkhbf start pos:" << hbfoffsetatstartoflink;
548548
}

Detectors/TRD/reconstruction/src/DataReader.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
5353
{"halfchambermajor", VariantType::Int, 0, {"Fix half chamber for when it is version is 0.0 integer value of major version, ignored if version is not 0.0"}},
5454
{"ignore-digithcheader", VariantType::Bool, false, {"Ignore the digithalf chamber header for cross referencing, take rdh/cru as authorative."}},
5555
{"fixsm1617", VariantType::Bool, false, {"Fix the missing bit in the tracklet hc header of supermodules 16 and 17. Requires option tracklethcheader 2"}},
56+
{"fixforoldtrigger", VariantType::Bool, false, {"Fix for the old data not having a 2 stage trigger stored in the cru header."}},
5657
{"tracklethcheader", VariantType::Int, 2, {"Status of TrackletHalfChamberHeader 0 off always, 1 iff tracklet data, 2 on always"}},
5758
{"histogramsfile", VariantType::String, "histos.root", {"Name of the histogram file, so one can run multiple per node"}},
5859
//{"generate-stats", VariantType::Bool, true, {"Generate the state message sent to qc"}},
@@ -104,6 +105,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
104105
binaryoptions[o2::trd::TRDEnableRootOutputBit] = cfgc.options().get<bool>("enable-root-output");
105106
binaryoptions[o2::trd::TRDByteSwapBit] = cfgc.options().get<bool>("trd-datareader-enablebyteswapdata");
106107
binaryoptions[o2::trd::TRDFixSM1617Bit] = cfgc.options().get<bool>("fixsm1617");
108+
binaryoptions[o2::trd::TRDIgnore2StageTrigger] = cfgc.options().get<bool>("fixforoldtrigger");
107109
//binaryoptions[o2::trd::TRDGenerateStats] = cfgc.options().get<bool>("generate-stats");
108110
binaryoptions[o2::trd::TRDGenerateStats] = true; //cfgc.options().get<bool>("generate-stats");
109111

Detectors/TRD/reconstruction/src/DigitsParser.cxx

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ int DigitsParser::Parse(bool verbose)
180180
}
181181
if (mDigitMCMHeader->mcm < lastmcmread && mDigitMCMHeader->rob == lastrobread) {
182182
incParsingError(TRDParsingDigitMCMNotIncreasing);
183-
printDigitMCMHeader(*mDigitMCMHeader);
184183
}
185184
lastmcmread = mDigitMCMHeader->mcm;
186185
lastrobread = mDigitMCMHeader->rob;
@@ -207,7 +206,6 @@ int DigitsParser::Parse(bool verbose)
207206
if (!digitMCMADCMaskSanityCheck(*mDigitMCMADCMask, bitsinmask)) {
208207
incParsingError(TRDParsingDigitADCMaskMismatch);
209208
mWordsDumped += std::distance(word, mEndParse) - 1;
210-
// tryFindMCMHeaderAndDisplay(word);
211209
word = mEndParse;
212210
}
213211
overchannelcount = 0;
@@ -374,29 +372,5 @@ int DigitsParser::Parse(bool verbose)
374372
return mDataWordsParsed;
375373
}
376374

377-
void DigitsParser::tryFindMCMHeaderAndDisplay(std::array<uint32_t, o2::trd::constants::HBFBUFFERMAX>::iterator word)
378-
{
379-
// given something has gone wrong, assume its a 16 bit shift and see if we can find a valid mcmheader,
380-
// note the mcm and rob and output to log
381-
// merely for debugging to see if we can find a pattern in where the 16 bit shifts/losses occur.
382-
// maybe more recoverly logic later.
383-
uint32_t current = *word;
384-
uint32_t next = *(std::next(word, 1));
385-
uint32_t previous = *(std::prev(word, 1));
386-
DigitMCMHeader firstguess; // 16 bits somewhere before the mcmheader got dropped, manifesting as directly before.
387-
DigitMCMHeader secondguess;
388-
DigitMCMHeader thirdguess;
389-
//first last 16 bits of previous and first 16 bits of current
390-
uint32_t a = previous & 0xffff << 16;
391-
uint32_t b = current & 0xffff;
392-
firstguess.word = a + b;
393-
if (digitMCMHeaderSanityCheck(&firstguess)) {
394-
//sanity check passed to prossibly correct.
395-
//LOG(warn) << "***DigitMCMHeader GUESS ??? to follow";
396-
printDigitMCMHeader(firstguess);
397-
} else {
398-
// LOG(warn) << "***DigitMCMHeader GUESS failed " << std::hex << firstguess.word << " words were 0x" << previous << " 0x" << current << " 0x" << next;
399-
}
400-
}
401375

402376
} // namespace o2::trd

0 commit comments

Comments
 (0)