diff --git a/PWGEM/Dilepton/Tasks/taggingHFE.cxx b/PWGEM/Dilepton/Tasks/taggingHFE.cxx index 7bb44ccc588..a4a38aebf1d 100644 --- a/PWGEM/Dilepton/Tasks/taggingHFE.cxx +++ b/PWGEM/Dilepton/Tasks/taggingHFE.cxx @@ -830,8 +830,6 @@ struct taggingHFE { template void runPairing(TBCs const&, TCollisions const& collisions, TTracks const& tracks, TTrackAssoc const& trackIndices, TV0s const& v0s, TCascades const& cascades, TMCCollisions const&, TMCParticles const& mcParticles) { - used_electronIds.reserve(tracks.size()); - for (const auto& collision : collisions) { auto bc = collision.template foundBC_as(); initCCDB(bc); @@ -906,11 +904,32 @@ struct taggingHFE { } } + } // end of track loop for electron selection + + for (const auto& trackId : trackIdsThisCollision) { + auto track = trackId.template track_as(); + if (!track.hasITS() || !track.hasTPC()) { + continue; + } + + if (!track.has_mcParticle()) { + continue; + } + auto mcParticle = track.template mcParticle_as(); + if (!mcParticle.has_mothers()) { + continue; + } + + auto trackParCov = getTrackParCov(track); mDcaInfoCov.set(999, 999, 999, 999, 999); trackParCov.setPID(track.pidForTracking()); o2::base::Propagator::Instance()->propagateToDCABxByBz(mVtx, trackParCov, 2.f, matCorr, &mDcaInfoCov); - dcaXY = mDcaInfoCov.getY(); - dcaZ = mDcaInfoCov.getZ(); + float dcaXY = mDcaInfoCov.getY(); + float dcaZ = mDcaInfoCov.getZ(); + + if (std::find(electronIds.begin(), electronIds.end(), track.globalIndex()) != electronIds.end() || std::find(positronIds.begin(), positronIds.end(), track.globalIndex()) != positronIds.end()) { + continue; + } if (isSelectedHadron(track, trackParCov, dcaXY, dcaZ)) { // electrons can be included in hadron sample. fRegistry.fill(HIST("Hadron/hs"), trackParCov.getPt(), trackParCov.getEta(), RecoDecay::constrainAngle(trackParCov.getPhi(), 0, 1U)); @@ -923,7 +942,7 @@ struct taggingHFE { } } - } // end of track loop for electron selection + } // end of track loop for hadron selection auto v0s_per_coll = v0s.sliceBy(perCol_v0, collision.globalIndex()); k0Ids.reserve(v0s_per_coll.size()); @@ -1675,10 +1694,8 @@ struct taggingHFE { omegaPlusIds.shrink_to_fit(); omegaMinusIds.clear(); omegaMinusIds.shrink_to_fit(); - } // end of collision loop - used_electronIds.clear(); - used_electronIds.shrink_to_fit(); + } // end of collision loop } template @@ -1810,8 +1827,6 @@ struct taggingHFE { std::vector omegaPlusIds; std::vector omegaMinusIds; - std::vector> used_electronIds; // pair of hTypeId and electronId - void processMC(FilteredMyCollisionsWithMCLabel const& collisions, aod::BCsWithTimestamps const& bcs, MyTracksWithMCLabel const& tracks, aod::TrackAssoc const& trackIndices, filteredV0s const& v0s, filteredMyCascades const& cascades, aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles) { runPairing(bcs, collisions, tracks, trackIndices, v0s, cascades, mcCollisions, mcParticles);