Skip to content

Commit b96f089

Browse files
committed
Switch to KFParticle for daughter DCA computation
1 parent 2edd75a commit b96f089

File tree

3 files changed

+29
-37
lines changed

3 files changed

+29
-37
lines changed

PWGLF/DataModel/Vtx3BodyTables.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ DECLARE_SOA_COLUMN(PzTrackDe, pzTrackDe, float); //! track2 pz at min
6262
DECLARE_SOA_COLUMN(DCAXYTrackPrToPV, dcaXYtrackPrToPv, float); //! DCAXY of proton to PV
6363
DECLARE_SOA_COLUMN(DCAXYTrackPiToPV, dcaXYtrackPiToPv, float); //! DCAXY of pion to PV
6464
DECLARE_SOA_COLUMN(DCAXYTrackDeToPV, dcaXYtrackDeToPv, float); //! DCAXY of deuteron to PV
65-
DECLARE_SOA_COLUMN(DCAZTrackPrToPV, dcaZtrackPrToPv, float); //! DCAZ of proton to PV
66-
DECLARE_SOA_COLUMN(DCAZTrackPiToPV, dcaZtrackPiToPv, float); //! DCAZ of pion to PV
67-
DECLARE_SOA_COLUMN(DCAZTrackDeToPV, dcaZtrackDeToPv, float); //! DCAZ of deuteron to PV
65+
DECLARE_SOA_COLUMN(DCATrackPrToPV, dcaTrackPrToPv, float); //! DCA of proton to PV
66+
DECLARE_SOA_COLUMN(DCATrackPiToPV, dcaTrackPiToPv, float); //! DCA of pion to PV
67+
DECLARE_SOA_COLUMN(DCATrackDeToPV, dcaTrackDeToPv, float); //! DCA of deuteron to PV
6868

