Skip to content

Commit 202080d

Browse files
committed
Fix tree creator for Omega_c using ST
- add charge of Omega and bachelor - fix track association - streamlining - update histograms
1 parent fa94b83 commit 202080d

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

PWGHF/TableProducer/treeCreatorOmegacSt.cxx

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ DECLARE_SOA_COLUMN(NSigmaTpcKa, nSigmaTpcKa, float);
5656
DECLARE_SOA_COLUMN(NSigmaTofKa, nSigmaTofKa, float);
5757
DECLARE_SOA_COLUMN(NSigmaTpcPi, nSigmaTpcPi, float);
5858
DECLARE_SOA_COLUMN(NSigmaTofPi, nSigmaTofPi, float);
59-
DECLARE_SOA_COLUMN(PxOmega, pxOmega, float); // TODO: what about sign?
59+
DECLARE_SOA_COLUMN(PxOmega, pxOmega, float);
6060
DECLARE_SOA_COLUMN(PyOmega, pyOmega, float);
6161
DECLARE_SOA_COLUMN(PzOmega, pzOmega, float);
62-
DECLARE_SOA_COLUMN(PxPion, pxPion, float); // TODO: what about sign?
62+
DECLARE_SOA_COLUMN(ChargeOmega, chargeOmega, bool);
63+
DECLARE_SOA_COLUMN(PxPion, pxPion, float);
6364
DECLARE_SOA_COLUMN(PyPion, pyPion, float);
6465
DECLARE_SOA_COLUMN(PzPion, pzPion, float);
66+
DECLARE_SOA_COLUMN(ChargePion, chargePion, bool);
6567
DECLARE_SOA_COLUMN(CpaOmegac, cpaOmegac, float);
6668
DECLARE_SOA_COLUMN(CpaOmega, cpaOmega, float);
6769
DECLARE_SOA_COLUMN(DcaXYOmega, dcaXYOmega, float);
@@ -84,12 +86,14 @@ DECLARE_SOA_COLUMN(DecayLengthXYOmega, decayLengthXYOmega, float);
8486

