From 13cb13b2c09b40824695a91e4ab0520b7b5acfb0 Mon Sep 17 00:00:00 2001 From: Marvin Hemmer Date: Mon, 24 Nov 2025 11:13:11 +0100 Subject: [PATCH] [PWGEM,PhotonMeson] Fix filling of secondary mached tracks - Fix bug where secondary matched tracks where not filled in their proper columns --- PWGEM/PhotonMeson/DataModel/gammaTables.h | 18 ++++++ .../TableProducer/skimmerGammaCalo.cxx | 55 +++++++++++-------- 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/PWGEM/PhotonMeson/DataModel/gammaTables.h b/PWGEM/PhotonMeson/DataModel/gammaTables.h index d4652c4864e..a151e3762c6 100644 --- a/PWGEM/PhotonMeson/DataModel/gammaTables.h +++ b/PWGEM/PhotonMeson/DataModel/gammaTables.h @@ -597,6 +597,24 @@ DECLARE_SOA_TABLE_VERSIONED(SkimEMCClusters_001, "AOD", "SKIMEMCCLUSTER", 1, //! using SkimEMCClusters = SkimEMCClusters_001; using SkimEMCCluster = SkimEMCClusters_001::iterator; +// DECLARE_SOA_TABLE_VERSIONED(EmEmcClusters_000, "AOD", "EMEMCCLUSTER", 0, //! table of skimmed EMCal clusters +// o2::soa::Index<>, skimmedcluster::CollisionId, emccluster::Definition, skimmedcluster::E, skimmedcluster::Eta, skimmedcluster::Phi, +// skimmedcluster::M02, skimmedcluster::NCells, skimmedcluster::Time, emccluster::IsExotic, emccluster::Pt); + +// using EmEmcClusters = EmEmcClusters_000; +// using EmEmcCluster = EmEmcClusters_000::iterator; + +// namespace trackmatching +// { +// DECLARE_SOA_INDEX_COLUMN(EmEmcCluster, emEmcCluster); //! +// } // namespace trackmatching + +// DECLARE_SOA_TABLE(EmEmcMTracks, "AOD", "EMEMCMTRACK", //! +// o2::soa::Index<>, trackmatching::EmEmcClusterId, emccluster::DeltaPhi, emccluster::DeltaEta, emccluster::TrackP, emccluster::TrackPt); + +// DECLARE_SOA_TABLE(EmEmcMSTracks, "AOD", "EMEMCMSTRACK", //! +// o2::soa::Index<>, trackmatching::EmEmcClusterId, emccluster::DeltaPhiSec, emccluster::DeltaEtaSec, emccluster::TrackPSec, emccluster::TrackPtSec); + DECLARE_SOA_TABLE(EMCEMEventIds, "AOD", "EMCEMEVENTID", emccluster::EMEventId); // To be joined with SkimEMCClusters table at analysis level. // iterators using EMCEMEventId = EMCEMEventIds::iterator; diff --git a/PWGEM/PhotonMeson/TableProducer/skimmerGammaCalo.cxx b/PWGEM/PhotonMeson/TableProducer/skimmerGammaCalo.cxx index 5e66a1e6b0d..b7cefc4045e 100644 --- a/PWGEM/PhotonMeson/TableProducer/skimmerGammaCalo.cxx +++ b/PWGEM/PhotonMeson/TableProducer/skimmerGammaCalo.cxx @@ -122,6 +122,26 @@ struct SkimmerGammaCalo { template void runAnalysis(TCollision const& collision, TClusters const& emcclusters, TClusterCells const& emcclustercells, TMatchedTracks const& emcmatchedtracks, TTracks const& /*tracks*/, TMatchedSecondaries const& secondaries = nullptr) { + const size_t NMaxMatchedTracks = 10; + // Skimmed matched tracks table + std::vector vEta; + std::vector vPhi; + std::vector vP; + std::vector vPt; + vEta.reserve(NMaxMatchedTracks); + vPhi.reserve(NMaxMatchedTracks); + vP.reserve(NMaxMatchedTracks); + vPt.reserve(NMaxMatchedTracks); + + std::vector vEtaSecondaries = {}; + std::vector vPhiSecondaries = {}; + std::vector vPSecondaries = {}; + std::vector vPtSecondaries = {}; + vEtaSecondaries.reserve(NMaxMatchedTracks); + vPhiSecondaries.reserve(NMaxMatchedTracks); + vPSecondaries.reserve(NMaxMatchedTracks); + vPtSecondaries.reserve(NMaxMatchedTracks); + if (!collision.isSelected()) { return; } @@ -168,17 +188,7 @@ struct SkimmerGammaCalo { for (const auto& emcclustercell : groupedCells) { tableCellEMCReco(emcclustercell.emcalclusterId(), emcclustercell.caloId()); } - - // Skimmed matched tracks table - std::vector vEta; - std::vector vPhi; - std::vector vP; - std::vector vPt; auto groupedMTs = emcmatchedtracks.sliceBy(psMTperCluster, emccluster.globalIndex()); - vEta.reserve(groupedMTs.size()); - vPhi.reserve(groupedMTs.size()); - vP.reserve(groupedMTs.size()); - vPt.reserve(groupedMTs.size()); for (const auto& emcmatchedtrack : groupedMTs) { historeg.fill(HIST("hCaloTrackFilter"), 0); historeg.fill(HIST("MTEtaPhiBeforeTM"), emcmatchedtrack.deltaEta(), emcmatchedtrack.deltaPhi()); @@ -199,17 +209,8 @@ struct SkimmerGammaCalo { vPt.emplace_back(emcmatchedtrack.template track_as().pt()); } - std::vector vEtaSecondaries = {}; - std::vector vPhiSecondaries = {}; - std::vector vPSecondaries = {}; - std::vector vPtSecondaries = {}; - if constexpr (HasSecondaries) { auto groupedMatchedSecondaries = secondaries.sliceBy(psMSperCluster, emccluster.globalIndex()); - vEta.reserve(groupedMatchedSecondaries.size()); - vPhi.reserve(groupedMatchedSecondaries.size()); - vP.reserve(groupedMatchedSecondaries.size()); - vPt.reserve(groupedMatchedSecondaries.size()); for (const auto& emcMatchedSecondary : groupedMatchedSecondaries) { historeg.fill(HIST("hCaloSecondaryTrackFilter"), 0); historeg.fill(HIST("MSTEtaPhiBeforeTM"), emcMatchedSecondary.deltaEta(), emcMatchedSecondary.deltaPhi()); @@ -219,10 +220,10 @@ struct SkimmerGammaCalo { } historeg.fill(HIST("hCaloSecondaryTrackFilter"), 3); historeg.fill(HIST("MSTEtaPhiAfterTM"), emcMatchedSecondary.deltaEta(), emcMatchedSecondary.deltaPhi()); - vEta.emplace_back(emcMatchedSecondary.deltaEta()); - vPhi.emplace_back(emcMatchedSecondary.deltaPhi()); - vP.emplace_back(emcMatchedSecondary.template track_as().p()); - vPt.emplace_back(emcMatchedSecondary.template track_as().pt()); + vEtaSecondaries.emplace_back(emcMatchedSecondary.deltaEta()); + vPhiSecondaries.emplace_back(emcMatchedSecondary.deltaPhi()); + vPSecondaries.emplace_back(emcMatchedSecondary.template track_as().p()); + vPtSecondaries.emplace_back(emcMatchedSecondary.template track_as().pt()); } } @@ -233,6 +234,14 @@ struct SkimmerGammaCalo { tableGammaEMCReco(emccluster.collisionId(), emccluster.definition(), emccluster.energy(), emccluster.eta(), emccluster.phi(), emccluster.m02(), emccluster.nCells(), emccluster.time(), emccluster.isExotic(), vPhi, vEta, vP, vPt, vPhiSecondaries, vEtaSecondaries, vPSecondaries, vPtSecondaries); + vEta.clear(); + vPhi.clear(); + vP.clear(); + vPt.clear(); + vPhiSecondaries.clear(); + vEtaSecondaries.clear(); + vPSecondaries.clear(); + vPtSecondaries.clear(); } }