From a7315a97f6d8fe1e6c223cc5ac5c4005b129468a Mon Sep 17 00:00:00 2001 From: Valerie Ramillien Date: Thu, 17 Apr 2025 09:58:17 +0200 Subject: [PATCH 1/3] MID:: TaskDigits : Add CRU,EP, GBTRate --- Modules/MUON/MID/include/MID/DigitsQcTask.h | 6 +++ Modules/MUON/MID/src/ClustQcTask.cxx | 2 +- Modules/MUON/MID/src/DigitsHelper.cxx | 5 +- Modules/MUON/MID/src/DigitsQcCheck.cxx | 59 ++++++++++++++++----- Modules/MUON/MID/src/DigitsQcTask.cxx | 54 +++++++++++++++++++ Modules/MUON/MID/src/RawQcTask.cxx | 1 - Modules/MUON/MID/src/TracksQcTask.cxx | 12 ++--- 7 files changed, 118 insertions(+), 21 deletions(-) diff --git a/Modules/MUON/MID/include/MID/DigitsQcTask.h b/Modules/MUON/MID/include/MID/DigitsQcTask.h index ee9e189533..07a850b02a 100644 --- a/Modules/MUON/MID/include/MID/DigitsQcTask.h +++ b/Modules/MUON/MID/include/MID/DigitsQcTask.h @@ -69,6 +69,10 @@ class DigitsQcTask final : public TaskInterface std::unique_ptr mNbLBHighRate{ nullptr }; std::unique_ptr mLBHighRate{ nullptr }; + std::unique_ptr mGBTRate{ nullptr }; + std::unique_ptr mCRURate{ nullptr }; + std::unique_ptr mEPRate{ nullptr }; + std::array, 5> mMultHitB{}; std::array, 5> mMultHitNB{}; std::unique_ptr mMeanMultiHits; @@ -82,6 +86,8 @@ class DigitsQcTask final : public TaskInterface std::array, 4> mNBendHitsMap{}; std::unique_ptr mDigitBCCounts{ nullptr }; + + o2::mid::Mapping mMapping; }; } // namespace o2::quality_control_modules::mid diff --git a/Modules/MUON/MID/src/ClustQcTask.cxx b/Modules/MUON/MID/src/ClustQcTask.cxx index ad7409f0a2..eff08841fc 100644 --- a/Modules/MUON/MID/src/ClustQcTask.cxx +++ b/Modules/MUON/MID/src/ClustQcTask.cxx @@ -184,7 +184,7 @@ void ClustQcTask::monitorData(o2::framework::ProcessingContext& ctx) } } } // loop on MT // - } // cluster in ROF // + } // cluster in ROF // mMultClust11->Fill(multClusterMT11); mMultClust12->Fill(multClusterMT12); mMultClust21->Fill(multClusterMT21); diff --git a/Modules/MUON/MID/src/DigitsHelper.cxx b/Modules/MUON/MID/src/DigitsHelper.cxx index b579374362..5c663afe53 100644 --- a/Modules/MUON/MID/src/DigitsHelper.cxx +++ b/Modules/MUON/MID/src/DigitsHelper.cxx @@ -17,6 +17,8 @@ #include #include "TH1.h" #include "TH2.h" +#include "MIDRaw/CrateMapper.h" +#include "MIDRaw/CrateParameters.h" #include "MIDBase/DetectorParameters.h" #include "MIDBase/GeometryParameters.h" #include "MIDGlobalMapping/GlobalMapper.h" @@ -32,6 +34,7 @@ void DigitsHelper::initMaps() { o2::mid::GlobalMapper gm; auto infos = gm.buildStripsInfo(); + o2::mid::CrateMapper cm; auto stripHistoB = makeStripMapHisto("templateStripB", "templateStripB", 0); auto stripHistoNB = makeStripMapHisto("templateStripNB", "templateStripNB", 1); @@ -238,4 +241,4 @@ void DigitsHelper::fillStripHisto(const o2::mid::ColumnData& col, TH1* histo) co } } -} // namespace o2::quality_control_modules::mid \ No newline at end of file +} // namespace o2::quality_control_modules::mid diff --git a/Modules/MUON/MID/src/DigitsQcCheck.cxx b/Modules/MUON/MID/src/DigitsQcCheck.cxx index 2208f536e7..cc49849b9c 100644 --- a/Modules/MUON/MID/src/DigitsQcCheck.cxx +++ b/Modules/MUON/MID/src/DigitsQcCheck.cxx @@ -263,21 +263,56 @@ void DigitsQcCheck::beautify(std::shared_ptr mo, Quality checkRes } mHistoHelper.updateTitleWithNTF(histo); histo->SetStats(0); - } else { + } else if (mo->getName().find("BendHitsMap") != std::string::npos) { // Strips Display + // This matches both [N]BendHitsMap* + int maxStrip = 20; // 20kHz Max Display + auto histo = dynamic_cast(mo->getObject()); + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMaximum(zcontoursStrip.back()); + histo->SetContour(zcontoursStrip.size(), zcontoursStrip.data()); + histo->SetStats(0); + } else if (mo->getName() == "Hits") { + auto histo = dynamic_cast(mo->getObject()); + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetStats(0); + } - // Strips Display - if (mo->getName().find("BendHitsMap") != std::string::npos) { - // This matches both [N]BendHitsMap* - int maxStrip = 20; // 20kHz Max Display - auto histo = dynamic_cast(mo->getObject()); + else if (mo->getName() == "GBTRate") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + // if (mHistoHelper.getNTFs() > 0) mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMaximum(zcontoursStrip.back()); - histo->SetContour(zcontoursStrip.size(), zcontoursStrip.data()); - histo->SetStats(0); - } else if (mo->getName() == "Hits") { - auto histo = dynamic_cast(mo->getObject()); + histo->SetMinimum(0.); + TString XLabel[32] = { "5R0", "5R1", "4R0", "4R1", "1R0", "1R1", "0R0", "0R1", + "2R0", "2R1", "3R0", "3R1", "7R0", "7R1", "6R0", "6R1", + "5L0", "5L1", "4L0", "4L1", "1L0", "1L1", "0L0", "0L1", + "2L0", "2L1", "3L0", "3L1", "7L0", "7L1", "6L0", "6L1" }; + for (Int_t i = 0; i < 32; ++i) + histo->GetXaxis()->SetBinLabel(i + 1, XLabel[i]); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } else if (mo->getName() == "EPRate") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + histo->GetXaxis()->SetBinLabel(1, "CRU0(990)-EP0"); + histo->GetXaxis()->SetBinLabel(2, "CRU0(990)-EP1"); + histo->GetXaxis()->SetBinLabel(3, "CRU1(974)-EP0"); + histo->GetXaxis()->SetBinLabel(4, "CRU1(974)-EP1"); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } else if (mo->getName() == "CRURate") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { mHistoHelper.normalizeHistoTokHz(histo); - histo->SetStats(0); + histo->SetMinimum(0.); + histo->GetXaxis()->SetBinLabel(1, "CRU0 (990)"); + histo->GetXaxis()->SetBinLabel(2, "CRU1 (974)"); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); } } } diff --git a/Modules/MUON/MID/src/DigitsQcTask.cxx b/Modules/MUON/MID/src/DigitsQcTask.cxx index fcc8c24bed..237164431f 100644 --- a/Modules/MUON/MID/src/DigitsQcTask.cxx +++ b/Modules/MUON/MID/src/DigitsQcTask.cxx @@ -24,9 +24,14 @@ #include #include "DataFormatsMID/ColumnData.h" #include "DataFormatsMID/ROFRecord.h" +#include "MIDBase/Mapping.h" #include "MIDBase/DetectorParameters.h" #include "MIDBase/GeometryParameters.h" #include "MIDWorkflow/ColumnDataSpecsUtils.h" +#include "MIDGlobalMapping/GlobalMapper.h" +#include "MIDRaw/CrateMapper.h" +#include "MIDRaw/CrateParameters.h" +#include "MIDRaw/Decoder.h" #include "MID/DigitsHelper.h" namespace o2::quality_control_modules::mid @@ -52,6 +57,15 @@ void DigitsQcTask::initialize(o2::framework::InitContext& /*ctx*/) mLBHighRate = std::make_unique("LBHighRate", "LocalBoardHigherRate", 1, 0, 1.); getObjectsManager()->startPublishing(mLBHighRate.get()); + mGBTRate = std::make_unique("GBTRate", "GBTRate", 32, 0, 32.); + getObjectsManager()->startPublishing(mGBTRate.get()); + + mCRURate = std::make_unique("CRURate", "CRURate", 2, 0, 2.); + getObjectsManager()->startPublishing(mCRURate.get()); + + mEPRate = std::make_unique("EPRate", "EPRate", 4, 0, 4.); + getObjectsManager()->startPublishing(mEPRate.get()); + std::array chId{ "11", "12", "21", "22" }; for (size_t ich = 0; ich < 5; ++ich) { @@ -128,15 +142,51 @@ void DigitsQcTask::monitorData(o2::framework::ProcessingContext& ctx) unsigned long int prevSize = 0; o2::InteractionRecord prevIr; bool isFirst = true; + + o2::mid::CrateMapper cm; + for (auto& rof : rofs) { auto eventDigits = digits.subspan(rof.firstEntry, rof.nEntries); evtSizeB.fill(0); evtSizeNB.fill(0); + for (auto& col : eventDigits) { + auto ich = o2::mid::detparams::getChamber(col.deId); evtSizeB[ich] += mDigitsHelper.countDigits(col, 0); evtSizeNB[ich] += mDigitsHelper.countDigits(col, 1); mDigitsHelper.fillStripHisto(col, mHits.get()); + + for (int lineId = 0; lineId < 4; lineId++) { + if (col.getBendPattern(lineId)) { + auto locId = cm.deLocalBoardToRO(col.deId, col.columnId, lineId); + + int crateId = o2::mid::raw::getCrateId(locId); + int cruId = o2::mid::crateparams::isRightSide(crateId) ? 0 : 1; + int epId = 0; + switch (crateId % 8) { + case 0: + case 1: + case 4: + case 5: + epId = 0; + break; + case 2: + case 3: + case 6: + case 7: + epId = 1; + break; + } + auto locIdInCrate = o2::mid::raw::getLocId(locId); + auto gbtId = o2::mid::crateparams::getGBTIdFromBoardInCrate(locIdInCrate); + auto gbtUniqueId = o2::mid::crateparams::makeGBTUniqueId(crateId, gbtId); + mGBTRate->Fill(gbtUniqueId); + mCRURate->Fill(cruId); + int epIndex = 2 * cruId + epId; + mEPRate->Fill(epIndex); + } + } } unsigned long int sizeTot = 0; @@ -218,6 +268,10 @@ void DigitsQcTask::reset() resetDisplayHistos(); mDigitBCCounts->Reset(); + + mGBTRate->Reset(); + mCRURate->Reset(); + mEPRate->Reset(); } } // namespace o2::quality_control_modules::mid diff --git a/Modules/MUON/MID/src/RawQcTask.cxx b/Modules/MUON/MID/src/RawQcTask.cxx index 092716bfa9..87286d9e49 100644 --- a/Modules/MUON/MID/src/RawQcTask.cxx +++ b/Modules/MUON/MID/src/RawQcTask.cxx @@ -232,7 +232,6 @@ void RawQcTask::monitorData(o2::framework::ProcessingContext& ctx) int isLoc = (statusWord >> 6) & 1; int busyLoc = (statusWord >> 5) & 1; int decisionLoc = (statusWord >> 4) & 1; - int isPhys = (triggerWord >> 2) & 1; int isCalib = (triggerWord >> 3) & 1; int sOrb = triggerWord & 1; diff --git a/Modules/MUON/MID/src/TracksQcTask.cxx b/Modules/MUON/MID/src/TracksQcTask.cxx index 851be8cc9c..ec808ff28d 100644 --- a/Modules/MUON/MID/src/TracksQcTask.cxx +++ b/Modules/MUON/MID/src/TracksQcTask.cxx @@ -478,12 +478,12 @@ void TracksQcTask::monitorData(o2::framework::ProcessingContext& ctx) mTrackLocalBoardsNBRatio44Map->Fill(-colId - 0.5, linePos, NBFired); } } // board in line loop - } // board loop - } // only fire board in the line - } //(EffFlag>2) - } //(EffFlag>1) - } // Efficiency part (EffFlag>0) - } // tracks in ROF + } // board loop + } // only fire board in the line + } //(EffFlag>2) + } //(EffFlag>1) + } // Efficiency part (EffFlag>0) + } // tracks in ROF mMultTracks->Fill(multTracks); } // ROFRecords // From 427cb7e443ecac8c2468619359b6134fc0c9ad86 Mon Sep 17 00:00:00 2001 From: Valerie Ramillien Date: Tue, 13 May 2025 10:22:30 +0200 Subject: [PATCH 2/3] MID:: DigitsQCCheck : Add Check for nullptr --- Modules/MUON/MID/src/DigitsQcCheck.cxx | 135 ++++++++++++++----------- 1 file changed, 74 insertions(+), 61 deletions(-) diff --git a/Modules/MUON/MID/src/DigitsQcCheck.cxx b/Modules/MUON/MID/src/DigitsQcCheck.cxx index cc49849b9c..82b6e9c12d 100644 --- a/Modules/MUON/MID/src/DigitsQcCheck.cxx +++ b/Modules/MUON/MID/src/DigitsQcCheck.cxx @@ -248,74 +248,87 @@ void DigitsQcCheck::beautify(std::shared_ptr mo, Quality checkRes if (mo->getName().find(lbHistoName) != std::string::npos) { // This matches "LocalBoardsMap*" auto histo = dynamic_cast(mo->getObject()); - if (mo->getName() == lbHistoName) { - // This is LocalBoardsMap and it was already scaled in the checker - if (!checkResult.getFlags().empty()) { - mHistoHelper.addLatex(histo, 0.12, 0.72, color, checkResult.getFlags().front().second.c_str()); + if (histo) { + if (mo->getName() == lbHistoName) { + // This is LocalBoardsMap and it was already scaled in the checker + if (!checkResult.getFlags().empty()) { + mHistoHelper.addLatex(histo, 0.12, 0.72, color, checkResult.getFlags().front().second.c_str()); + } + mHistoHelper.addLatex(histo, 0.3, 0.32, color, fmt::format("Quality::{}", checkResult.getName())); + histo->SetMaximum(zcontoursLoc4.back()); + histo->SetContour(zcontoursLoc4.size(), zcontoursLoc4.data()); + } else { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMaximum(zcontoursLoc.back()); + histo->SetContour(zcontoursLoc.size(), zcontoursLoc.data()); } - mHistoHelper.addLatex(histo, 0.3, 0.32, color, fmt::format("Quality::{}", checkResult.getName())); - histo->SetMaximum(zcontoursLoc4.back()); - histo->SetContour(zcontoursLoc4.size(), zcontoursLoc4.data()); - } else { - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMaximum(zcontoursLoc.back()); - histo->SetContour(zcontoursLoc.size(), zcontoursLoc.data()); + mHistoHelper.updateTitleWithNTF(histo); + histo->SetStats(0); } - mHistoHelper.updateTitleWithNTF(histo); - histo->SetStats(0); } else if (mo->getName().find("BendHitsMap") != std::string::npos) { // Strips Display // This matches both [N]BendHitsMap* int maxStrip = 20; // 20kHz Max Display auto histo = dynamic_cast(mo->getObject()); - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMaximum(zcontoursStrip.back()); - histo->SetContour(zcontoursStrip.size(), zcontoursStrip.data()); - histo->SetStats(0); - } else if (mo->getName() == "Hits") { - auto histo = dynamic_cast(mo->getObject()); - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetStats(0); - } - - else if (mo->getName() == "GBTRate") { - auto histo = dynamic_cast(mo->getObject()); - if (histo) { - // if (mHistoHelper.getNTFs() > 0) - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMinimum(0.); - TString XLabel[32] = { "5R0", "5R1", "4R0", "4R1", "1R0", "1R1", "0R0", "0R1", - "2R0", "2R1", "3R0", "3R1", "7R0", "7R1", "6R0", "6R1", - "5L0", "5L1", "4L0", "4L1", "1L0", "1L1", "0L0", "0L1", - "2L0", "2L1", "3L0", "3L1", "7L0", "7L1", "6L0", "6L1" }; - for (Int_t i = 0; i < 32; ++i) - histo->GetXaxis()->SetBinLabel(i + 1, XLabel[i]); - histo->GetXaxis()->SetLabelSize(0.07); - histo->GetXaxis()->SetLabelColor(4); - } - } else if (mo->getName() == "EPRate") { - auto histo = dynamic_cast(mo->getObject()); if (histo) { mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMinimum(0.); - histo->GetXaxis()->SetBinLabel(1, "CRU0(990)-EP0"); - histo->GetXaxis()->SetBinLabel(2, "CRU0(990)-EP1"); - histo->GetXaxis()->SetBinLabel(3, "CRU1(974)-EP0"); - histo->GetXaxis()->SetBinLabel(4, "CRU1(974)-EP1"); - histo->GetXaxis()->SetLabelSize(0.07); - histo->GetXaxis()->SetLabelColor(4); - } - } else if (mo->getName() == "CRURate") { - auto histo = dynamic_cast(mo->getObject()); - if (histo) { - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMinimum(0.); - histo->GetXaxis()->SetBinLabel(1, "CRU0 (990)"); - histo->GetXaxis()->SetBinLabel(2, "CRU1 (974)"); - histo->GetXaxis()->SetLabelSize(0.07); - histo->GetXaxis()->SetLabelColor(4); + histo->SetMaximum(zcontoursStrip.back()); + histo->SetContour(zcontoursStrip.size(), zcontoursStrip.data()); + histo->SetStats(0); + { + } + else if (mo->getName() == "Hits") + { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetStats(0); + } + } + + else if (mo->getName() == "GBTRate") + { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + // if (mHistoHelper.getNTFs() > 0) + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + TString XLabel[32] = { "5R0", "5R1", "4R0", "4R1", "1R0", "1R1", "0R0", "0R1", + "2R0", "2R1", "3R0", "3R1", "7R0", "7R1", "6R0", "6R1", + "5L0", "5L1", "4L0", "4L1", "1L0", "1L1", "0L0", "0L1", + "2L0", "2L1", "3L0", "3L1", "7L0", "7L1", "6L0", "6L1" }; + for (Int_t i = 0; i < 32; ++i) + histo->GetXaxis()->SetBinLabel(i + 1, XLabel[i]); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } + else if (mo->getName() == "EPRate") + { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + histo->GetXaxis()->SetBinLabel(1, "CRU0(990)-EP0"); + histo->GetXaxis()->SetBinLabel(2, "CRU0(990)-EP1"); + histo->GetXaxis()->SetBinLabel(3, "CRU1(974)-EP0"); + histo->GetXaxis()->SetBinLabel(4, "CRU1(974)-EP1"); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } + else if (mo->getName() == "CRURate") + { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + histo->GetXaxis()->SetBinLabel(1, "CRU0 (990)"); + histo->GetXaxis()->SetBinLabel(2, "CRU1 (974)"); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } } + mHistoHelper.updateTitle(dynamic_cast(mo->getObject()), mHistoHelper.getCurrentTime()); } - } - mHistoHelper.updateTitle(dynamic_cast(mo->getObject()), mHistoHelper.getCurrentTime()); -} -} // namespace o2::quality_control_modules::mid + } // namespace o2::quality_control_modules::mid From c1a694d69bf1730fd0ffbf3719c65c149a59ab24 Mon Sep 17 00:00:00 2001 From: Valerie Ramillien Date: Tue, 13 May 2025 10:44:07 +0200 Subject: [PATCH 3/3] MID :: DigitsQcCheck : debug --- Modules/MUON/MID/src/DigitsQcCheck.cxx | 103 +++++++++++-------------- 1 file changed, 47 insertions(+), 56 deletions(-) diff --git a/Modules/MUON/MID/src/DigitsQcCheck.cxx b/Modules/MUON/MID/src/DigitsQcCheck.cxx index 82b6e9c12d..fd07d49e3e 100644 --- a/Modules/MUON/MID/src/DigitsQcCheck.cxx +++ b/Modules/MUON/MID/src/DigitsQcCheck.cxx @@ -274,61 +274,52 @@ void DigitsQcCheck::beautify(std::shared_ptr mo, Quality checkRes histo->SetMaximum(zcontoursStrip.back()); histo->SetContour(zcontoursStrip.size(), zcontoursStrip.data()); histo->SetStats(0); - { - } - else if (mo->getName() == "Hits") - { - auto histo = dynamic_cast(mo->getObject()); - if (histo) { - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetStats(0); - } - } - - else if (mo->getName() == "GBTRate") - { - auto histo = dynamic_cast(mo->getObject()); - if (histo) { - // if (mHistoHelper.getNTFs() > 0) - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMinimum(0.); - TString XLabel[32] = { "5R0", "5R1", "4R0", "4R1", "1R0", "1R1", "0R0", "0R1", - "2R0", "2R1", "3R0", "3R1", "7R0", "7R1", "6R0", "6R1", - "5L0", "5L1", "4L0", "4L1", "1L0", "1L1", "0L0", "0L1", - "2L0", "2L1", "3L0", "3L1", "7L0", "7L1", "6L0", "6L1" }; - for (Int_t i = 0; i < 32; ++i) - histo->GetXaxis()->SetBinLabel(i + 1, XLabel[i]); - histo->GetXaxis()->SetLabelSize(0.07); - histo->GetXaxis()->SetLabelColor(4); - } - } - else if (mo->getName() == "EPRate") - { - auto histo = dynamic_cast(mo->getObject()); - if (histo) { - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMinimum(0.); - histo->GetXaxis()->SetBinLabel(1, "CRU0(990)-EP0"); - histo->GetXaxis()->SetBinLabel(2, "CRU0(990)-EP1"); - histo->GetXaxis()->SetBinLabel(3, "CRU1(974)-EP0"); - histo->GetXaxis()->SetBinLabel(4, "CRU1(974)-EP1"); - histo->GetXaxis()->SetLabelSize(0.07); - histo->GetXaxis()->SetLabelColor(4); - } - } - else if (mo->getName() == "CRURate") - { - auto histo = dynamic_cast(mo->getObject()); - if (histo) { - mHistoHelper.normalizeHistoTokHz(histo); - histo->SetMinimum(0.); - histo->GetXaxis()->SetBinLabel(1, "CRU0 (990)"); - histo->GetXaxis()->SetBinLabel(2, "CRU1 (974)"); - histo->GetXaxis()->SetLabelSize(0.07); - histo->GetXaxis()->SetLabelColor(4); - } - } } - mHistoHelper.updateTitle(dynamic_cast(mo->getObject()), mHistoHelper.getCurrentTime()); + } else if (mo->getName() == "Hits") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetStats(0); + } + } else if (mo->getName() == "GBTRate") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + // if (mHistoHelper.getNTFs() > 0) + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + TString XLabel[32] = { "5R0", "5R1", "4R0", "4R1", "1R0", "1R1", "0R0", "0R1", + "2R0", "2R1", "3R0", "3R1", "7R0", "7R1", "6R0", "6R1", + "5L0", "5L1", "4L0", "4L1", "1L0", "1L1", "0L0", "0L1", + "2L0", "2L1", "3L0", "3L1", "7L0", "7L1", "6L0", "6L1" }; + for (Int_t i = 0; i < 32; ++i) + histo->GetXaxis()->SetBinLabel(i + 1, XLabel[i]); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } else if (mo->getName() == "EPRate") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + histo->GetXaxis()->SetBinLabel(1, "CRU0(990)-EP0"); + histo->GetXaxis()->SetBinLabel(2, "CRU0(990)-EP1"); + histo->GetXaxis()->SetBinLabel(3, "CRU1(974)-EP0"); + histo->GetXaxis()->SetBinLabel(4, "CRU1(974)-EP1"); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } + } else if (mo->getName() == "CRURate") { + auto histo = dynamic_cast(mo->getObject()); + if (histo) { + mHistoHelper.normalizeHistoTokHz(histo); + histo->SetMinimum(0.); + histo->GetXaxis()->SetBinLabel(1, "CRU0 (990)"); + histo->GetXaxis()->SetBinLabel(2, "CRU1 (974)"); + histo->GetXaxis()->SetLabelSize(0.07); + histo->GetXaxis()->SetLabelColor(4); + } } - } // namespace o2::quality_control_modules::mid + } + mHistoHelper.updateTitle(dynamic_cast(mo->getObject()), mHistoHelper.getCurrentTime()); +} +} // namespace o2::quality_control_modules::mid