Skip to content

Commit 9cf085d

Browse files
authored
[PWGEM/PhotonMeson] update photon data table and pcm qc (#10406)
1 parent 887a554 commit 9cf085d

File tree

8 files changed

+102
-72
lines changed

8 files changed

+102
-72
lines changed

PWGEM/PhotonMeson/DataModel/gammaTables.h

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,8 @@ DECLARE_SOA_COLUMN(MGamma, mGamma, float); //! inva
227227
DECLARE_SOA_COLUMN(DCAxyToPV, dcaXYtopv, float); //! DCAxy of V0 to PV
228228
DECLARE_SOA_COLUMN(DCAzToPV, dcaZtopv, float); //! DCAz of V0 to PV
229229
DECLARE_SOA_COLUMN(CosPA, cospa, float); //!
230+
DECLARE_SOA_COLUMN(CosPAXY, cospaXY, float); //!
231+
DECLARE_SOA_COLUMN(CosPARZ, cospaRZ, float); //!
230232
DECLARE_SOA_COLUMN(PCA, pca, float); //!
231233
DECLARE_SOA_COLUMN(Alpha, alpha, float); //!
232234
DECLARE_SOA_COLUMN(QtArm, qtarm, float); //!
@@ -245,39 +247,14 @@ DECLARE_SOA_DYNAMIC_COLUMN(Eta, eta, [](float px, float py, float pz) -> float {
245247
DECLARE_SOA_DYNAMIC_COLUMN(Phi, phi, [](float px, float py) -> float { return RecoDecay::phi(px, py); });
246248
DECLARE_SOA_DYNAMIC_COLUMN(P, p, [](float px, float py, float pz) -> float { return RecoDecay::sqrtSumOfSquares(px, py, pz); });
247249
DECLARE_SOA_DYNAMIC_COLUMN(V0Radius, v0radius, [](float vx, float vy) -> float { return RecoDecay::sqrtSumOfSquares(vx, vy); });
248-
DECLARE_SOA_DYNAMIC_COLUMN(CosPAXY, cosPAXY, [](float px, float py, float vx, float vy, float pvx, float pvy) -> float {
249-
float lx = vx - pvx; // flight length X
250-
float ly = vy - pvy; // flight length Y
251-
float cospaXY = RecoDecay::dotProd(std::array{lx, ly}, std::array{px, py}) / (RecoDecay::sqrtSumOfSquares(lx, ly) * RecoDecay::sqrtSumOfSquares(px, py));
252-
if (cospaXY < -1.) {
253-
return -1.;
254-
} else if (cospaXY > 1.) {
255-
return 1.;
256-
}
257-
return cospaXY;
258-
});
259-
DECLARE_SOA_DYNAMIC_COLUMN(CosPARZ, cosPARZ, [](float px, float py, float pz, float vx, float vy, float vz, float pvx, float pvy, float pvz) -> float {
260-
float lx = vx - pvx; // flight length X
261-
float ly = vy - pvy; // flight length Y
262-
float lz = vz - pvz; // flight length Z
263-
float lt = RecoDecay::sqrtSumOfSquares(lx, ly); // flight length R, i.e. transverse plane.
264-
float pt = RecoDecay::sqrtSumOfSquares(px, py);
265-
float cospaRZ = RecoDecay::dotProd(std::array{lt, lz}, std::array{pt, pz}) / (RecoDecay::sqrtSumOfSquares(lt, lz) * RecoDecay::sqrtSumOfSquares(pt, pz));
266-
if (cospaRZ < -1.) {
267-
return -1.;
268-
} else if (cospaRZ > 1.) {
269-
return 1.;
270-
}
271-
return cospaRZ;
272-
});
273250
} // namespace v0photonkf
274251
DECLARE_SOA_TABLE(V0PhotonsKF, "AOD", "V0PHOTONKF", //!
275252
o2::soa::Index<>, v0photonkf::CollisionId, v0photonkf::V0Id, v0photonkf::PosTrackId, v0photonkf::NegTrackId,
276253
v0photonkf::Vx, v0photonkf::Vy, v0photonkf::Vz,
277254
v0photonkf::Px, v0photonkf::Py, v0photonkf::Pz,
278255
v0photonkf::MGamma,
279256
v0photonkf::DCAxyToPV, v0photonkf::DCAzToPV,
280-
v0photonkf::CosPA, v0photonkf::PCA,
257+
v0photonkf::CosPA, v0photonkf::CosPAXY, v0photonkf::CosPARZ, v0photonkf::PCA,
281258
v0photonkf::Alpha, v0photonkf::QtArm,
282259
v0photonkf::ChiSquareNDF,
283260

@@ -287,9 +264,7 @@ DECLARE_SOA_TABLE(V0PhotonsKF, "AOD", "V0PHOTONKF", //!
287264
v0photonkf::Eta<v0photonkf::Px, v0photonkf::Py, v0photonkf::Pz>,
288265
v0photonkf::Phi<v0photonkf::Px, v0photonkf::Py>,
289266
v0photonkf::P<v0photonkf::Px, v0photonkf::Py, v0photonkf::Pz>,
290-
v0photonkf::V0Radius<v0photonkf::Vx, v0photonkf::Vy>,
291-
v0photonkf::CosPAXY<v0photonkf::Px, v0photonkf::Py, v0photonkf::Vx, v0photonkf::Vy>,
292-
v0photonkf::CosPARZ<v0photonkf::Px, v0photonkf::Py, v0photonkf::Pz, v0photonkf::Vx, v0photonkf::Vy, v0photonkf::Vz>);
267+
v0photonkf::V0Radius<v0photonkf::Vx, v0photonkf::Vy>);
293268
// iterators
294269
using V0PhotonKF = V0PhotonsKF::iterator;
295270

PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ struct PhotonConversionBuilder {
661661
gammaKF_DecayVtx.GetX(), gammaKF_DecayVtx.GetY(), gammaKF_DecayVtx.GetZ(),
662662
gammaKF_PV.GetPx(), gammaKF_PV.GetPy(), gammaKF_PV.GetPz(),
663663
v0_sv.M(), dca_xy_v0_to_pv, dca_z_v0_to_pv,
664-
cospa_kf, pca_kf, alpha, qt, chi2kf);
664+
cospa_kf, cospaXY_kf, cospaRZ_kf, pca_kf, alpha, qt, chi2kf);
665665

666666
v0photonskfcov(gammaKF_PV.GetCovariance(9), gammaKF_PV.GetCovariance(14), gammaKF_PV.GetCovariance(20), gammaKF_PV.GetCovariance(13), gammaKF_PV.GetCovariance(19), gammaKF_PV.GetCovariance(18));
667667

PWGEM/PhotonMeson/TableProducer/skimmerGammaConversion.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ struct skimmerGammaConversion {
313313
gammaKF_DecayVtx.GetX(), gammaKF_DecayVtx.GetY(), gammaKF_DecayVtx.GetZ(),
314314
gammaKF_DecayVtx.GetPx(), gammaKF_DecayVtx.GetPy(), gammaKF_DecayVtx.GetPz(),
315315
v0_sv.M(), dca_xy_v0_to_pv, dca_z_v0_to_pv,
316-
cospa_kf, pca_kf, alpha, qt, chi2kf);
316+
cospa_kf, 1.f, 1.f, pca_kf, alpha, qt, chi2kf);
317317

