diff --git a/Common/TableProducer/trackPropagation.cxx b/Common/TableProducer/trackPropagation.cxx index 390828094fd..74422a9e941 100644 --- a/Common/TableProducer/trackPropagation.cxx +++ b/Common/TableProducer/trackPropagation.cxx @@ -110,9 +110,9 @@ struct TrackPropagation { } template - void FillTracksPar(TTrack& track, TTrackPar& trackPar) + void FillTracksPar(TTrack& track, aod::track::TrackTypeEnum trackType, TTrackPar& trackPar) { - tracksParPropagated(track.collisionId(), track.trackType(), trackPar.getX(), trackPar.getAlpha(), trackPar.getY(), trackPar.getZ(), trackPar.getSnp(), trackPar.getTgl(), trackPar.getQ2Pt()); + tracksParPropagated(track.collisionId(), trackType, trackPar.getX(), trackPar.getAlpha(), trackPar.getY(), trackPar.getZ(), trackPar.getSnp(), trackPar.getTgl(), trackPar.getQ2Pt()); tracksParExtensionPropagated(trackPar.getPt(), trackPar.getP(), trackPar.getEta(), trackPar.getPhi()); } @@ -128,17 +128,19 @@ struct TrackPropagation { for (auto& track : tracks) { dcaInfo[0] = 999; dcaInfo[1] = 999; + aod::track::TrackTypeEnum trackType = (aod::track::TrackTypeEnum)track.trackType(); auto trackPar = getTrackPar(track); // Only propagate tracks which have passed the innermost wall of the TPC (e.g. skipping loopers etc). Others fill unpropagated. - if (track.x() < minPropagationRadius) { + if (track.trackType() == aod::track::TrackIU && track.x() < minPropagationRadius) { if (track.has_collision()) { auto const& collision = track.collision(); o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackPar, 2.f, matCorr, &dcaInfo); } else { o2::base::Propagator::Instance()->propagateToDCABxByBz({mVtx->getX(), mVtx->getY(), mVtx->getZ()}, trackPar, 2.f, matCorr, &dcaInfo); } + trackType = aod::track::Track; } - FillTracksPar(track, trackPar); + FillTracksPar(track, trackType, trackPar); if (fillTracksDCA) { tracksDCA(dcaInfo[0], dcaInfo[1]); } @@ -159,8 +161,9 @@ struct TrackPropagation { for (auto& track : tracks) { dcaInfoCov.set(999, 999, 999, 999, 999); auto trackParCov = getTrackParCov(track); + aod::track::TrackTypeEnum trackType = (aod::track::TrackTypeEnum)track.trackType(); // Only propagate tracks which have passed the innermost wall of the TPC (e.g. skipping loopers etc). Others fill unpropagated. - if (track.x() < minPropagationRadius) { + if (track.trackType() == aod::track::TrackIU && track.x() < minPropagationRadius) { if (track.has_collision()) { auto const& collision = track.collision(); vtx.setPos({collision.posX(), collision.posY(), collision.posZ()}); @@ -171,8 +174,9 @@ struct TrackPropagation { vtx.setCov(mVtx->getSigmaX() * mVtx->getSigmaX(), 0.0f, mVtx->getSigmaY() * mVtx->getSigmaY(), 0.0f, 0.0f, mVtx->getSigmaZ() * mVtx->getSigmaZ()); o2::base::Propagator::Instance()->propagateToDCABxByBz(vtx, trackParCov, 2.f, matCorr, &dcaInfoCov); } + trackType = aod::track::Track; } - FillTracksPar(track, trackParCov); + FillTracksPar(track, trackType, trackParCov); if (fillTracksDCA) { tracksDCA(dcaInfoCov.getY(), dcaInfoCov.getZ()); }