From f337cb2d052965bbe73c612e5e55d81fc1d0eb03 Mon Sep 17 00:00:00 2001 From: jokonig Date: Fri, 13 Feb 2026 16:24:10 +0100 Subject: [PATCH] [EMCAL-519] Fix drawing lines for SM geom instead of trigger geom - Wrong geometry used, introduced in https://github.com/AliceO2Group/QualityControl/pull/2637 - Make line width smaller - factor out function to remove existing lines --- Modules/EMCAL/include/EMCAL/DrawGridlines.h | 83 +++++++++++++-------- Modules/EMCAL/src/CellTask.cxx | 24 +++--- 2 files changed, 64 insertions(+), 43 deletions(-) diff --git a/Modules/EMCAL/include/EMCAL/DrawGridlines.h b/Modules/EMCAL/include/EMCAL/DrawGridlines.h index 723955432..3ef235770 100644 --- a/Modules/EMCAL/include/EMCAL/DrawGridlines.h +++ b/Modules/EMCAL/include/EMCAL/DrawGridlines.h @@ -39,38 +39,24 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte } // check if the gridlines are already drawn by looking for a line at the first SM boundary - auto* funcs = histo->GetListOfFunctions(); - if (!funcs) { - return; - } - - // Remove previously added grid lines - TIter it(funcs); - TObject* obj = nullptr; - while ((obj = it())) { - if (obj->InheritsFrom(TLine::Class())) { - ILOG(Debug, Support) << "Removing existing grid line from histogram " << histo->GetName() << ENDM; - funcs->Remove(obj); - delete obj; - } - } + ResetLines(histo); // EMCAL for (int iside = 0; iside <= 48; iside += 24) { auto smline = new TLine(static_cast(iside) - 0.5, -0.5, static_cast(iside) - 0.5, 63.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (int iphi = 0; iphi < 60; iphi += 12) { auto smline = new TLine(-0.5, static_cast(iphi) - 0.5, 47.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (auto iphi = 60; iphi <= 64; iphi += 4) { auto smline = new TLine(-0.5, static_cast(iphi) - 0.5, 47.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } @@ -81,26 +67,26 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte for (int isepeta = 0; isepeta < 2; isepeta++) { int etaoffset = sideoffset + isepeta * 16; auto smline = new TLine(static_cast(etaoffset) - 0.5, 63.5, static_cast(etaoffset) - 0.5, 99.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (auto iphi = 76; iphi <= 88; iphi += 12) { auto smline = new TLine(static_cast(sideoffset) - 0.5, static_cast(iphi) - 0.5, static_cast(sideoffset + 16) - 0.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } } for (auto iphi = 100; iphi <= 104; iphi += 4) { auto smline = new TLine(-0.5, static_cast(iphi) - 0.5, 47.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (auto ieta = 0; ieta <= 48; ieta += 24) { auto smline = new TLine(static_cast(ieta) - 0.5, 99.5, static_cast(ieta) - 0.5, 103.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } @@ -112,13 +98,17 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte if (histo == nullptr) { return; } + + // check if the gridlines are already drawn by looking for a line at the first SM boundary + ResetLines(histo); + // EMCAL for (int side = 0; side < 2; side++) { int sideoffset = 24 * side; for (int itru = 0; itru < 2; itru++) { int truoffset = sideoffset + (itru + 1) * 8; auto truline = new TLine(static_cast(truoffset) - 0.5, -0.5, static_cast(truoffset) - 0.5, 59.5); - truline->SetLineWidth(3); + truline->SetLineWidth(2); histo->GetListOfFunctions()->Add(truline); } @@ -128,7 +118,7 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte for (int side = 0; side < 2; side++) { int sideoffset = (side == 0) ? 0 : 32; auto truseparator = new TLine(static_cast(sideoffset + 8) - 0.5, 63.5, static_cast(sideoffset + 8) - 0.5, 99.5); - truseparator->SetLineWidth(3); + truseparator->SetLineWidth(2); histo->GetListOfFunctions()->Add(truseparator); } @@ -140,22 +130,26 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte if (histo == nullptr) { return; } + + // check if the gridlines are already drawn by looking for a line at the first SM boundary + ResetLines(histo); + // EMCAL for (int iside = 0; iside <= 96; iside += 48) { auto smline = new TLine(static_cast(iside) - 0.5, -0.5, static_cast(iside) - 0.5, 127.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (int iphi = 0; iphi < 120; iphi += 24) { auto smline = new TLine(-0.5, static_cast(iphi) - 0.5, 95.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (auto iphi = 120; iphi <= 128; iphi += 8) { auto smline = new TLine(-0.5, static_cast(iphi) - 0.5, 95.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } @@ -166,26 +160,26 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte for (int isepeta = 0; isepeta < 2; isepeta++) { int etaoffset = sideoffset + isepeta * 32; auto smline = new TLine(static_cast(etaoffset) - 0.5, 127.5, static_cast(etaoffset) - 0.5, 199.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (auto iphi = 152; iphi <= 176; iphi += 24) { auto smline = new TLine(static_cast(sideoffset) - 0.5, static_cast(iphi) - 0.5, static_cast(sideoffset + 32) - 0.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } } for (auto iphi = 200; iphi <= 208; iphi += 8) { auto smline = new TLine(-0.5, static_cast(iphi) - 0.5, 95.5, static_cast(iphi) - 0.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } for (auto ieta = 0; ieta <= 96; ieta += 48) { auto smline = new TLine(static_cast(ieta) - 0.5, 199.5, static_cast(ieta) - 0.5, 207.5); - smline->SetLineWidth(6); + smline->SetLineWidth(2); histo->GetListOfFunctions()->Add(smline); } @@ -197,6 +191,10 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte if (histo == nullptr) { return; } + + // check if the gridlines are already drawn by looking for a line at the first SM boundary + ResetLines(histo); + // EMCAL for (int iphi = 1; iphi < 64; iphi++) { auto fastorLine = new TLine(-0.5, static_cast(iphi) - 0.5, 47.5, static_cast(iphi) - 0.5); @@ -230,6 +228,29 @@ class DrawGridlines : public quality_control::postprocessing::PostProcessingInte histo->GetListOfFunctions()->Add(philine); } }; + + static void ResetLines(TH1* histo = nullptr) + { + if (histo == nullptr) { + return; + } + + auto* funcs = histo->GetListOfFunctions(); + if (!funcs) { + return; + } + + // Remove previously added grid lines + TIter it(funcs); + TObject* obj = nullptr; + while ((obj = it())) { + if (obj->InheritsFrom(TLine::Class())) { + ILOG(Debug, Support) << "Removing existing grid line from histogram " << histo->GetName() << ENDM; + funcs->Remove(obj); + delete obj; + } + } + }; }; } // namespace o2::quality_control_modules::emcal diff --git a/Modules/EMCAL/src/CellTask.cxx b/Modules/EMCAL/src/CellTask.cxx index 909c1ffb3..683da734d 100644 --- a/Modules/EMCAL/src/CellTask.cxx +++ b/Modules/EMCAL/src/CellTask.cxx @@ -1067,12 +1067,12 @@ void CellTask::CellHistograms::startPublishing(o2::quality_control::core::Object } }; - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancy); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyThr); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyThrBelow); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyGood); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyBad); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mIntegratedOccupancy); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancy); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyThr); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyThrBelow); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyGood); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyBad); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mIntegratedOccupancy); publishOptional(mCellTime); publishOptional(mCellTimeCalib); @@ -1176,12 +1176,12 @@ void CellTask::CellHistograms::reset() } // Draw Grid Lines - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancy); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyThr); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyThrBelow); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyGood); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mCellOccupancyBad); - o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInTriggerGeo(mIntegratedOccupancy); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancy); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyThr); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyThrBelow); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyGood); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mCellOccupancyBad); + o2::quality_control_modules::emcal::DrawGridlines::DrawSMGridInStdGeo(mIntegratedOccupancy); } void CellTask::CellHistograms::clean()