6969
// DCAs to SV
7070
DECLARE_SOA_COLUMN(DCATrackPrToSV, dcaTrackPrToSv, float); //! DCA of proton to SV
@@ -209,7 +209,7 @@ DECLARE_SOA_TABLE(Vtx3BodyDatas, "AOD", "VTX3BODYDATA", //!
209209
vtx3body::PxTrackPi, vtx3body::PyTrackPi, vtx3body::PzTrackPi,
210210
vtx3body::PxTrackDe, vtx3body::PyTrackDe, vtx3body::PzTrackDe,
211211
vtx3body::DCAXYTrackPrToPV, vtx3body::DCAXYTrackPiToPV, vtx3body::DCAXYTrackDeToPV,
212-
vtx3body::DCAZTrackPrToPV, vtx3body::DCAZTrackPiToPV, vtx3body::DCAZTrackDeToPV,
212+
vtx3body::DCATrackPrToPV, vtx3body::DCATrackPiToPV, vtx3body::DCATrackDeToPV,
213213
vtx3body::DCATrackPrToSV, vtx3body::DCATrackPiToSV, vtx3body::DCATrackDeToSV,
214214
vtx3body::DCAVtxToDaughtersAv,
215215
vtx3body::CosPA, vtx3body::Ct,
@@ -258,7 +258,7 @@ DECLARE_SOA_TABLE(McVtx3BodyDatas, "AOD", "MC3BODYDATA", //!
258258
vtx3body::PxTrackPi, vtx3body::PyTrackPi, vtx3body::PzTrackPi,
259259
vtx3body::PxTrackDe, vtx3body::PyTrackDe, vtx3body::PzTrackDe,
260260
vtx3body::DCAXYTrackPrToPV, vtx3body::DCAXYTrackPiToPV, vtx3body::DCAXYTrackDeToPV,
261-
vtx3body::DCAZTrackPrToPV, vtx3body::DCAZTrackPiToPV, vtx3body::DCAZTrackDeToPV,
261+
vtx3body::DCATrackPrToPV, vtx3body::DCATrackPiToPV, vtx3body::DCATrackDeToPV,
262262
vtx3body::DCATrackPrToSV, vtx3body::DCATrackPiToSV, vtx3body::DCATrackDeToSV,
263263
vtx3body::DCAVtxToDaughtersAv,
264264
vtx3body::CosPA, vtx3body::Ct,

PWGLF/TableProducer/Nuspex/decay3bodybuilder.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ struct decay3bodyBuilder {
907907
-1., -1., -1., // momPion
908908
-1., -1., -1., // momDeuteron
909909
-1., -1., -1., // trackDCAxyToPV: 0 - proton, 1 - pion, 2 - deuteron
910-
-1., -1., -1., // trackDCAzToPV: 0 - proton, 1 - pion, 2 - deuteron
910+
-1., -1., -1., // trackDCAToPV: 0 - proton, 1 - pion, 2 - deuteron
911911
-1., -1., -1., // daughterDCAtoSV: 0 - proton, 1 - pion, 2 - deuteron
912912
-1., // daughterDCAtoSVaverage
913913
-1., -1., // cosPA, ctau
@@ -1066,7 +1066,7 @@ struct decay3bodyBuilder {
10661066
helper.decay3body.momPion[0], helper.decay3body.momPion[1], helper.decay3body.momPion[2],
10671067
helper.decay3body.momDeuteron[0], helper.decay3body.momDeuteron[1], helper.decay3body.momDeuteron[2],
10681068
helper.decay3body.trackDCAxyToPV[0], helper.decay3body.trackDCAxyToPV[1], helper.decay3body.trackDCAxyToPV[2], // 0 - proton, 1 - pion, 2 - deuteron
1069-
helper.decay3body.trackDCAzToPV[0], helper.decay3body.trackDCAzToPV[1], helper.decay3body.trackDCAzToPV[2], // 0 - proton, 1 - pion, 2 - deuteron
1069+
helper.decay3body.trackDCAToPV[0], helper.decay3body.trackDCAToPV[1], helper.decay3body.trackDCAToPV[2], // 0 - proton, 1 - pion, 2 - deuteron
10701070
helper.decay3body.daughterDCAtoSV[0], helper.decay3body.daughterDCAtoSV[1], helper.decay3body.daughterDCAtoSV[2], // 0 - proton, 1 - pion, 2 - deuteron
10711071
helper.decay3body.daughterDCAtoSVaverage,
10721072
helper.decay3body.cosPA, helper.decay3body.ctau,
@@ -1095,7 +1095,7 @@ struct decay3bodyBuilder {
10951095
helper.decay3body.momPion[0], helper.decay3body.momPion[1], helper.decay3body.momPion[2],
10961096
helper.decay3body.momDeuteron[0], helper.decay3body.momDeuteron[1], helper.decay3body.momDeuteron[2],
10971097
helper.decay3body.trackDCAxyToPV[0], helper.decay3body.trackDCAxyToPV[1], helper.decay3body.trackDCAxyToPV[2], // 0 - proton, 1 - pion, 2 - deuteron
1098-
helper.decay3body.trackDCAzToPV[0], helper.decay3body.trackDCAzToPV[1], helper.decay3body.trackDCAzToPV[2], // 0 - proton, 1 - pion, 2 - deuteron
1098+
helper.decay3body.trackDCAToPV[0], helper.decay3body.trackDCAToPV[1], helper.decay3body.trackDCAToPV[2], // 0 - proton, 1 - pion, 2 - deuteron
10991099
helper.decay3body.daughterDCAtoSV[0], helper.decay3body.daughterDCAtoSV[1], helper.decay3body.daughterDCAtoSV[2], // 0 - proton, 1 - pion, 2 - deuteron
11001100
helper.decay3body.daughterDCAtoSVaverage,
11011101
helper.decay3body.cosPA, helper.decay3body.ctau,

PWGLF/Utils/decay3bodyBuilderHelper.h

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ struct decay3bodyCandidate {
6161
std::array<float, 3> posPion = {0.0f, 0.0f, 0.0f};
6262
std::array<float, 3> posDeuteron = {0.0f, 0.0f, 0.0f};
6363
std::array<float, 3> trackDCAxyToPV = {0.0f, 0.0f, 0.0f}; // 0 - proton, 1 - pion, 2 - deuteron
64-
std::array<float, 3> trackDCAzToPV = {0.0f, 0.0f, 0.0f}; // 0 - proton, 1 - pion, 2 - deuteron
64+
std::array<float, 3> trackDCAToPV = {0.0f, 0.0f, 0.0f}; // 0 - proton, 1 - pion, 2 - deuteron
6565
std::array<float, 4> tpcNsigma = {0.0f, 0.0f, 0.0f, 0.0f}; // 0 - proton, 1 - pion, 2 - deuteron, 3 - bach with pion hyp
6666
double tofNsigmaDeuteron = 0.0f;
6767
std::array<float, 3> averageITSClSize = {0.0f, 0.0f, 0.0f}; // 0 - proton, 1 - pion, 2 - deuteron
@@ -281,44 +281,36 @@ class decay3bodyBuilderHelper
281281
} // end of selections
282282

283283
//_______________________________________________________________________
284-
// daughter track DCA to PV associated with decay3body
285-
o2::dataformats::VertexBase mPV;
286-
o2::dataformats::DCA mDcaInfoCov;
284+
// daughter track DCA to PV associated with decay3body --> computed with KFParticle in all cases
285+
float pvXY[2] = {pvX, pvY};
286+
float pv[3] = {pvX, pvY, pvZ};
287287
auto trackParCovProtonCopy = trackParCovProton;
288288
auto trackParCovPionCopy = trackParCovPion;
289289
auto trackParCovDeuteronCopy = trackParCovDeuteron;
290-
mPV.setPos({pvX, pvY, pvZ});
291-
mPV.setCov(collision.covXX(), collision.covXY(), collision.covYY(), collision.covXZ(), collision.covYZ(), collision.covZZ());
292-
293-
// proton track
294-
o2::base::Propagator::Instance()->propagateToDCABxByBz(mPV, trackParCovProtonCopy, 2.f, fitter3body.getMatCorrType(), &mDcaInfoCov);
295-
decay3body.trackDCAxyToPV[0] = mDcaInfoCov.getY();
296-
decay3body.trackDCAzToPV[0] = mDcaInfoCov.getZ();
297-
auto trackProtonDCAToPV = std::sqrt(decay3body.trackDCAxyToPV[0] * decay3body.trackDCAxyToPV[0] + decay3body.trackDCAzToPV[0] * decay3body.trackDCAzToPV[0]);
290+
KFParticle kfproton = createKFParticleFromTrackParCov(trackParCovProtonCopy, trackProton.sign(), constants::physics::MassProton);
291+
KFParticle kfpion = createKFParticleFromTrackParCov(trackParCovPionCopy, trackPion.sign(), constants::physics::MassPionCharged);
292+
KFParticle kfdeuteron = createKFParticleFromTrackParCov(trackParCovDeuteronCopy, trackDeuteron.sign(), constants::physics::MassDeuteron);
293+
294+
// proton DCA to PV
295+
decay3body.trackDCAxyToPV[0] = kfproton.GetDistanceFromVertexXY(pvXY);
296+
decay3body.trackDCAToPV[0] = kfproton.GetDistanceFromVertex(pv);
297+
// pion DCA to PV
298+
decay3body.trackDCAxyToPV[1] = kfpion.GetDistanceFromVertexXY(pvXY);
299+
decay3body.trackDCAToPV[1] = kfpion.GetDistanceFromVertex(pv);
300+
// deuteron DCA to PV
301+
decay3body.trackDCAxyToPV[2] = kfdeuteron.GetDistanceFromVertexXY(pvXY);
302+
decay3body.trackDCAToPV[2] = kfdeuteron.GetDistanceFromVertex(pv);
303+
// selection
298304
if (useSelections) {
299-
if (trackProtonDCAToPV < decay3bodyselections.minDCAProtonToPV) {
305+
if (decay3body.trackDCAToPV[0] < decay3bodyselections.minDCAProtonToPV) {
300306
decay3body = {};
301307
return false;
302308
}
303-
}
304-
// pion track
305-
o2::base::Propagator::Instance()->propagateToDCABxByBz(mPV, trackParCovPionCopy, 2.f, fitter3body.getMatCorrType(), &mDcaInfoCov);
306-
decay3body.trackDCAxyToPV[1] = mDcaInfoCov.getY();
307-
decay3body.trackDCAzToPV[1] = mDcaInfoCov.getZ();
308-
auto trackPionDCAToPV = std::sqrt(decay3body.trackDCAxyToPV[1] * decay3body.trackDCAxyToPV[1] + decay3body.trackDCAzToPV[1] * decay3body.trackDCAzToPV[1]);
309-
if (useSelections) {
310-
if (trackPionDCAToPV < decay3bodyselections.minDCAPionToPV) {
309+
if (decay3body.trackDCAToPV[1] < decay3bodyselections.minDCAPionToPV) {
311310
decay3body = {};
312311
return false;
313312
}
314-
}
315-
// deuteron track
316-
o2::base::Propagator::Instance()->propagateToDCABxByBz(mPV, trackParCovDeuteronCopy, 2.f, fitter3body.getMatCorrType(), &mDcaInfoCov);
317-
decay3body.trackDCAxyToPV[2] = mDcaInfoCov.getY();
318-
decay3body.trackDCAzToPV[2] = mDcaInfoCov.getZ();
319-
auto trackDeuteronDCAToPV = std::sqrt(decay3body.trackDCAxyToPV[2] * decay3body.trackDCAxyToPV[2] + decay3body.trackDCAzToPV[2] * decay3body.trackDCAzToPV[2]);
320-
if (useSelections) {
321-
if (trackDeuteronDCAToPV < decay3bodyselections.minDCADeuteronToPV) {
313+
if (decay3body.trackDCAToPV[2] < decay3bodyselections.minDCADeuteronToPV) {
322314
decay3body = {};
323315
return false;
324316
}

0 commit comments

Comments
 (0)