318318
fillTrackTable(pos, kfp_pos_DecayVtx);
319319
fillTrackTable(ele, kfp_ele_DecayVtx);

PWGEM/PhotonMeson/TableProducer/skimmerPrimaryElectronFromDalitzEE.cxx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,16 @@ struct skimmerPrimaryElectronFromDalitzEE {
7070
Configurable<float> maxchi2its{"maxchi2its", 6.0, "max. chi2/NclsITS"};
7171
Configurable<float> minpt{"minpt", 0.05, "min pt for track"};
7272
Configurable<float> maxeta{"maxeta", 2.0, "max eta acceptance"};
73-
Configurable<float> dca_xy_max{"dca_xy_max", 0.05, "max DCAxy in cm"};
74-
Configurable<float> dca_z_max{"dca_z_max", 0.05, "max DCAz in cm"};
73+
Configurable<float> dca_xy_max{"dca_xy_max", 1, "max DCAxy in cm"};
74+
Configurable<float> dca_z_max{"dca_z_max", 1, "max DCAz in cm"};
75+
Configurable<float> dca_3d_sigma_max{"dca_3d_sigma_max", 2, "max DCA 3D in sigma"};
7576
Configurable<float> minTPCNsigmaEl{"minTPCNsigmaEl", -2.5, "min. TPC n sigma for electron inclusion"};
7677
Configurable<float> maxTPCNsigmaEl{"maxTPCNsigmaEl", +3.5, "max. TPC n sigma for electron inclusion"};
7778
Configurable<float> maxTPCNsigmaPi{"maxTPCNsigmaPi", 0.0, "max. TPC n sigma for pion exclusion"};
7879
Configurable<float> minTPCNsigmaPi{"minTPCNsigmaPi", 0.0, "min. TPC n sigma for pion exclusion"};
7980
Configurable<float> minTOFNsigmaEl{"minTOFNsigmaEl", -3.5, "min. TOF n sigma for electron inclusion"};
8081
Configurable<float> maxTOFNsigmaEl{"maxTOFNsigmaEl", +3.5, "max. TOF n sigma for electron inclusion"};
81-
Configurable<float> maxMee{"maxMee", 0.03, "max. mee to store dalitz ee pairs"};
82+
Configurable<float> maxMee{"maxMee", 0.04, "max. mee to store dalitz ee pairs"};
8283
Configurable<bool> fillLS{"fillLS", true, "flag to fill LS histograms for QA"};
8384

8485
HistogramRegistry fRegistry{"output", {}, OutputObjHandlingPolicy::AnalysisObject, false, false};
@@ -227,6 +228,18 @@ struct skimmerPrimaryElectronFromDalitzEE {
227228
return false;
228229
}
229230

231+
float dca_3d = 999.f;
232+
float det = track.cYY() * track.cZZ() - track.cZY() * track.cZY();
233+
if (det < 0) {
234+
dca_3d = 999.f;
235+
} else {
236+
float chi2 = (track.dcaXY() * track.dcaXY() * track.cZZ() + track.dcaZ() * track.dcaZ() * track.cYY() - 2. * track.dcaXY() * track.dcaZ() * track.cZY()) / det;
237+
dca_3d = std::sqrt(std::fabs(chi2) / 2.);
238+
}
239+
if (dca_3d > dca_3d_sigma_max) {
240+
return false;
241+
}
242+
230243
if (track.pt() < minpt || std::fabs(track.eta()) > maxeta) {
231244
return false;
232245
}

PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,17 +187,29 @@ struct DalitzEEQC {
187187
fRegistry.add("Track/hQoverPt", "q/pT;q/p_{T} (GeV/c)^{-1}", kTH1F, {{400, -20, 20}}, false);
188188
fRegistry.add("Track/hEtaPhi", "#eta vs. #varphi;#varphi (rad.);#eta", kTH2F, {{180, 0, 2 * M_PI}, {40, -2.0f, 2.0f}}, false);
189189
fRegistry.add("Track/hDCAxyz", "DCA xy vs. z;DCA_{xy} (cm);DCA_{z} (cm)", kTH2F, {{200, -1.0f, 1.0f}, {200, -1.0f, 1.0f}}, false);
190+
fRegistry.add("Track/hDCAxyzSigma", "DCA xy vs. z;DCA_{xy} (#sigma);DCA_{z} (#sigma)", kTH2F, {{200, -10.0f, 10.0f}, {200, -10.0f, 10.0f}}, false);
191+
fRegistry.add("Track/hDCAxyRes_Pt", "DCA_{xy} resolution vs. pT;p_{T} (GeV/c);DCA_{xy} resolution (#mum)", kTH2F, {{200, 0, 10}, {500, 0., 500}}, false);
192+
fRegistry.add("Track/hDCAzRes_Pt", "DCA_{z} resolution vs. pT;p_{T} (GeV/c);DCA_{z} resolution (#mum)", kTH2F, {{200, 0, 10}, {500, 0., 500}}, false);
190193
fRegistry.add("Track/hNclsTPC", "number of TPC clusters", kTH1F, {{161, -0.5, 160.5}}, false);
191194
fRegistry.add("Track/hNcrTPC", "number of TPC crossed rows", kTH1F, {{161, -0.5, 160.5}}, false);
192195
fRegistry.add("Track/hChi2TPC", "chi2/number of TPC clusters", kTH1F, {{100, 0, 10}}, false);
193-
fRegistry.add("Track/hTPCdEdx", "TPC dE/dx;p_{in} (GeV/c);TPC dE/dx (a.u.)", kTH2F, {{1000, 0, 10}, {200, 0, 200}}, false);
194-
fRegistry.add("Track/hTPCNsigmaEl", "TPC n sigma el;p_{in} (GeV/c);n #sigma_{e}^{TPC}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
195-
fRegistry.add("Track/hTPCNsigmaPi", "TPC n sigma pi;p_{in} (GeV/c);n #sigma_{#pi}^{TPC}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
196196
fRegistry.add("Track/hTPCNcr2Nf", "TPC Ncr/Nfindable", kTH1F, {{200, 0, 2}}, false);
197197
fRegistry.add("Track/hTPCNcls2Nf", "TPC Ncls/Nfindable", kTH1F, {{200, 0, 2}}, false);
198+
fRegistry.add("Track/hTPCNclsShared", "TPC Ncls shared/Ncls;p_{T} (GeV/c);N_{cls}^{shared}/N_{cls} in TPC", kTH2F, {{1000, 0, 10}, {100, 0, 1}}, false);
199+
198200
fRegistry.add("Track/hNclsITS", "number of ITS clusters", kTH1F, {{8, -0.5, 7.5}}, false);
199201
fRegistry.add("Track/hChi2ITS", "chi2/number of ITS clusters", kTH1F, {{100, 0, 10}}, false);
200202
fRegistry.add("Track/hITSClusterMap", "ITS cluster map", kTH1F, {{128, -0.5, 127.5}}, false);
203+
fRegistry.add("Track/hMeanClusterSizeITS", "mean cluster size ITS;p_{pv} (GeV/c);<cluster size> on ITS #times cos(#lambda)", kTH2F, {{1000, 0, 10}, {150, 0, 15}}, false);
204+
205+
fRegistry.add("Track/hTPCdEdx", "TPC dE/dx;p_{in} (GeV/c);TPC dE/dx (a.u.)", kTH2F, {{1000, 0, 10}, {200, 0, 200}}, false);
206+
fRegistry.add("Track/hTPCNsigmaEl", "TPC n sigma el;p_{in} (GeV/c);n #sigma_{e}^{TPC}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
207+
fRegistry.add("Track/hTPCNsigmaPi", "TPC n sigma pi;p_{in} (GeV/c);n #sigma_{#pi}^{TPC}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
208+
209+
fRegistry.add("Track/hChi2TOF", "chi2 of TOF", kTH1F, {{100, 0, 10}}, false);
210+
fRegistry.add("Track/hTOFbeta", "TOF beta;p_{pv} (GeV/c);#beta", kTH2F, {{1000, 0, 10}, {240, 0, 1.2}}, false);
211+
fRegistry.add("Track/hTOFNsigmaEl", "TOF n sigma el;p_{pv} (GeV/c);n #sigma_{e}^{TOF}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
212+
fRegistry.add("Track/hTOFNsigmaPi", "TOF n sigma pi;p_{pv} (GeV/c);n #sigma_{#pi}^{TOF}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
201213
}
202214

203215
void DefineEMEventCut()
@@ -304,17 +316,26 @@ struct DalitzEEQC {
304316
fRegistry.fill(HIST("Track/hQoverPt"), track.sign() / track.pt());
305317
fRegistry.fill(HIST("Track/hEtaPhi"), track.phi(), track.eta());
306318
fRegistry.fill(HIST("Track/hDCAxyz"), track.dcaXY(), track.dcaZ());
319+
fRegistry.fill(HIST("Track/hDCAxyzSigma"), track.dcaXY() / sqrt(track.cYY()), track.dcaZ() / sqrt(track.cZZ()));
320+
fRegistry.fill(HIST("Track/hDCAxyRes_Pt"), track.pt(), sqrt(track.cYY()) * 1e+4); // convert cm to um
321+
fRegistry.fill(HIST("Track/hDCAzRes_Pt"), track.pt(), sqrt(track.cZZ()) * 1e+4); // convert cm to um
307322
fRegistry.fill(HIST("Track/hNclsITS"), track.itsNCls());
308323
fRegistry.fill(HIST("Track/hNclsTPC"), track.tpcNClsFound());
309324
fRegistry.fill(HIST("Track/hNcrTPC"), track.tpcNClsCrossedRows());
310325
fRegistry.fill(HIST("Track/hTPCNcr2Nf"), track.tpcCrossedRowsOverFindableCls());
311326
fRegistry.fill(HIST("Track/hTPCNcls2Nf"), track.tpcFoundOverFindableCls());
327+
fRegistry.fill(HIST("Track/hTPCNclsShared"), track.pt(), track.tpcFractionSharedCls());
312328
fRegistry.fill(HIST("Track/hChi2TPC"), track.tpcChi2NCl());
313329
fRegistry.fill(HIST("Track/hChi2ITS"), track.itsChi2NCl());
330+
fRegistry.fill(HIST("Track/hChi2TOF"), track.tofChi2());
314331
fRegistry.fill(HIST("Track/hITSClusterMap"), track.itsClusterMap());
315332
fRegistry.fill(HIST("Track/hTPCdEdx"), track.tpcInnerParam(), track.tpcSignal());
316333
fRegistry.fill(HIST("Track/hTPCNsigmaEl"), track.tpcInnerParam(), track.tpcNSigmaEl());
317334
fRegistry.fill(HIST("Track/hTPCNsigmaPi"), track.tpcInnerParam(), track.tpcNSigmaPi());
335+
fRegistry.fill(HIST("Track/hTOFNsigmaEl"), track.p(), track.tofNSigmaEl());
336+
fRegistry.fill(HIST("Track/hTOFNsigmaPi"), track.p(), track.tofNSigmaPi());
337+
fRegistry.fill(HIST("Track/hTOFbeta"), track.p(), track.beta());
338+
fRegistry.fill(HIST("Track/hMeanClusterSizeITS"), track.p(), track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())));
318339
}
319340

320341
Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);

PWGEM/PhotonMeson/Tasks/dalitzEEQCMC.cxx

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ struct DalitzEEQCMC {
6464
Configurable<float> cfgCentMin{"cfgCentMin", 0, "min. centrality"};
6565
Configurable<float> cfgCentMax{"cfgCentMax", 999.f, "max. centrality"};
6666
Configurable<float> maxY{"maxY", 0.9, "maximum rapidity for reconstructed particles"};
67+
Configurable<bool> cfgRequireTrueAssociation{"cfgRequireTrueAssociation", false, "flag to require true mc collision association"};
6768

6869
EMPhotonEventCut fEMEventCut;
6970
struct : ConfigurableGroup {
@@ -159,18 +160,29 @@ struct DalitzEEQCMC {
159160
fRegistry.add("Track/hQoverPt", "q/pT;q/p_{T} (GeV/c)^{-1}", kTH1F, {{400, -20, 20}}, false);
160161
fRegistry.add("Track/hEtaPhi", "#eta vs. #varphi;#varphi (rad.);#eta", kTH2F, {{180, 0, 2 * M_PI}, {40, -2.0f, 2.0f}}, false);
161162
fRegistry.add("Track/hDCAxyz", "DCA xy vs. z;DCA_{xy} (cm);DCA_{z} (cm)", kTH2F, {{200, -1.0f, 1.0f}, {200, -1.0f, 1.0f}}, false);
163+
fRegistry.add("Track/hDCAxyzSigma", "DCA xy vs. z;DCA_{xy} (#sigma);DCA_{z} (#sigma)", kTH2F, {{200, -10.0f, 10.0f}, {200, -10.0f, 10.0f}}, false);
164+
fRegistry.add("Track/hDCAxyRes_Pt", "DCA_{xy} resolution vs. pT;p_{T} (GeV/c);DCA_{xy} resolution (#mum)", kTH2F, {{200, 0, 10}, {500, 0., 500}}, false);
165+
fRegistry.add("Track/hDCAzRes_Pt", "DCA_{z} resolution vs. pT;p_{T} (GeV/c);DCA_{z} resolution (#mum)", kTH2F, {{200, 0, 10}, {500, 0., 500}}, false);
162166
fRegistry.add("Track/hNclsTPC", "number of TPC clusters", kTH1F, {{161, -0.5, 160.5}}, false);
163167
fRegistry.add("Track/hNcrTPC", "number of TPC crossed rows", kTH1F, {{161, -0.5, 160.5}}, false);
164168
fRegistry.add("Track/hChi2TPC", "chi2/number of TPC clusters", kTH1F, {{100, 0, 10}}, false);
169+
fRegistry.add("Track/hTPCNcr2Nf", "TPC Ncr/Nfindable", kTH1F, {{200, 0, 2}}, false);
170+
fRegistry.add("Track/hTPCNcls2Nf", "TPC Ncls/Nfindable", kTH1F, {{200, 0, 2}}, false);
171+
fRegistry.add("Track/hTPCNclsShared", "TPC Ncls shared/Ncls;p_{T} (GeV/c);N_{cls}^{shared}/N_{cls} in TPC", kTH2F, {{1000, 0, 10}, {100, 0, 1}}, false);
172+
165173
fRegistry.add("Track/hTPCdEdx", "TPC dE/dx;p_{in} (GeV/c);TPC dE/dx (a.u.)", kTH2F, {{1000, 0, 10}, {200, 0, 200}}, false);
166174
fRegistry.add("Track/hTPCNsigmaEl", "TPC n sigma el;p_{in} (GeV/c);n #sigma_{e}^{TPC}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
167175
fRegistry.add("Track/hTPCNsigmaPi", "TPC n sigma pi;p_{in} (GeV/c);n #sigma_{#pi}^{TPC}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
168-
fRegistry.add("Track/hTPCNcr2Nf", "TPC Ncr/Nfindable", kTH1F, {{200, 0, 2}}, false);
169-
fRegistry.add("Track/hTPCNcls2Nf", "TPC Ncls/Nfindable", kTH1F, {{200, 0, 2}}, false);
176+
170177
fRegistry.add("Track/hNclsITS", "number of ITS clusters", kTH1F, {{8, -0.5, 7.5}}, false);
171178
fRegistry.add("Track/hChi2ITS", "chi2/number of ITS clusters", kTH1F, {{100, 0, 10}}, false);
172179
fRegistry.add("Track/hITSClusterMap", "ITS cluster map", kTH1F, {{128, -0.5, 127.5}}, false);
173180
fRegistry.add("Track/hMeanClusterSizeITS", "mean cluster size ITS;<cluster size> on ITS #times cos(#lambda)", kTH1F, {{32, 0, 16}}, false);
181+
182+
fRegistry.add("Track/hChi2TOF", "chi2 of TOF", kTH1F, {{100, 0, 10}}, false);
183+
fRegistry.add("Track/hTOFbeta", "TOF beta;p_{pv} (GeV/c);#beta", kTH2F, {{1000, 0, 10}, {240, 0, 1.2}}, false);
184+
fRegistry.add("Track/hTOFNsigmaEl", "TOF n sigma el;p_{pv} (GeV/c);n #sigma_{e}^{TOF}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
185+
fRegistry.add("Track/hTOFNsigmaPi", "TOF n sigma pi;p_{pv} (GeV/c);n #sigma_{#pi}^{TOF}", kTH2F, {{1000, 0, 10}, {100, -5, +5}}, false);
174186
}
175187

176188
void init(InitContext&)
@@ -300,7 +312,7 @@ struct DalitzEEQCMC {
300312
}
301313

302314
template <typename TCollision, typename TTrack1, typename TTrack2, typename TMCParticles>
303-
bool fillTruePairInfo(TCollision const&, TTrack1 const& t1, TTrack2 const& t2, TMCParticles const& mcparticles)
315+
bool fillTruePairInfo(TCollision const& collision, TTrack1 const& t1, TTrack2 const& t2, TMCParticles const& mcparticles)
304316
{
305317
if (!fDileptonCut.IsSelectedTrack(t1) || !fDileptonCut.IsSelectedTrack(t2)) {
306318
return false;
@@ -314,8 +326,7 @@ struct DalitzEEQCMC {
314326
auto t2mc = t2.template emmcparticle_as<TMCParticles>();
315327

316328
int mother_id = FindLF(t1mc, t2mc, mcparticles);
317-
int hfee_type = IsHF(t1mc, t2mc, mcparticles);
318-
if (mother_id < 0 && hfee_type < 0) {
329+
if (mother_id < 0) {
319330
return false;
320331
}
321332
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);
@@ -328,6 +339,10 @@ struct DalitzEEQCMC {
328339

329340
if (mother_id > -1 && t1mc.pdgCode() * t2mc.pdgCode() < 0) {
330341
auto mcmother = mcparticles.iteratorAt(mother_id);
342+
if (cfgRequireTrueAssociation && (mcmother.emmceventId() != collision.emmceventId())) {
343+
return false;
344+
}
345+
331346
if (mcmother.isPhysicalPrimary() || mcmother.producedByGenerator()) {
332347
if ((t1mc.isPhysicalPrimary() || t1mc.producedByGenerator()) && (t2mc.isPhysicalPrimary() || t2mc.producedByGenerator())) {
333348
switch (abs(mcmother.pdgCode())) {
@@ -405,18 +420,25 @@ struct DalitzEEQCMC {
405420
fRegistry.fill(HIST("Track/hQoverPt"), track.sign() / track.pt());
406421
fRegistry.fill(HIST("Track/hEtaPhi"), track.phi(), track.eta());
407422
fRegistry.fill(HIST("Track/hDCAxyz"), track.dcaXY(), track.dcaZ());
423+
fRegistry.fill(HIST("Track/hDCAxyzSigma"), track.dcaXY() / sqrt(track.cYY()), track.dcaZ() / sqrt(track.cZZ()));
424+
fRegistry.fill(HIST("Track/hDCAxyRes_Pt"), track.pt(), sqrt(track.cYY()) * 1e+4); // convert cm to um
425+
fRegistry.fill(HIST("Track/hDCAzRes_Pt"), track.pt(), sqrt(track.cZZ()) * 1e+4); // convert cm to um
408426
fRegistry.fill(HIST("Track/hNclsITS"), track.itsNCls());
409427
fRegistry.fill(HIST("Track/hNclsTPC"), track.tpcNClsFound());
410428
fRegistry.fill(HIST("Track/hNcrTPC"), track.tpcNClsCrossedRows());
411429
fRegistry.fill(HIST("Track/hTPCNcr2Nf"), track.tpcCrossedRowsOverFindableCls());
412430
fRegistry.fill(HIST("Track/hTPCNcls2Nf"), track.tpcFoundOverFindableCls());
431+
fRegistry.fill(HIST("Track/hTPCNclsShared"), track.pt(), track.tpcFractionSharedCls());
413432
fRegistry.fill(HIST("Track/hChi2TPC"), track.tpcChi2NCl());
414433
fRegistry.fill(HIST("Track/hChi2ITS"), track.itsChi2NCl());
415434
fRegistry.fill(HIST("Track/hITSClusterMap"), track.itsClusterMap());
416-
fRegistry.fill(HIST("Track/hMeanClusterSizeITS"), track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())));
435+
fRegistry.fill(HIST("Track/hMeanClusterSizeITS"), track.p(), track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())));
417436
fRegistry.fill(HIST("Track/hTPCdEdx"), track.tpcInnerParam(), track.tpcSignal());
418437
fRegistry.fill(HIST("Track/hTPCNsigmaEl"), track.tpcInnerParam(), track.tpcNSigmaEl());
419438
fRegistry.fill(HIST("Track/hTPCNsigmaPi"), track.tpcInnerParam(), track.tpcNSigmaPi());
439+
fRegistry.fill(HIST("Track/hTOFNsigmaEl"), track.p(), track.tofNSigmaEl());
440+
fRegistry.fill(HIST("Track/hTOFNsigmaPi"), track.p(), track.tofNSigmaPi());
441+
fRegistry.fill(HIST("Track/hTOFbeta"), track.p(), track.beta());
420442
}
421443

422444
std::vector<int> used_trackIds;
@@ -509,8 +531,7 @@ struct DalitzEEQCMC {
509531
}
510532

511533
int mother_id = FindLF(t1, t2, mcparticles);
512-
int hfee_type = IsHF(t1, t2, mcparticles);
513-
if (mother_id < 0 && hfee_type < 0) {
534+
if (mother_id < 0) {
514535
continue;
515536
}
516537
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), o2::constants::physics::MassElectron);

0 commit comments

Comments
 (0)