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