67 std::shared_ptr<o2::base::GRPGeomRequest> gr,
69 bool useMC) : mDataRequest(dr),
82 void saveHistograms();
83 void plotHistograms();
84 std::shared_ptr<
o2::base::GRPGeomRequest> mGGCCDBRequest;
88 float mITSROFrameLengthMUS = 0.;
89 float mITSROFBiasMUS = 0.;
90 std::unique_ptr<o2::utils::TreeStreamRedirector> mDBGOut;
92 std::unique_ptr<TH1F> mHistoContributorsPV{};
93 std::unique_ptr<TH1F> mHistoTrackType;
94 std::unique_ptr<TH1F> mHistoTrackTypeRej;
95 std::unique_ptr<TH1F> mHistoTrackTypeAcc;
96 std::unique_ptr<TH2F> mHistoXPvVsRefitted{};
97 std::unique_ptr<TH2F> mHistoYPvVsRefitted{};
98 std::unique_ptr<TH2F> mHistoZPvVsRefitted{};
99 std::unique_ptr<TH1F> mHistoXDeltaPVrefit{};
100 std::unique_ptr<TH1F> mHistoYDeltaPVrefit{};
101 std::unique_ptr<TH1F> mHistoZDeltaPVrefit{};
102 std::unique_ptr<TH2F> mHistoImpParXy{};
103 std::unique_ptr<TH2F> mHistoImpParZ{};
104 std::unique_ptr<TH2F> mHistoImpParXyPhi{};
105 std::unique_ptr<TH2F> mHistoImpParZPhi{};
106 std::unique_ptr<TH2F> mHistoImpParXyTop{};
107 std::unique_ptr<TH2F> mHistoImpParZTop{};
108 std::unique_ptr<TH2F> mHistoImpParXyBottom{};
109 std::unique_ptr<TH2F> mHistoImpParZBottom{};
110 std::unique_ptr<TH2F> mHistoImpParXyPositiveCharge{};
111 std::unique_ptr<TH2F> mHistoImpParZPositiveCharge{};
112 std::unique_ptr<TH2F> mHistoImpParXyNegativeCharge{};
113 std::unique_ptr<TH2F> mHistoImpParZNegativeCharge{};
114 std::unique_ptr<TH1F> mHistoImpParXyMeanPhi{};
115 std::unique_ptr<TH1F> mHistoImpParZMeanPhi{};
116 std::unique_ptr<TH1F> mHistoImpParXySigmaPhi{};
117 std::unique_ptr<TH1F> mHistoImpParZSigmaPhi{};
118 std::unique_ptr<TH1F> mHistoImpParXySigma{};
119 std::unique_ptr<TH1F> mHistoImpParZSigma{};
120 std::unique_ptr<TH1F> mHistoImpParXySigmaTop{};
121 std::unique_ptr<TH1F> mHistoImpParZSigmaTop{};
122 std::unique_ptr<TH1F> mHistoImpParXySigmaBottom{};
123 std::unique_ptr<TH1F> mHistoImpParZSigmaBottom{};
124 std::unique_ptr<TH1F> mHistoImpParXyMeanTop{};
125 std::unique_ptr<TH1F> mHistoImpParZMeanTop{};
126 std::unique_ptr<TH1F> mHistoImpParXyMeanBottom{};
127 std::unique_ptr<TH1F> mHistoImpParZMeanBottom{};
128 std::unique_ptr<TH1F> mHistoImpParXySigmaPositiveCharge{};
129 std::unique_ptr<TH1F> mHistoImpParZSigmaPositiveCharge{};
130 std::unique_ptr<TH1F> mHistoImpParXySigmaNegativeCharge{};
131 std::unique_ptr<TH1F> mHistoImpParZSigmaNegativeCharge{};
137 std::shared_ptr<DataRequest> mDataRequest;
138 gsl::span<const PVertex> mPVertices;
145 mOutName =
params.outFileName;
146 mDBGOut = std::make_unique<o2::utils::TreeStreamRedirector>(mOutName.Data(),
"recreate");
149 mHistoTrackType = std::make_unique<TH1F>(
"trackType",
"# Track Type", 32, -0.5, 31.5);
150 mHistoTrackTypeRej = std::make_unique<TH1F>(
"trackTypeRej",
"# Rejected Track Type", 32, -0.5, 31.5);
151 mHistoTrackTypeAcc = std::make_unique<TH1F>(
"trackTypeAcc",
"# Filtered Track Type", 32, -0.5, 31.5);
152 mHistoContributorsPV = std::make_unique<TH1F>(
"nContribPVrefit",
"# Contributors per PV", 100, 0, 100);
153 mHistoXPvVsRefitted = std::make_unique<TH2F>(
"histo2dXPvVsPVrefit",
"#X PV vs PV_{-1}, #mum", 100, -10, 10, 100, -10, 10);
154 mHistoYPvVsRefitted = std::make_unique<TH2F>(
"histo2dYPvVsPVrefit",
"#Y PV vs PV_{-1}, #mum", 100, -10, 10, 100, -10, 10);
155 mHistoZPvVsRefitted = std::make_unique<TH2F>(
"histo2dZPvVsPVrefit",
"#Z PV vs PV_{-1}, #mum", 100, -10, 10, 100, -10, 10);
156 mHistoXDeltaPVrefit = std::make_unique<TH1F>(
"histoDeltaXPVrefit",
"#DeltaX (PV-PV_{-1}), #mum", 300, -15, 15);
157 mHistoYDeltaPVrefit = std::make_unique<TH1F>(
"histoDeltaYPVrefit",
"#DeltaY (PV-PV_{-1}), #mum", 300, -15, 15);
158 mHistoZDeltaPVrefit = std::make_unique<TH1F>(
"histoDeltaZPVrefit",
"#DeltaZ (PV-PV_{-1}), #mum", 300, -15, 15);
159 mHistoImpParXyPhi = std::make_unique<TH2F>(
"histoImpParXyPhi",
"#Phi; #phi; Impact Parameter XY (#mum);", 100, 0., 6.28, 100, -1000, 1000);
160 mHistoImpParZPhi = std::make_unique<TH2F>(
"histoImpParZPhi",
"#Phi; #phi; Impact Parameter Z (#mum);", 100, 0., 6.28, 100, -1000, 1000);
161 mHistoImpParZ = std::make_unique<TH2F>(
"histoImpParZ",
"Impact Parameter Z; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
162 mHistoImpParXy = std::make_unique<TH2F>(
"histoImpParXy",
"Impact Parameter XY; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
163 mHistoImpParXyTop = std::make_unique<TH2F>(
"histoImpParXyTop",
"Impact Parameter XY, #phi(track)<#pi; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
164 mHistoImpParXyBottom = std::make_unique<TH2F>(
"histoImpParXyBottom",
"Impact Parameter XY, #phi(track)>#pi; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
165 mHistoImpParZTop = std::make_unique<TH2F>(
"histoImpParZTop",
"Impact Parameter Z, #phi(track)<#pi; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
166 mHistoImpParZBottom = std::make_unique<TH2F>(
"histoImpParZBottom",
"Impact Parameter Z, #phi(track)>#pi; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
167 mHistoImpParXyNegativeCharge = std::make_unique<TH2F>(
"histoImpParXyNegativeCharge",
"Impact Parameter XY, sign<0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
168 mHistoImpParXyPositiveCharge = std::make_unique<TH2F>(
"histoImpParXyPositiveCharge",
"Impact Parameter XY, sign>0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
169 mHistoImpParZNegativeCharge = std::make_unique<TH2F>(
"histoImpParZNegativeCharge",
"Impact Parameter Z, sign<0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
170 mHistoImpParZPositiveCharge = std::make_unique<TH2F>(
"histoImpParZPositiveCharge",
"Impact Parameter Z, sign>0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data(), 100, -1000, 1000);
172 mHistoImpParXySigma = std::make_unique<TH1F>(
"histoImpParXySigma",
"Pointing Resolution XY; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
173 mHistoImpParZSigma = std::make_unique<TH1F>(
"histoImpParZSigma",
"Pointing Resolution Z; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
174 mHistoImpParXyMeanPhi = std::make_unique<TH1F>(
"histoImpParXyMean",
"Pointing Resolution XY; #phi; Mean #mum", 100, 0., 6.28);
175 mHistoImpParZMeanPhi = std::make_unique<TH1F>(
"histoImpParZMean",
"Pointing Resolution Z; #phi; Mean #mum", 100, 0., 6.28);
176 mHistoImpParXySigmaPhi = std::make_unique<TH1F>(
"histoImpParXySigmaPhi",
"Pointing Resolution XY; #phi; #sigma #mum", 100, 0., 6.28);
177 mHistoImpParZSigmaPhi = std::make_unique<TH1F>(
"histoImpParZSigmaPhi",
"Pointing Resolution Z; #phi; #sigma #mum", 100, 0., 6.28);
178 mHistoImpParXySigmaTop = std::make_unique<TH1F>(
"histoImpParXySigmaTop",
"Pointing Resolution XY, Top; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
179 mHistoImpParZSigmaTop = std::make_unique<TH1F>(
"histoImpParZSigmaTop",
"Pointing Resolution Z, Top; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
180 mHistoImpParXySigmaBottom = std::make_unique<TH1F>(
"histoImpParXySigmaBottom",
"Pointing Resolution XY, Bottom; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
181 mHistoImpParZSigmaBottom = std::make_unique<TH1F>(
"histoImpParZSigmaBottom",
"Pointing Resolution Z, Bottom; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
182 mHistoImpParXyMeanTop = std::make_unique<TH1F>(
"histoImpParXyMeanTop",
"Pointing Resolution XY, Top; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
183 mHistoImpParZMeanTop = std::make_unique<TH1F>(
"histoImpParZMeanTop",
"Pointing Resolution Z, Top; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
184 mHistoImpParXyMeanBottom = std::make_unique<TH1F>(
"histoImpParXyMeanBottom",
"Mean Pointing Resolution XY, Bottom; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
185 mHistoImpParZMeanBottom = std::make_unique<TH1F>(
"histoImpParZMeanBottom",
"Mean Pointing Resolution Z, Bottom; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
186 mHistoImpParXySigmaPositiveCharge = std::make_unique<TH1F>(
"histoImpParXySigmaPositiveCharge",
"Pointing Resolution XY, sign>0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
187 mHistoImpParZSigmaPositiveCharge = std::make_unique<TH1F>(
"histoImpParZSigmaPositiveCharge",
"Pointing Resolution Z, sign>0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
188 mHistoImpParXySigmaNegativeCharge = std::make_unique<TH1F>(
"histoImpParXySigmaNegativeCharge",
"Pointing Resolution XY, sign<0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
189 mHistoImpParZSigmaNegativeCharge = std::make_unique<TH1F>(
"histoImpParZSigmaNegativeCharge",
"Pointing Resolution Z, sign<0; #it{p}_{T} (GeV/#it{c}); #mum", logPtBinning.size() - 1, logPtBinning.data());
191 mHistoTrackType->SetDirectory(
nullptr);
192 mHistoTrackTypeRej->SetDirectory(
nullptr);
193 mHistoTrackTypeAcc->SetDirectory(
nullptr);
194 mHistoContributorsPV->SetDirectory(
nullptr);
195 mHistoXPvVsRefitted->SetDirectory(
nullptr);
196 mHistoYPvVsRefitted->SetDirectory(
nullptr);
197 mHistoZPvVsRefitted->SetDirectory(
nullptr);
198 mHistoXDeltaPVrefit->SetDirectory(
nullptr);
199 mHistoYDeltaPVrefit->SetDirectory(
nullptr);
200 mHistoZDeltaPVrefit->SetDirectory(
nullptr);
201 mHistoImpParZ->SetDirectory(
nullptr);
202 mHistoImpParXy->SetDirectory(
nullptr);
203 mHistoImpParXyPhi->SetDirectory(
nullptr);
204 mHistoImpParZPhi->SetDirectory(
nullptr);
205 mHistoImpParXyTop->SetDirectory(
nullptr);
206 mHistoImpParXyBottom->SetDirectory(
nullptr);
207 mHistoImpParZTop->SetDirectory(
nullptr);
208 mHistoImpParZBottom->SetDirectory(
nullptr);
209 mHistoImpParXyNegativeCharge->SetDirectory(
nullptr);
210 mHistoImpParXyPositiveCharge->SetDirectory(
nullptr);
211 mHistoImpParZNegativeCharge->SetDirectory(
nullptr);
212 mHistoImpParZPositiveCharge->SetDirectory(
nullptr);
213 mHistoImpParXyMeanPhi->SetDirectory(
nullptr);
214 mHistoImpParZMeanPhi->SetDirectory(
nullptr);
215 mHistoImpParXySigmaPhi->SetDirectory(
nullptr);
216 mHistoImpParZSigmaPhi->SetDirectory(
nullptr);
217 mHistoImpParXySigma->SetDirectory(
nullptr);
218 mHistoImpParZSigma->SetDirectory(
nullptr);
219 mHistoImpParXySigmaTop->SetDirectory(
nullptr);
220 mHistoImpParZSigmaTop->SetDirectory(
nullptr);
221 mHistoImpParXySigmaBottom->SetDirectory(
nullptr);
222 mHistoImpParZSigmaBottom->SetDirectory(
nullptr);
223 mHistoImpParXyMeanTop->SetDirectory(
nullptr);
224 mHistoImpParZMeanTop->SetDirectory(
nullptr);
225 mHistoImpParXyMeanBottom->SetDirectory(
nullptr);
226 mHistoImpParZMeanBottom->SetDirectory(
nullptr);
227 mHistoImpParXySigmaPositiveCharge->SetDirectory(
nullptr);
228 mHistoImpParZSigmaPositiveCharge->SetDirectory(
nullptr);
229 mHistoImpParXySigmaNegativeCharge->SetDirectory(
nullptr);
230 mHistoImpParZSigmaNegativeCharge->SetDirectory(
nullptr);
248 std::vector<o2::track::TrackParCov> vecPvContributorTrackParCov;
249 std::vector<int64_t> vec_globID_contr = {};
250 std::vector<o2::track::TrackParCov> trueVecPvContributorTrackParCov;
251 std::vector<int64_t> trueVec_globID_contr = {};
252 float impParRPhi, impParZ;
253 constexpr float toMicrometers = 10000.f;
261 int nv = vtxRefs.size() - 1;
262 for (
int iv = 0; iv < nv; iv++) {
263 LOGP(info,
"*** NEW VERTEX {}***", iv);
264 const auto& vtref = vtxRefs[iv];
266 int it = vtref.getFirstEntry(), itLim = it + vtref.getEntries();
269 for (; it < itLim; it++) {
270 auto tvid = trackIndex[it];
272 mHistoTrackType->Fill(tvid.getSource());
275 mHistoTrackTypeRej->Fill(tvid.getSource());
279 mHistoTrackTypeAcc->Fill(tvid.getSource());
288 if (
params.applyTrackCuts) {
295 vec_globID_contr.push_back(trackIndex[it]);
296 vecPvContributorTrackParCov.push_back(trc);
300 trueVec_globID_contr.push_back(itsTrackID);
301 trueVecPvContributorTrackParCov.push_back(trcITS);
305 LOGP(info,
"************ SIZE INDEX GLOBAL: {} ", vec_globID_contr.size());
306 LOGP(info,
"************ SIZE INDEX ITS: {} ", trueVec_globID_contr.size());
308 it = vtref.getFirstEntry();
312 if (!PVrefit_doable) {
313 LOG(info) <<
"Not enough tracks accepted for the refit --> Skipping vertex";
315 mHistoContributorsPV->Fill(vecPvContributorTrackParCov.size());
317 if (vecPvContributorTrackParCov.size() <
params.minNumberOfContributors) {
320 for (it = 0; it < vec_globID_contr.size(); it++) {
322 std::vector<bool> vec_useTrk_PVrefit(vec_globID_contr.size(),
true);
323 auto tvid = vec_globID_contr[it];
324 auto trackIterator = std::find(vec_globID_contr.begin(), vec_globID_contr.end(), vec_globID_contr[it]);
325 if (trackIterator != vec_globID_contr.end()) {
329 const int entry = std::distance(vec_globID_contr.begin(), trackIterator);
330 if (!
params.useAllTracks) {
331 vec_useTrk_PVrefit[
entry] =
false;
333 auto Pvtx_refitted = mVertexer.
refitVertex(vec_useTrk_PVrefit, pv);
335 bool recalc_imppar =
true;
336 if (Pvtx_refitted.getChi2() < 0) {
338 recalc_imppar =
false;
340 vec_useTrk_PVrefit[
entry] =
true;
342 const double DeltaX = pv.getX() - Pvtx_refitted.getX();
343 const double DeltaY = pv.getY() - Pvtx_refitted.getY();
344 const double DeltaZ = pv.getZ() - Pvtx_refitted.getZ();
345 mHistoXPvVsRefitted->Fill(pv.getX(), Pvtx_refitted.getX());
346 mHistoYPvVsRefitted->Fill(pv.getY(), Pvtx_refitted.getY());
347 mHistoZPvVsRefitted->Fill(pv.getZ(), Pvtx_refitted.getZ());
348 mHistoXDeltaPVrefit->Fill(DeltaX);
349 mHistoYDeltaPVrefit->Fill(DeltaY);
350 mHistoZDeltaPVrefit->Fill(DeltaZ);
353 PVbase_recalculated.setX(Pvtx_refitted.getX());
354 PVbase_recalculated.
setY(Pvtx_refitted.getY());
355 PVbase_recalculated.
setZ(Pvtx_refitted.getZ());
356 PVbase_recalculated.setCov(Pvtx_refitted.getSigmaX2(), Pvtx_refitted.getSigmaXY(), Pvtx_refitted.getSigmaY2(), Pvtx_refitted.getSigmaXZ(), Pvtx_refitted.getSigmaYZ(), Pvtx_refitted.getSigmaZ2());
358 auto trueID = trueVec_globID_contr[it];
360 auto pt = trc.getPt();
364 if (
o2::base::Propagator::Instance()->propagateToDCABxByBz({Pvtx_refitted.getX(), Pvtx_refitted.getY(), Pvtx_refitted.getZ()}, trcTmp, 2.f, matCorr, &dcaInfo)) {
365 impParRPhi = dcaInfo[0] * toMicrometers;
366 impParZ = dcaInfo[1] * toMicrometers;
367 mHistoImpParXy->Fill(pt, impParRPhi);
368 mHistoImpParZ->Fill(pt, impParZ);
369 double phi = trcTmp.getPhi();
370 mHistoImpParXyPhi->Fill(phi, impParRPhi);
371 mHistoImpParZPhi->Fill(phi, impParZ);
372 if (phi < TMath::Pi()) {
373 mHistoImpParXyTop->Fill(pt, impParRPhi);
374 mHistoImpParZTop->Fill(pt, impParZ);
376 if (phi > TMath::Pi()) {
377 mHistoImpParXyBottom->Fill(pt, impParRPhi);
378 mHistoImpParZBottom->Fill(pt, impParZ);
380 double sign = trcTmp.getSign();
382 mHistoImpParXyNegativeCharge->Fill(pt, impParRPhi);
383 mHistoImpParZNegativeCharge->Fill(pt, impParZ);
385 mHistoImpParXyPositiveCharge->Fill(pt, impParRPhi);
386 mHistoImpParZPositiveCharge->Fill(pt, impParZ);
393 vec_globID_contr.clear();
394 vecPvContributorTrackParCov.clear();
395 trueVec_globID_contr.clear();
396 trueVecPvContributorTrackParCov.clear();
400 mHistoImpParXy->FitSlicesY();
401 mHistoImpParZ->FitSlicesY();
402 mHistoImpParXyPhi->FitSlicesY();
403 mHistoImpParZPhi->FitSlicesY();
404 mHistoImpParXyTop->FitSlicesY();
405 mHistoImpParZTop->FitSlicesY();
406 mHistoImpParXyBottom->FitSlicesY();
407 mHistoImpParZBottom->FitSlicesY();
408 mHistoImpParXyNegativeCharge->FitSlicesY();
409 mHistoImpParZNegativeCharge->FitSlicesY();
410 mHistoImpParXyPositiveCharge->FitSlicesY();
411 mHistoImpParZPositiveCharge->FitSlicesY();
412 mHistoImpParXySigma = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXy_2"))->Clone()));
413 mHistoImpParZSigma = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZ_2"))->Clone()));
414 mHistoImpParXyMeanPhi = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyPhi_1"))->Clone()));
415 mHistoImpParZMeanPhi = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZPhi_1"))->Clone()));
416 mHistoImpParXySigmaPhi = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyPhi_2"))->Clone()));
417 mHistoImpParZSigmaPhi = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZPhi_2"))->Clone()));
418 mHistoImpParXyMeanTop = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyTop_1"))->Clone()));
419 mHistoImpParZMeanTop = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZTop_1"))->Clone()));
420 mHistoImpParXyMeanBottom = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyBottom_1"))->Clone()));
421 mHistoImpParZMeanBottom = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZBottom_1"))->Clone()));
422 mHistoImpParXySigmaTop = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyTop_2"))->Clone()));
423 mHistoImpParZSigmaTop = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZTop_2"))->Clone()));
424 mHistoImpParXySigmaBottom = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyBottom_2"))->Clone()));
425 mHistoImpParZSigmaBottom = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZBottom_2"))->Clone()));
426 mHistoImpParXySigmaNegativeCharge = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyNegativeCharge_2"))->Clone()));
427 mHistoImpParZSigmaNegativeCharge = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZNegativeCharge_2"))->Clone()));
428 mHistoImpParXySigmaPositiveCharge = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParXyPositiveCharge_2"))->Clone()));
429 mHistoImpParZSigmaPositiveCharge = std::unique_ptr<TH1F>(
static_cast<TH1F*
>((gROOT->FindObject(
"histoImpParZPositiveCharge_2"))->Clone()));