From 93e369d13c23a85c1e96cb8beca573972eba2aa9 Mon Sep 17 00:00:00 2001 From: Jakub Juracka Date: Tue, 12 May 2026 09:59:36 +0200 Subject: [PATCH 1/3] remove THStack --- Modules/MFT/include/MFT/QcMFTClusterTask.h | 2 -- Modules/MFT/src/QcMFTClusterTask.cxx | 10 +--------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/Modules/MFT/include/MFT/QcMFTClusterTask.h b/Modules/MFT/include/MFT/QcMFTClusterTask.h index ad8befeb38..052cb3a29b 100644 --- a/Modules/MFT/include/MFT/QcMFTClusterTask.h +++ b/Modules/MFT/include/MFT/QcMFTClusterTask.h @@ -26,7 +26,6 @@ #include #include #include -#include #include #include "ReconstructionDataFormats/BaseCluster.h" #include "MFTBase/GeometryTGeo.h" @@ -84,7 +83,6 @@ class QcMFTClusterTask /*final*/ : public TaskInterface // todo add back the "fi std::vector> mClusterXYinLayer; std::vector> mClusterRinLayer; std::unique_ptr mClusterRinAllLayers = nullptr; - std::unique_ptr mClusterRinAllLayersStack = nullptr; std::unique_ptr mClustersROFSize = nullptr; std::unique_ptr mClustersBC = nullptr; diff --git a/Modules/MFT/src/QcMFTClusterTask.cxx b/Modules/MFT/src/QcMFTClusterTask.cxx index a743d0b2cc..c9c0dc23c7 100644 --- a/Modules/MFT/src/QcMFTClusterTask.cxx +++ b/Modules/MFT/src/QcMFTClusterTask.cxx @@ -259,12 +259,6 @@ void QcMFTClusterTask::initialize(o2::framework::InitContext& /*ctx*/) // canvas for for cluster R in all layers mClusterRinAllLayers = std::make_unique("mClusterRinAllLayers", "Cluster Radial Position in All MFT Layers"); getObjectsManager()->startPublishing(mClusterRinAllLayers.get()); - mClusterRinAllLayersStack = std::make_unique("mClusterRinAllLayersStack", "Cluster Radial Position in All MFT Layers; r (cm); # entries"); - for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { - mClusterRinLayer[nMFTLayer]->getNum()->SetLineColor(TColor::GetColor(mColors[nMFTLayer])); - mClusterRinLayer[nMFTLayer]->getNum()->SetTitle(Form("D%dF%d", static_cast(std::floor(nMFTLayer / 2.)), nMFTLayer % 2 == 0 ? 0 : 1)); - mClusterRinAllLayersStack->Add(mClusterRinLayer[nMFTLayer]->getNum()); - } } } @@ -473,11 +467,9 @@ void QcMFTClusterTask::getChipMapData() void QcMFTClusterTask::updateCanvas() { - mClusterRinAllLayers->cd(); mClusterRinAllLayers->Clear(); - mClusterRinAllLayersStack->Draw("nostack hist"); + mClusterRinAllLayers->cd(); mClusterRinAllLayers->Update(); - gPad->BuildLegend(0.83, 0.50, 0.90, 0.90, "", "l"); } } // namespace o2::quality_control_modules::mft From d024c978fa5961cc61bef387548aaf46742cbdb9 Mon Sep 17 00:00:00 2001 From: Jakub Juracka Date: Tue, 12 May 2026 16:37:43 +0200 Subject: [PATCH 2/3] reimplement functionality --- Modules/MFT/include/MFT/QcMFTClusterTask.h | 5 ++++ Modules/MFT/src/QcMFTClusterTask.cxx | 35 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/Modules/MFT/include/MFT/QcMFTClusterTask.h b/Modules/MFT/include/MFT/QcMFTClusterTask.h index 052cb3a29b..75a4a65832 100644 --- a/Modules/MFT/include/MFT/QcMFTClusterTask.h +++ b/Modules/MFT/include/MFT/QcMFTClusterTask.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "ReconstructionDataFormats/BaseCluster.h" #include "MFTBase/GeometryTGeo.h" @@ -83,6 +84,8 @@ class QcMFTClusterTask /*final*/ : public TaskInterface // todo add back the "fi std::vector> mClusterXYinLayer; std::vector> mClusterRinLayer; std::unique_ptr mClusterRinAllLayers = nullptr; + std::unique_ptr mFrame = nullptr; // dummy histogram to set the axes + std::unique_ptr mLegend = nullptr; std::unique_ptr mClustersROFSize = nullptr; std::unique_ptr mClustersBC = nullptr; @@ -92,6 +95,8 @@ class QcMFTClusterTask /*final*/ : public TaskInterface // todo add back the "fi int mOnlineQC; const TString mColors[10] = { "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#8C564B", "#E377C2", "#9467BD", "#BCBD22", "#7F7F7F", "#17BECF" }; + TH1F* clonedHistos[10] = { nullptr }; + bool firstRun = true; // needed to construct the name and path of some histograms int mHalf[936] = { 0 }; diff --git a/Modules/MFT/src/QcMFTClusterTask.cxx b/Modules/MFT/src/QcMFTClusterTask.cxx index c9c0dc23c7..506130cf46 100644 --- a/Modules/MFT/src/QcMFTClusterTask.cxx +++ b/Modules/MFT/src/QcMFTClusterTask.cxx @@ -259,6 +259,11 @@ void QcMFTClusterTask::initialize(o2::framework::InitContext& /*ctx*/) // canvas for for cluster R in all layers mClusterRinAllLayers = std::make_unique("mClusterRinAllLayers", "Cluster Radial Position in All MFT Layers"); getObjectsManager()->startPublishing(mClusterRinAllLayers.get()); + mFrame = std::make_unique("frame", "Cluster Radial Position in All MFT Layers; r (cm); # entries", 400, 0, 20); + mFrame->SetStats(0); + mLegend = std::make_unique(0.8, 0.5, 0.9, 0.9); + mLegend->SetBorderSize(0); + mLegend->SetFillStyle(0); } } @@ -443,6 +448,8 @@ void QcMFTClusterTask::reset() mClusterRinLayer[nMFTLayer]->Reset(); } mClusterRinAllLayers->Clear(); + mFrame->Reset(); + mLegend->Clear(); } } @@ -469,6 +476,34 @@ void QcMFTClusterTask::updateCanvas() { mClusterRinAllLayers->Clear(); mClusterRinAllLayers->cd(); + + for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { + clonedHistos[nMFTLayer] = static_cast(mClusterRinLayer[nMFTLayer]->getNum()->Clone()); + clonedHistos[nMFTLayer]->SetDirectory(nullptr); + clonedHistos[nMFTLayer]->SetStats(0); + clonedHistos[nMFTLayer]->SetLineColor(TColor::GetColor(mColors[nMFTLayer])); + } + + double maxY = 0; + for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { + double localMax = clonedHistos[nMFTLayer]->GetMaximum(); + if (localMax > maxY) { + maxY = localMax; + } + } + mFrame->SetMaximum(maxY * 1.1); + mFrame->Draw(); + for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { + clonedHistos[nMFTLayer]->Draw("hist same"); + } + if (firstRun) { + mLegend->Clear(); + for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { + mLegend->AddEntry(clonedHistos[nMFTLayer], Form("D%dF%d", static_cast(std::floor(nMFTLayer / 2.)), nMFTLayer % 2 == 0 ? 0 : 1), "l"); + } + firstRun = false; + } + mLegend->Draw(); mClusterRinAllLayers->Update(); } From 3a7194ec0ab85b24c3aa91787a1a31cab2a25c52 Mon Sep 17 00:00:00 2001 From: Jakub Juracka Date: Tue, 12 May 2026 17:49:16 +0200 Subject: [PATCH 3/3] adhere to naming convention --- Modules/MFT/include/MFT/QcMFTClusterTask.h | 4 ++-- Modules/MFT/src/QcMFTClusterTask.cxx | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Modules/MFT/include/MFT/QcMFTClusterTask.h b/Modules/MFT/include/MFT/QcMFTClusterTask.h index 75a4a65832..4eb25b77d1 100644 --- a/Modules/MFT/include/MFT/QcMFTClusterTask.h +++ b/Modules/MFT/include/MFT/QcMFTClusterTask.h @@ -95,8 +95,8 @@ class QcMFTClusterTask /*final*/ : public TaskInterface // todo add back the "fi int mOnlineQC; const TString mColors[10] = { "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#8C564B", "#E377C2", "#9467BD", "#BCBD22", "#7F7F7F", "#17BECF" }; - TH1F* clonedHistos[10] = { nullptr }; - bool firstRun = true; + TH1F* mClonedHistos[10] = { nullptr }; + bool mFirstRun = true; // needed to construct the name and path of some histograms int mHalf[936] = { 0 }; diff --git a/Modules/MFT/src/QcMFTClusterTask.cxx b/Modules/MFT/src/QcMFTClusterTask.cxx index 506130cf46..6bc0556589 100644 --- a/Modules/MFT/src/QcMFTClusterTask.cxx +++ b/Modules/MFT/src/QcMFTClusterTask.cxx @@ -478,15 +478,15 @@ void QcMFTClusterTask::updateCanvas() mClusterRinAllLayers->cd(); for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { - clonedHistos[nMFTLayer] = static_cast(mClusterRinLayer[nMFTLayer]->getNum()->Clone()); - clonedHistos[nMFTLayer]->SetDirectory(nullptr); - clonedHistos[nMFTLayer]->SetStats(0); - clonedHistos[nMFTLayer]->SetLineColor(TColor::GetColor(mColors[nMFTLayer])); + mClonedHistos[nMFTLayer] = static_cast(mClusterRinLayer[nMFTLayer]->getNum()->Clone()); + mClonedHistos[nMFTLayer]->SetDirectory(nullptr); + mClonedHistos[nMFTLayer]->SetStats(0); + mClonedHistos[nMFTLayer]->SetLineColor(TColor::GetColor(mColors[nMFTLayer])); } double maxY = 0; for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { - double localMax = clonedHistos[nMFTLayer]->GetMaximum(); + double localMax = mClonedHistos[nMFTLayer]->GetMaximum(); if (localMax > maxY) { maxY = localMax; } @@ -494,14 +494,14 @@ void QcMFTClusterTask::updateCanvas() mFrame->SetMaximum(maxY * 1.1); mFrame->Draw(); for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { - clonedHistos[nMFTLayer]->Draw("hist same"); + mClonedHistos[nMFTLayer]->Draw("hist same"); } - if (firstRun) { + if (mFirstRun) { mLegend->Clear(); for (auto nMFTLayer = 0; nMFTLayer < 10; nMFTLayer++) { - mLegend->AddEntry(clonedHistos[nMFTLayer], Form("D%dF%d", static_cast(std::floor(nMFTLayer / 2.)), nMFTLayer % 2 == 0 ? 0 : 1), "l"); + mLegend->AddEntry(mClonedHistos[nMFTLayer], Form("D%dF%d", static_cast(std::floor(nMFTLayer / 2.)), nMFTLayer % 2 == 0 ? 0 : 1), "l"); } - firstRun = false; + mFirstRun = false; } mLegend->Draw(); mClusterRinAllLayers->Update();