diff --git a/Modules/MFT/include/MFT/QcMFTClusterTask.h b/Modules/MFT/include/MFT/QcMFTClusterTask.h index ef2c87d16..ad8befeb3 100644 --- a/Modules/MFT/include/MFT/QcMFTClusterTask.h +++ b/Modules/MFT/include/MFT/QcMFTClusterTask.h @@ -16,6 +16,7 @@ /// \author Katarina Krizkova Gajdosova /// \author Diana Maria Krupova /// \author David Grund +/// \author Jakub Juracka /// #ifndef QC_MFT_CLUSTER_TASK_H @@ -23,6 +24,9 @@ #include #include +#include +#include +#include #include #include "ReconstructionDataFormats/BaseCluster.h" #include "MFTBase/GeometryTGeo.h" @@ -79,6 +83,8 @@ class QcMFTClusterTask /*final*/ : public TaskInterface // todo add back the "fi std::unique_ptr mClusterZ = nullptr; 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; @@ -87,6 +93,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" }; + // needed to construct the name and path of some histograms int mHalf[936] = { 0 }; int mDisk[936] = { 0 }; @@ -100,6 +108,7 @@ class QcMFTClusterTask /*final*/ : public TaskInterface // todo add back the "fi // internal functions void getChipMapData(); + void updateCanvas(); // cluster size in pixels int mClusterSize = { 0 }; diff --git a/Modules/MFT/src/QcMFTClusterCheck.cxx b/Modules/MFT/src/QcMFTClusterCheck.cxx index a6a86d99a..2bda4952c 100644 --- a/Modules/MFT/src/QcMFTClusterCheck.cxx +++ b/Modules/MFT/src/QcMFTClusterCheck.cxx @@ -278,7 +278,6 @@ void QcMFTClusterCheck::beautify(std::shared_ptr mo, Quality chec tl->SetTextFont(142); tl->SetTextSize(0.08); hMap->GetListOfFunctions()->Add(tl); - tl->Draw(); } } @@ -299,7 +298,6 @@ void QcMFTClusterCheck::beautify(std::shared_ptr mo, Quality chec b->SetFillStyle(4055); b->SetFillColor(15); h->GetListOfFunctions()->Add(b); - b->Draw(); } } } @@ -319,31 +317,25 @@ void QcMFTClusterCheck::beautify(std::shared_ptr mo, Quality chec msg1->Clear(); msg1->AddText("Quality Good"); msg1->SetFillColor(kGreen); - msg1->Draw(); msg2->Clear(); msg2->AddText("No action needed"); msg2->SetFillColor(kGreen); - msg2->Draw(); } else if (checkResult == Quality::Medium) { LOG(info) << "Quality::Medium"; msg1->Clear(); msg1->AddText("Quality medium"); msg1->SetFillColor(kOrange); - msg1->Draw(); msg2->Clear(); msg2->AddText("Write a logbook entry tagging MFT"); msg2->SetFillColor(kOrange); - msg2->Draw(); } else if (checkResult == Quality::Bad) { LOG(info) << "Quality::Bad"; msg1->Clear(); msg1->AddText("Quality bad"); msg1->SetFillColor(kRed); - msg1->Draw(); msg2->Clear(); msg2->AddText("Call the on-call!"); msg2->SetFillColor(kRed); - msg2->Draw(); } } } diff --git a/Modules/MFT/src/QcMFTClusterTask.cxx b/Modules/MFT/src/QcMFTClusterTask.cxx index 0d516bc60..bfbef10a4 100644 --- a/Modules/MFT/src/QcMFTClusterTask.cxx +++ b/Modules/MFT/src/QcMFTClusterTask.cxx @@ -28,6 +28,8 @@ #include #include #include +#include +#include // O2 #include #include @@ -249,11 +251,20 @@ void QcMFTClusterTask::initialize(o2::framework::InitContext& /*ctx*/) auto clusterR = std::make_unique( Form("ClusterRinLayer/mClusterRinLayer%d", nMFTLayer), - Form("Cluster Radial Position in Layer %d; r (cm); # entries", nMFTLayer), 400, 0, 20, true); + Form("Cluster Radial Position in Layer %d; r (cm); # entries per orbit", nMFTLayer), 400, 0, 20, true); mClusterRinLayer.push_back(std::move(clusterR)); getObjectsManager()->startPublishing(mClusterRinLayer[nMFTLayer].get()); getObjectsManager()->setDisplayHint(mClusterRinLayer[nMFTLayer].get(), "hist"); } + // 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()); + } } } @@ -403,6 +414,7 @@ void QcMFTClusterTask::endOfCycle() mClusterXYinLayer[nMFTLayer]->update(); mClusterRinLayer[nMFTLayer]->update(); } + updateCanvas(); } } @@ -435,6 +447,7 @@ void QcMFTClusterTask::reset() mClusterXYinLayer[nMFTLayer]->Reset(); mClusterRinLayer[nMFTLayer]->Reset(); } + mClusterRinAllLayers->Clear(); } } @@ -457,4 +470,13 @@ void QcMFTClusterTask::getChipMapData() } } +void QcMFTClusterTask::updateCanvas() +{ + mClusterRinAllLayers->cd(); + mClusterRinAllLayers->Clear(); + mClusterRinAllLayersStack->Draw("nostack hist"); + mClusterRinAllLayers->Update(); + gPad->BuildLegend(0.83, 0.50, 0.90, 0.90, "", "l"); +} + } // namespace o2::quality_control_modules::mft