8587
namespace st_omegac_gen
8688
{
87-
DECLARE_SOA_COLUMN(PxOmegac, pxOmegac, float); // TODO: what about sign?
89+
DECLARE_SOA_COLUMN(PxOmegac, pxOmegac, float);
8890
DECLARE_SOA_COLUMN(PyOmegac, pyOmegac, float);
8991
DECLARE_SOA_COLUMN(PzOmegac, pzOmegac, float);
90-
DECLARE_SOA_COLUMN(PxOmega, pxOmega, float); // TODO: what about sign?
92+
DECLARE_SOA_COLUMN(ChargeOmegac, chargeOmegac, bool);
93+
DECLARE_SOA_COLUMN(PxOmega, pxOmega, float);
9194
DECLARE_SOA_COLUMN(PyOmega, pyOmega, float);
9295
DECLARE_SOA_COLUMN(PzOmega, pzOmega, float);
96+
DECLARE_SOA_COLUMN(ChargeOmega, chargeOmega, bool);
9397
DECLARE_SOA_COLUMN(DecayLengthOmegac, decayLengthOmegac, float);
9498
DECLARE_SOA_COLUMN(DecayLengthXYOmegac, decayLengthXYOmegac, float);
9599
DECLARE_SOA_COLUMN(DecayLengthOmega, decayLengthOmega, float);
@@ -110,9 +114,11 @@ DECLARE_SOA_TABLE(HfOmegacSt, "AOD", "HFOMEGACST",
110114
st_omegac::PxOmega,
111115
st_omegac::PyOmega,
112116
st_omegac::PzOmega,
117+
st_omegac::ChargeOmega,
113118
st_omegac::PxPion,
114119
st_omegac::PyPion,
115120
st_omegac::PzPion,
121+
st_omegac::ChargePion,
116122
st_omegac::CpaOmegac,
117123
st_omegac::CpaOmega,
118124
st_omegac::DcaXYOmega,
@@ -136,9 +142,11 @@ DECLARE_SOA_TABLE(HfOmegaStGen, "AOD", "HFOMEGACSTGEN",
136142
st_omegac_gen::PxOmegac,
137143
st_omegac_gen::PyOmegac,
138144
st_omegac_gen::PzOmegac,
145+
st_omegac_gen::ChargeOmegac,
139146
st_omegac_gen::PxOmega,
140147
st_omegac_gen::PyOmega,
141148
st_omegac_gen::PzOmega,
149+
st_omegac_gen::ChargeOmega,
142150
st_omegac_gen::DecayLengthOmegac,
143151
st_omegac_gen::DecayLengthXYOmegac,
144152
st_omegac_gen::DecayLengthOmega,
@@ -202,7 +210,7 @@ struct HfTreeCreatorOmegacSt {
202210
{"hMassOmegacVsPt", "inv. mass #Omega + #pi;inv. mass (GeV/#it{c}^{2});p_{T} (GeV/#it{c})", {HistType::kTH2D, {{400, 1.5, 3.}, {10, 0., 10.}}}},
203211
{"hMassOmegacId", "inv. mass #Omega + #pi (MC ID);inv. mass (GeV/#it{c}^{2})", {HistType::kTH1D, {{400, 1.5, 3.}}}},
204212
{"hMassOmegacGen", "inv. mass #Omega + #pi (from MC);inv. mass (GeV/#it{c}^{2})", {HistType::kTH1D, {{400, 1.5, 3.}}}},
205-
{"hMassVsPt", "DCA;Mass (GeV/#it{c}^2);p_{T} (GeV/#it{c})", {HistType::kTH2D, {{200, 0., 10.}, {200, 0., 10.}}}},
213+
{"hPtVsMassOmega", "#Omega mass;p_{T} (GeV/#it{c});m (GeV/#it{c}^3)", {HistType::kTH2D, {{200, 0., 10.}, {1000, 1., 3.}}}},
206214
{"hDeltaPtVsPt", "Delta pt;p_{T} (GeV/#it{c});#Delta p_{T} / p_{T}", {HistType::kTH2D, {{200, 0., 10.}, {200, -1., 1.}}}},
207215
}};
208216

@@ -297,31 +305,28 @@ struct HfTreeCreatorOmegacSt {
297305
continue;
298306
}
299307

300-
const auto& v0TrackPr = trackCasc.sign() > 0 ? v0TrackPos : v0TrackNeg;
301-
const auto& v0TrackPi = trackCasc.sign() > 0 ? v0TrackNeg : v0TrackPos;
308+
const auto& v0TrackPr = trackCasc.sign() < 0 ? v0TrackPos : v0TrackNeg;
309+
const auto& v0TrackPi = trackCasc.sign() < 0 ? v0TrackNeg : v0TrackPos;
302310

303311
// track propagation
304-
o2::track::TrackParCov trackParCovV0;
305-
o2::track::TrackPar trackParV0;
306-
o2::track::TrackPar trackParBachelor;
307-
std::array<std::array<float, 3>, 2> momentaOmegaDaughters;
308312
if (!df2.process(getTrackParCov(v0TrackNeg), getTrackParCov(v0TrackPos))) {
309313
continue;
310314
}
311-
trackParCovV0 = df2.createParentTrackParCov(0);
315+
o2::track::TrackParCov trackParCovV0 = df2.createParentTrackParCov(0);
312316
if (!df2.process(trackParCovV0, getTrackParCov(bachelor))) {
313317
continue;
314318
}
315319
const auto& secondaryVertex = df2.getPCACandidate();
316320
const auto decayLengthOmega = RecoDecay::distance(secondaryVertex, primaryVertexPos);
317321
const auto decayLengthOmegaXY = RecoDecay::distanceXY(secondaryVertex, primaryVertexPos);
318-
trackParV0 = df2.getTrackParamAtPCA(0);
319-
trackParBachelor = df2.getTrackParamAtPCA(1);
322+
o2::track::TrackPar trackParV0 = df2.getTrackParamAtPCA(0);
323+
o2::track::TrackPar trackParBachelor = df2.getTrackParamAtPCA(1);
324+
std::array<std::array<float, 3>, 2> momentaOmegaDaughters;
320325
trackParV0.getPxPyPzGlo(momentaOmegaDaughters[0]);
321326
trackParBachelor.getPxPyPzGlo(momentaOmegaDaughters[1]);
322-
std::array<float, 3> pVec;
323-
df2.createParentTrackParCov().getPxPyPzGlo(pVec);
324-
const auto cpaOmega = RecoDecay::cpa(primaryVertexPos, df2.getPCACandidate(), pVec);
327+
std::array<float, 3> pOmega;
328+
df2.createParentTrackParCov().getPxPyPzGlo(pOmega);
329+
const auto cpaOmega = RecoDecay::cpa(primaryVertexPos, df2.getPCACandidate(), pOmega);
325330

326331
std::array<double, 2> masses = {o2::analysis::pdg::MassLambda0, o2::analysis::pdg::MassKPlus};
327332
const auto massOmega = RecoDecay::m(momentaOmegaDaughters, masses);
@@ -333,7 +338,7 @@ struct HfTreeCreatorOmegacSt {
333338
registry.fill(HIST("hDcaZVsPt"), trackParCovTrk.getPt(), impactParameterTrk.getZ());
334339
registry.fill(HIST("hDcaVsPt"), impactParameterTrk.getY(), trackCasc.pt());
335340
registry.fill(HIST("hDcaVsR"), impactParameterTrk.getY(), RecoDecay::sqrtSumOfSquares(trackCasc.x(), trackCasc.y()));
336-
registry.fill(HIST("hMassVsPt"), massOmega, trackCasc.pt());
341+
registry.fill(HIST("hPtVsMassOmega"), trackCasc.pt(), massOmega);
337342

338343
if ((std::abs(massOmega - o2::analysis::pdg::MassOmegaMinus) < massWindowTrackedOmega)) {
339344
LOGF(debug, "found candidate in mass range");
@@ -363,9 +368,6 @@ struct HfTreeCreatorOmegacSt {
363368
for (const auto& track : tracks) {
364369
if (std::abs(track.tpcNSigmaPi()) < maxNSigmaPion) {
365370
LOGF(debug, " .. combining with pion candidate %d", track.globalIndex());
366-
if (trackCasc.sign() == track.sign()) {
367-
continue;
368-
}
369371
auto trackParCovPion = getTrackParCov(track);
370372
o2::dataformats::DCA impactParameterPion;
371373
if (bzOnly) {
@@ -385,9 +387,9 @@ struct HfTreeCreatorOmegacSt {
385387
const auto decayLength = RecoDecay::distance(secondaryVertex, primaryVertexPos);
386388
const auto decayLengthXY = RecoDecay::distanceXY(secondaryVertex, primaryVertexPos);
387389
const auto chi2TopOmegac = df2.getChi2AtPCACandidate();
388-
std::array<float, 3> pVec;
389-
df2.createParentTrackParCov().getPxPyPzGlo(pVec);
390-
const auto cpaOmegaC = RecoDecay::cpa(primaryVertexPos, df2.getPCACandidate(), pVec);
390+
std::array<float, 3> pOmegac;
391+
df2.createParentTrackParCov().getPxPyPzGlo(pOmegac);
392+
const auto cpaOmegaC = RecoDecay::cpa(primaryVertexPos, df2.getPCACandidate(), pOmegac);
391393

392394
if (std::abs(massOmegaC - o2::analysis::pdg::MassOmegaC0) < massWindowOmegaC) {
393395
registry.fill(HIST("hDecayLength"), decayLength * 1e4);
@@ -405,9 +407,11 @@ struct HfTreeCreatorOmegacSt {
405407
momenta[0][0], // omega momentum
406408
momenta[0][1],
407409
momenta[0][2],
410+
trackCasc.sign(),
408411
momenta[1][0], // pion momentum
409412
momenta[1][1],
410413
momenta[1][2],
414+
track.sign(),
411415
cpaOmegaC,
412416
cpaOmega,
413417
impactParameterTrk.getY(),

0 commit comments

Comments
 (0)