Skip to content

Commit b61a9d4

Browse files
committed
[MCH] added plot with quality flag for each DE to the Decoding task
The plot is filled by the Decoding checker, based on the estimated quality of each Detection Element (DE).
1 parent 7b6a2f2 commit b61a9d4

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

Modules/MUON/MCH/include/MCH/DecodingPostProcessing.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ class DecodingPostProcessing : public PostProcessingInterface
9393
std::unique_ptr<HeartBeatPacketsPlotter> mHBPacketsPlotterOnCycle;
9494
std::unique_ptr<FECSyncStatusPlotter> mSyncStatusPlotter;
9595
std::unique_ptr<FECSyncStatusPlotter> mSyncStatusPlotterOnCycle;
96+
97+
std::unique_ptr<TH2F> mHistogramQualityPerDE; ///< quality flags for each DE, to be filled by checker task
9698
};
9799

98100
template <typename T>

Modules/MUON/MCH/src/DecodingCheck.cxx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,29 @@ void DecodingCheck::beautify(std::shared_ptr<MonitorObject> mo, Quality checkRes
241241
drawThresholdsPerStation(h, mMinGoodSyncFracPerStation, mMinGoodSyncFrac);
242242
}
243243
}
244+
245+
// update quality flags for each DE
246+
if (mo->getName().find("QualityFlagPerDE") != std::string::npos) {
247+
TH2F* h = dynamic_cast<TH2F*>(mo->getObject());
248+
if (!h) {
249+
return;
250+
}
251+
252+
for (int deId = 0; deId < mQualityChecker.mQuality.size(); deId++) {
253+
float ybin = 0;
254+
if (mQualityChecker.mQuality[deId] == Quality::Good) {
255+
ybin = 3;
256+
}
257+
if (mQualityChecker.mQuality[deId] == Quality::Medium) {
258+
ybin = 2;
259+
}
260+
if (mQualityChecker.mQuality[deId] == Quality::Bad) {
261+
ybin = 1;
262+
}
263+
264+
h->SetBinContent(deId + 1, ybin, 1);
265+
}
266+
}
244267
}
245268

246269
} // namespace o2::quality_control_modules::muonchambers

Modules/MUON/MCH/src/DecodingPostProcessing.cxx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,21 @@ void DecodingPostProcessing::initialize(Trigger t, framework::ServiceRegistryRef
150150
createDecodingErrorsHistos(t, &qcdb);
151151
createHeartBeatPacketsHistos(t, &qcdb);
152152
createSyncStatusHistos(t, &qcdb);
153+
154+
//--------------------------------------------------
155+
// Detector quality histogram
156+
//--------------------------------------------------
157+
158+
mHistogramQualityPerDE.reset();
159+
mHistogramQualityPerDE = std::make_unique<TH2F>("QualityFlagPerDE", "Quality Flag vs DE", getNumDE(), 0, getNumDE(), 3, 0, 3);
160+
mHistogramQualityPerDE->GetYaxis()->SetBinLabel(1, "Bad");
161+
mHistogramQualityPerDE->GetYaxis()->SetBinLabel(2, "Medium");
162+
mHistogramQualityPerDE->GetYaxis()->SetBinLabel(3, "Good");
163+
mHistogramQualityPerDE->SetOption("colz");
164+
mHistogramQualityPerDE->SetStats(0);
165+
getObjectsManager()->startPublishing(mHistogramQualityPerDE.get(), core::PublicationPolicy::ThroughStop);
166+
getObjectsManager()->setDefaultDrawOptions(mHistogramQualityPerDE.get(), "colz");
167+
getObjectsManager()->setDisplayHint(mHistogramQualityPerDE.get(), "gridy");
153168
}
154169

155170
//_________________________________________________________________________________________

0 commit comments

Comments
 (0)