Skip to content

Commit 543f375

Browse files
authored
Use HistogramRegistry in qa task (#4764)
1 parent ae5b8dc commit 543f375

1 file changed

Lines changed: 47 additions & 45 deletions

File tree

Analysis/Tasks/qaTask.cxx

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
/// \author Peter Hristov <Peter.Hristov@cern.ch>, CERN
1111
/// \author Gian Michele Innocenti <gian.michele.innocenti@cern.ch>, CERN
1212
/// \author Henrique J C Zanoli <henrique.zanoli@cern.ch>, Utrecht University
13+
/// \author Nicolo' Jacazio <nicolo.jacazio@cern.ch>, CERN
1314

1415
#include "Framework/runDataProcessing.h"
1516
#include "Framework/AnalysisTask.h"
1617
#include "Framework/AnalysisDataModel.h"
18+
#include "Framework/HistogramRegistry.h"
1719
#include "Analysis/trackUtilities.h"
1820
#include "ReconstructionDataFormats/DCA.h"
1921
#include "Analysis/MC.h"
@@ -140,40 +142,40 @@ struct QATrackingResolution {
140142
std::array<double, 2> impactParameterRange = {-1500, 1500}; // micrometer
141143
std::array<double, 2> impactParameterResolutionRange = {0, 1000}; // micrometer
142144

143-
o2fw::OutputObj<TH1F> etaDiffMCRec{TH1F("etaDiffMCReco", ";#eta_{MC} - #eta_{Rec}", nBinsDeltaEta, -2, 2)};
144-
o2fw::OutputObj<TH2F> etaDiffMCRecoVsEtaMC{TH2F("etaDiffMCRecoVsEtaMC", ";#eta_{MC} - #eta_{Rec};#eta_{MC}", nBinsDeltaEta, -2, 2, nBinsEta, etaRange[0], etaRange[1])};
145-
o2fw::OutputObj<TH2F> etaDiffMCRecoVsEtaReco{TH2F("etaDiffMCRecoVsEtaReco", ";#eta_{MC} - #eta_{Rec};#eta_{Rec}", nBinsDeltaEta, -2, 2, nBinsEta, etaRange[0], etaRange[1])};
145+
// Registry of histograms
146+
o2fw::HistogramRegistry histos{"Histos", {}, o2fw::OutputObjHandlingPolicy::AnalysisObject};
146147

147-
o2fw::OutputObj<TH1F> phiDiffMCRec{
148-
TH1F("phiDiffMCRec", ";#varphi_{MC} - #varphi_{Rec} [rad]", nBinsDeltaPhi, -M_PI, M_PI)};
149-
150-
o2fw::OutputObj<TH1F> ptDiffMCRec{TH1F("ptDiffMCRec", ";p_{T}_{MC} - p_{T}_{Rec} [GeV/c]", nBinsDeltaPt, -2., 2.)};
151-
152-
o2fw::OutputObj<TH1F> ptResolution{
153-
TH1F("ptResolution", ";(p_{T}_{MC} - p_{T}_{Rec})/(p_{T}_{Rec}) ", nBinsDeltaPt, -2., 2.)};
154-
155-
o2fw::OutputObj<TH2F> ptResolutionVsPt{TH2F("ptResolutionVsPt",
156-
";p_{T} [GeV/c];(p_{T}_{MC} - p_{T}_{Rec})/(p_{T}_{Rec})", nBinsPtTrack,
157-
ptRange[0], ptRange[1], nBinsDeltaPt, 0, 2.)};
158-
159-
o2fw::OutputObj<TH2F> ptResolutionVsEta{TH2F("ptResolutionVsEta", ";#eta;(p_{T}_{MC} - p_{T}_{Rec})/(p_{T}_{Rec})",
160-
nBinsEta, -4., 4., nBinsDeltaPt, -2., 2.)};
161-
162-
o2fw::OutputObj<TH2F> impactParameterVsPt{TH2F("impactParameterVsPt", ";p_{T} [GeV/c];Impact Parameter [{#mu}m]",
163-
nBinsPtTrack, ptRange[0], ptRange[1], nBinsImpactParameter,
164-
impactParameterRange[0], impactParameterRange[1])};
165-
166-
o2fw::OutputObj<TH2F> impactParameterVsEta{TH2F("impactParameterVsEta", "#eta;Impact Parameter [{#mu}m]",
167-
nBinsEta, etaRange[0], etaRange[1], nBinsImpactParameter,
168-
impactParameterRange[0], impactParameterRange[1])};
169-
170-
o2fw::OutputObj<TH2F> impactParameterErrorVsPt{
171-
TH2F("impactParameterErrorVsPt", ";p_{T} [GeV/c];Impact Parameter Error [#mum]", nBinsPtTrack, ptRange[0],
172-
ptRange[1], nBinsImpactParameter, impactParameterRange[0], impactParameterRange[1])};
173-
174-
o2fw::OutputObj<TH2F> impactParameterErrorVsEta{
175-
TH2F("impactParameterErrorVsEta", ";#eta;Impact Parameter Error [#mum]", nBinsEta, etaRange[0], etaRange[1],
176-
nBinsImpactParameter, 0, impactParameterRange[1])};
148+
void init(o2fw::InitContext&)
149+
{
150+
// Eta
151+
histos.add("Eta/etaDiffMCReco", ";#eta_{MC} - #eta_{Rec}", o2fw::kTH1F,
152+
{{nBinsDeltaEta, -2, 2}});
153+
histos.add("Eta/etaDiffMCRecoVsEtaMC", ";#eta_{MC} - #eta_{Rec};#eta_{MC}", o2fw::kTH2F,
154+
{{nBinsDeltaEta, -2, 2}, {nBinsEta, etaRange[0], etaRange[1]}});
155+
histos.add("Eta/etaDiffMCRecoVsEtaReco", ";#eta_{MC} - #eta_{Rec};#eta_{Rec}", o2fw::kTH2F,
156+
{{nBinsDeltaEta, -2, 2}, {nBinsEta, etaRange[0], etaRange[1]}});
157+
// Phi
158+
histos.add("Phi/phiDiffMCRec", ";#varphi_{MC} - #varphi_{Rec} [rad]", o2fw::kTH1F,
159+
{{nBinsDeltaPhi, -M_PI, M_PI}});
160+
// Pt
161+
histos.add("Pt/ptDiffMCRec", ";p_{T}_{MC} - p_{T}_{Rec} [GeV/c]", o2fw::kTH1F,
162+
{{nBinsDeltaPt, -2., 2.}});
163+
histos.add("Pt/ptResolution", ";(p_{T}_{MC} - p_{T}_{Rec})/(p_{T}_{Rec})", o2fw::kTH1F,
164+
{{nBinsDeltaPt, -2., 2.}});
165+
histos.add("Pt/ptResolutionVsPt", ";p_{T} [GeV/c];(p_{T}_{MC} - p_{T}_{Rec})/(p_{T}_{Rec})", o2fw::kTH2F,
166+
{{nBinsPtTrack, ptRange[0], ptRange[1]}, {nBinsDeltaPt, 0, 2.}});
167+
histos.add("Pt/ptResolutionVsEta", ";#eta;(p_{T}_{MC} - p_{T}_{Rec})/(p_{T}_{Rec})", o2fw::kTH2F,
168+
{{nBinsEta, -4., 4.}, {nBinsDeltaPt, -2., 2.}});
169+
// Impact parameters
170+
histos.add("ImpactParameter/impactParameterVsPt", ";p_{T} [GeV/c];Impact Parameter [{#mu}m]", o2fw::kTH2F,
171+
{{nBinsPtTrack, ptRange[0], ptRange[1]}, {nBinsImpactParameter, impactParameterRange[0], impactParameterRange[1]}});
172+
histos.add("ImpactParameter/impactParameterVsEta", "#eta;Impact Parameter [{#mu}m]", o2fw::kTH2F,
173+
{{nBinsEta, etaRange[0], etaRange[1]}, {nBinsImpactParameter, impactParameterRange[0], impactParameterRange[1]}});
174+
histos.add("ImpactParameter/impactParameterErrorVsPt", ";p_{T} [GeV/c];Impact Parameter Error [#mum]", o2fw::kTH2F,
175+
{{nBinsPtTrack, ptRange[0], ptRange[1]}, {nBinsImpactParameter, impactParameterRange[0], impactParameterRange[1]}});
176+
histos.add("ImpactParameter/impactParameterErrorVsEta", ";#eta;Impact Parameter Error [#mum]", o2fw::kTH2F,
177+
{{nBinsEta, etaRange[0], etaRange[1]}, {nBinsImpactParameter, 0, impactParameterRange[1]}});
178+
}
177179

178180
void process(const o2::soa::Join<o2::aod::Collisions, o2::aod::McCollisionLabels>::iterator& collision,
179181
const o2::soa::Join<o2::aod::Tracks, o2::aod::TracksCov, o2::aod::McTrackLabels>& tracks,
@@ -183,20 +185,20 @@ struct QATrackingResolution {
183185

184186
for (const auto& track : tracks) {
185187
const double deltaPt = track.label().pt() - track.pt();
186-
ptDiffMCRec->Fill(deltaPt);
188+
histos.fill("Pt/ptDiffMCRec", deltaPt);
187189

188190
const double deltaPtOverPt = deltaPt / track.pt();
189-
ptResolution->Fill((deltaPtOverPt));
190-
ptResolutionVsPt->Fill(track.pt(), abs(deltaPtOverPt));
191-
ptResolutionVsEta->Fill(track.eta(), abs(deltaPtOverPt));
191+
histos.fill("Pt/ptResolution", deltaPtOverPt);
192+
histos.fill("Pt/ptResolutionVsPt", track.pt(), abs(deltaPtOverPt));
193+
histos.fill("Pt/ptResolutionVsEta", track.eta(), abs(deltaPtOverPt));
192194

193195
const double deltaEta = track.label().eta() - track.eta();
194-
etaDiffMCRec->Fill(deltaEta);
195-
etaDiffMCRecoVsEtaMC->Fill(deltaEta, track.label().eta());
196-
etaDiffMCRecoVsEtaReco->Fill(deltaEta, track.eta());
196+
histos.fill("Eta/etaDiffMCReco", deltaEta);
197+
histos.fill("Eta/etaDiffMCRecoVsEtaMC", deltaEta, track.label().eta());
198+
histos.fill("Eta/etaDiffMCRecoVsEtaReco", deltaEta, track.eta());
197199

198200
const auto deltaPhi = track_utils::ConvertPhiRange(track.label().phi() - track.phi());
199-
phiDiffMCRec->Fill(deltaPhi);
201+
histos.fill("Phi/phiDiffMCRec", deltaPhi);
200202

201203
double impactParameter{-999.};
202204
double impactParameterError{-999.};
@@ -205,10 +207,10 @@ struct QATrackingResolution {
205207
track_utils::GetImpactParameterAndError(track, primaryVertex, impactParameter, impactParameterError);
206208

207209
if (propagate) {
208-
impactParameterVsPt->Fill(track.pt(), impactParameter);
209-
impactParameterVsEta->Fill(track.eta(), impactParameter);
210-
impactParameterErrorVsPt->Fill(track.pt(), impactParameterError);
211-
impactParameterErrorVsEta->Fill(track.eta(), impactParameterError);
210+
histos.fill("ImpactParameter/impactParameterVsPt", track.pt(), impactParameter);
211+
histos.fill("ImpactParameter/impactParameterVsEta", track.eta(), impactParameter);
212+
histos.fill("ImpactParameter/impactParameterErrorVsPt", track.pt(), impactParameterError);
213+
histos.fill("ImpactParameter/impactParameterErrorVsEta", track.eta(), impactParameterError);
212214
}
213215
}
214216
}

0 commit comments

Comments
 (0)