Skip to content

Commit 66154b5

Browse files
authored
TOF: add start publishing (#2233)
* TOF: add start publishing * Fix header * Fix * Deleting MO * Use initialize * ResetBefore
1 parent 3d11c37 commit 66154b5

2 files changed

Lines changed: 38 additions & 23 deletions

File tree

Modules/TOF/include/TOF/PostProcessHitMap.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
class TH1F;
3131
class TH2F;
32+
class TCanvas;
33+
class TPaveText;
3234

3335
namespace o2::quality_control_modules::tof
3436
{
@@ -63,7 +65,7 @@ class PostProcessHitMap final : public quality_control::postprocessing::PostProc
6365
/// registry with singleton interfaces.
6466
/// \param trigger Trigger which caused the initialization, for example Trigger::EOR
6567
/// \param services Interface containing optional interfaces, for example DatabaseInterface
66-
void finalize(quality_control::postprocessing::Trigger, framework::ServiceRegistryRef) override{};
68+
void finalize(quality_control::postprocessing::Trigger, framework::ServiceRegistryRef) override;
6769

6870
private:
6971
o2::quality_control::repository::DatabaseInterface* mDatabase = nullptr;
@@ -74,6 +76,8 @@ class PostProcessHitMap final : public quality_control::postprocessing::PostProc
7476
/// Reference hit map taken from the CCDB and translated into QC binning
7577
std::shared_ptr<TH2F> mHistoRefHitMap = nullptr; /// TOF reference hit map
7678
std::shared_ptr<TH2F> mHistoHitMap = nullptr; /// TOF hit map
79+
std::shared_ptr<TCanvas> mCanvasMo = nullptr; /// Canvas with hit map and ref. map
80+
std::shared_ptr<TPaveText> mPhosPad = nullptr; /// PHOS pad to draw
7781
bool mDrawRefOnTop; /// flag to enable the drawing of the refmap on top of the hit map. if false drawing on top the hitmap (initialized from the configure method)
7882
};
7983

Modules/TOF/src/PostProcessHitMap.cxx

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,19 @@
2020
#include "DataFormatsTOF/TOFFEElightInfo.h"
2121
#include "TOFBase/Geo.h"
2222

23-
// QualityControl includes
24-
#include "QualityControl/MonitorObject.h"
25-
#include "QualityControl/QcInfoLogger.h"
26-
#include "TOF/PostProcessHitMap.h"
27-
#include "QualityControl/DatabaseInterface.h"
28-
2923
// ROOT includes
3024
#include <TH2F.h>
3125
#include <TCanvas.h>
3226
#include <TPaveText.h>
3327
#include <TColor.h>
3428
#include <boost/property_tree/ptree.hpp>
3529

30+
// QualityControl includes
31+
#include "QualityControl/MonitorObject.h"
32+
#include "QualityControl/QcInfoLogger.h"
33+
#include "TOF/PostProcessHitMap.h"
34+
#include "QualityControl/DatabaseInterface.h"
35+
3636
using namespace std;
3737
using namespace o2::quality_control::postprocessing;
3838
using namespace o2::quality_control::core;
@@ -60,6 +60,21 @@ void PostProcessHitMap::initialize(Trigger, framework::ServiceRegistryRef servic
6060
{
6161
// Setting up services
6262
mDatabase = &services.get<o2::quality_control::repository::DatabaseInterface>();
63+
64+
mCanvasMo.reset();
65+
mCanvasMo = std::make_shared<TCanvas>("defaultMap", "defaultMap");
66+
getObjectsManager()->startPublishing(mCanvasMo.get());
67+
68+
mPhosPad.reset();
69+
mPhosPad = std::make_shared<TPaveText>(13.f, 38.f, 16.f, 53.f, "bl");
70+
mPhosPad->SetTextSize(0.05);
71+
mPhosPad->SetBorderSize(1);
72+
mPhosPad->SetTextColor(kBlack);
73+
mPhosPad->SetFillColor(kGreen);
74+
mPhosPad->SetFillStyle(3004);
75+
mPhosPad->AddText("Red: No Match");
76+
mPhosPad->AddText("Blu: RefMap");
77+
mPhosPad->AddText("Green: HitMap");
6378
}
6479

6580
void PostProcessHitMap::update(Trigger t, framework::ServiceRegistryRef services)
@@ -126,7 +141,12 @@ void PostProcessHitMap::update(Trigger t, framework::ServiceRegistryRef services
126141
ILOG(Warning, Support) << "mHistoHitMap undefined, can't finalize" << ENDM;
127142
return;
128143
}
129-
TCanvas* canvas = new TCanvas(mHistoHitMap->GetName(), mHistoHitMap->GetName());
144+
145+
mCanvasMo->SetName(mHistoHitMap->GetName());
146+
mCanvasMo->SetTitle(mHistoHitMap->GetName());
147+
mCanvasMo->cd();
148+
mCanvasMo->Clear();
149+
130150
mHistoRefHitMap->GetZaxis()->SetRangeUser(0, 1);
131151
mHistoHitMap->GetZaxis()->SetRangeUser(0, 1);
132152

@@ -142,27 +162,18 @@ void PostProcessHitMap::update(Trigger t, framework::ServiceRegistryRef services
142162
mHistoRefHitMap->GetListOfFunctions()->Clear();
143163
mHistoRefHitMap->Draw("BOXsame");
144164
}
145-
TPaveText phosPad{ 13.f, 38.f, 16.f, 53.f, "bl" };
146-
phosPad.SetTextSize(0.05);
147-
phosPad.SetBorderSize(1);
148-
phosPad.SetTextColor(kBlack);
149-
phosPad.SetFillColor(kGreen);
150-
phosPad.SetFillStyle(3004);
151-
phosPad.AddText("Red: No Match");
152-
phosPad.AddText("Blu: RefMap");
153-
phosPad.AddText("Green: HitMap");
154-
phosPad.Draw();
165+
mPhosPad->Draw();
155166

156167
// Draw the shifter message
157168
if (mHistoHitMap->GetListOfFunctions()->FindObject(Form("%s_msg", mHistoHitMap->GetName()))) {
158169
mHistoHitMap->GetListOfFunctions()->FindObject(Form("%s_msg", mHistoHitMap->GetName()))->Draw("same");
159170
}
171+
}
160172

161-
auto moToStore = std::make_shared<o2::quality_control::core::MonitorObject>(canvas, getID(), "o2::quality_control_modules::tof::PostProcessDiagnosticPerCreate", "TOF");
162-
moToStore->setIsOwner(false);
163-
mDatabase->storeMO(moToStore);
164-
// It should delete everything inside. Confirmed by trying to delete histo after and getting a segfault.
165-
delete canvas;
173+
void PostProcessHitMap::finalize(Trigger, framework::ServiceRegistryRef)
174+
{
175+
// Only if you don't want it to be published after finalisation.
176+
getObjectsManager()->stopPublishing(mCanvasMo.get());
166177
}
167178

168179
} // namespace o2::quality_control_modules::tof

0 commit comments

Comments
 (0)