From 9d4e41f66c52fdb9fd4bed69708882530f198a11 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Thu, 4 Jun 2026 16:02:39 +0200 Subject: [PATCH 01/17] add acceptance cut for pbpb --- PWGDQ/Core/CutsLibrary.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index f999af41b0e..918e9e96348 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -4676,6 +4676,15 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (!nameStr.compare("acceptance_PbPb5360_y08")) { + cut->AddCut(VarManager::kMCY, -0.8, 0.8); + cut->AddCut(VarManager::kMCP1, 1.0, 1000.0); + cut->AddCut(VarManager::kMCP2, 1.0, 1000.0); + cut->AddCut(VarManager::kMCEta1, -0.8, 0.8); + cut->AddCut(VarManager::kMCEta2, -0.8, 0.8); + return cut; + } + // --------------------------------------------------- // MC generated particle acceptance cuts From 5b9f1720cb55347fe7cc2b4b57b8d48ec756c9f8 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Mon, 8 Jun 2026 16:15:35 +0200 Subject: [PATCH 02/17] new process for tree production --- PWGDQ/Core/CutsLibrary.cxx | 11 +++++++++++ PWGDQ/Tasks/tableReader_withAssoc.cxx | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 918e9e96348..bcc8a1ba788 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -4113,6 +4113,17 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (!nameStr.compare("eventStandardSel8PbPbQualityCent90")) { + cut->AddCut(VarManager::kVtxZ, -10.0, 10.0); + cut->AddCut(VarManager::kIsSel8, 0.5, 1.5); + cut->AddCut(VarManager::kIsNoTFBorder, 0.5, 1.5); + cut->AddCut(VarManager::kIsNoITSROFBorder, 0.5, 1.5); + cut->AddCut(VarManager::kIsNoSameBunch, 0.5, 1.5); + cut->AddCut(VarManager::kIsGoodZvtxFT0vsPV, 0.5, 1.5); + cut->AddCut(VarManager::kCentFT0C, 0.0, 90.0); + return cut; + } + if (!nameStr.compare("eventStandardSel8PbPbQualityGoodITSLayersAll")) { // kIsSel8 = kIsTriggerTVX && kNoITSROFrameBorder && kNoTimeFrameBorder cut->AddCut(VarManager::kVtxZ, -10.0, 10.0); cut->AddCut(VarManager::kIsSel8, 0.5, 1.5); diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 0b916cef236..d7e9b11b8f6 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1399,7 +1399,7 @@ struct AnalysisSameEventPairing { void init(o2::framework::InitContext& context) { - fEnableBarrelHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processBarrelOnlySkimmed") || context.mOptions.get("processBarrelOnlyWithCollSkimmed") || context.mOptions.get("processBarrelOnlySkimmedNoCov") || context.mOptions.get("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmedNoCov"); + fEnableBarrelHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processBarrelOnlySkimmed") || context.mOptions.get("processBarrelOnlyWithCollSkimmed") || context.mOptions.get("processBarrelOnlySkimmedNoCov") || context.mOptions.get("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmedNoCov") || context.mOptions.get("processBarrelOnlyWithCollQvectorCentrSkimmedNoCov"); fEnableBarrelMixingHistos = context.mOptions.get("processMixingAllSkimmed") || context.mOptions.get("processMixingBarrelSkimmed") || context.mOptions.get("processMixingBarrelSkimmedFlow") || context.mOptions.get("processMixingBarrelWithQvectorCentrSkimmedNoCov"); fEnableBarrelMixingHistos |= fConfigRunMixingAcrossTFs; fEnableMuonHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processMuonOnlySkimmed") || context.mOptions.get("processMuonOnlySkimmedMultExtra") || context.mOptions.get("processMuonOnlySkimmedFlow"); @@ -2762,6 +2762,13 @@ struct AnalysisSameEventPairing { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } + void processBarrelOnlyWithCollQvectorCentrSkimmedNoCov(MyEventsQvectorCentrSelected const& events, + soa::Join const& barrelAssocs, + MyBarrelTracksWithAmbiguities const& barrelTracks) + { + runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + } + void processMuonOnlySkimmed(MyEventsVtxCovSelected const& events, soa::Join const& muonAssocs, MyMuonTracksWithCovWithAmbiguities const& muons) { @@ -2843,6 +2850,7 @@ struct AnalysisSameEventPairing { PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks and with collision information", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCovWithMultExtra, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with MultsExtra", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks, with Qvector from central framework", false); + PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithCollQvectorCentrSkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with Qvector from central framework", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedFlow, "Run barrel only pairing, with skimmed tracks and with flow", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmedMultExtra, "Run muon only pairing, with skimmed tracks", false); From a9265ce91e531b97e183b79ecaf95a1a59dbc32e Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Mon, 8 Jun 2026 17:00:17 +0200 Subject: [PATCH 03/17] add cov information in process --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index d7e9b11b8f6..a3134c91f96 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1399,7 +1399,7 @@ struct AnalysisSameEventPairing { void init(o2::framework::InitContext& context) { - fEnableBarrelHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processBarrelOnlySkimmed") || context.mOptions.get("processBarrelOnlyWithCollSkimmed") || context.mOptions.get("processBarrelOnlySkimmedNoCov") || context.mOptions.get("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmedNoCov") || context.mOptions.get("processBarrelOnlyWithCollQvectorCentrSkimmedNoCov"); + fEnableBarrelHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processBarrelOnlySkimmed") || context.mOptions.get("processBarrelOnlyWithCollSkimmed") || context.mOptions.get("processBarrelOnlySkimmedNoCov") || context.mOptions.get("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmedNoCov") || context.mOptions.get("processBarrelOnlyWithCollQvectorCentrSkimmed"); fEnableBarrelMixingHistos = context.mOptions.get("processMixingAllSkimmed") || context.mOptions.get("processMixingBarrelSkimmed") || context.mOptions.get("processMixingBarrelSkimmedFlow") || context.mOptions.get("processMixingBarrelWithQvectorCentrSkimmedNoCov"); fEnableBarrelMixingHistos |= fConfigRunMixingAcrossTFs; fEnableMuonHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processMuonOnlySkimmed") || context.mOptions.get("processMuonOnlySkimmedMultExtra") || context.mOptions.get("processMuonOnlySkimmedFlow"); @@ -2762,11 +2762,11 @@ struct AnalysisSameEventPairing { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } - void processBarrelOnlyWithCollQvectorCentrSkimmedNoCov(MyEventsQvectorCentrSelected const& events, + void processBarrelOnlyWithCollQvectorCentrSkimmed(MyEventsQvectorCentrSelected const& events, soa::Join const& barrelAssocs, - MyBarrelTracksWithAmbiguities const& barrelTracks) + MyBarrelTracksWithCovWithAmbiguitiesWithColl const& barrelTracks) { - runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processMuonOnlySkimmed(MyEventsVtxCovSelected const& events, @@ -2850,7 +2850,7 @@ struct AnalysisSameEventPairing { PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks and with collision information", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCovWithMultExtra, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with MultsExtra", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks, with Qvector from central framework", false); - PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithCollQvectorCentrSkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with Qvector from central framework", false); + PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithCollQvectorCentrSkimmed, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with Qvector from central framework", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedFlow, "Run barrel only pairing, with skimmed tracks and with flow", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmedMultExtra, "Run muon only pairing, with skimmed tracks", false); From a52bc7f3773135269e09993a107c21db13c2aa51 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Mon, 8 Jun 2026 17:10:31 +0200 Subject: [PATCH 04/17] fix bug --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index a3134c91f96..30c619c258a 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1399,7 +1399,7 @@ struct AnalysisSameEventPairing { void init(o2::framework::InitContext& context) { - fEnableBarrelHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processBarrelOnlySkimmed") || context.mOptions.get("processBarrelOnlyWithCollSkimmed") || context.mOptions.get("processBarrelOnlySkimmedNoCov") || context.mOptions.get("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmedNoCov") || context.mOptions.get("processBarrelOnlyWithCollQvectorCentrSkimmed"); + fEnableBarrelHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processBarrelOnlySkimmed") || context.mOptions.get("processBarrelOnlyWithCollSkimmed") || context.mOptions.get("processBarrelOnlySkimmedNoCov") || context.mOptions.get("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmedNoCov") || context.mOptions.get("processBarrelOnlyWithQvectorCentrSkimmed"); fEnableBarrelMixingHistos = context.mOptions.get("processMixingAllSkimmed") || context.mOptions.get("processMixingBarrelSkimmed") || context.mOptions.get("processMixingBarrelSkimmedFlow") || context.mOptions.get("processMixingBarrelWithQvectorCentrSkimmedNoCov"); fEnableBarrelMixingHistos |= fConfigRunMixingAcrossTFs; fEnableMuonHistos = context.mOptions.get("processAllSkimmed") || context.mOptions.get("processMuonOnlySkimmed") || context.mOptions.get("processMuonOnlySkimmedMultExtra") || context.mOptions.get("processMuonOnlySkimmedFlow"); @@ -2762,11 +2762,11 @@ struct AnalysisSameEventPairing { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } - void processBarrelOnlyWithCollQvectorCentrSkimmed(MyEventsQvectorCentrSelected const& events, + void processBarrelOnlyWithQvectorCentrSkimmed(MyEventsQvectorCentrSelected const& events, soa::Join const& barrelAssocs, - MyBarrelTracksWithCovWithAmbiguitiesWithColl const& barrelTracks) + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) { - runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); + runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } void processMuonOnlySkimmed(MyEventsVtxCovSelected const& events, @@ -2850,7 +2850,7 @@ struct AnalysisSameEventPairing { PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks and with collision information", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCovWithMultExtra, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with MultsExtra", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks, with Qvector from central framework", false); - PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithCollQvectorCentrSkimmed, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with Qvector from central framework", false); + PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmed, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with Qvector from central framework", false); PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedFlow, "Run barrel only pairing, with skimmed tracks and with flow", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false); PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmedMultExtra, "Run muon only pairing, with skimmed tracks", false); From bf7243a437154d6487c0e65ecb7bfeb790ddcfdf Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 11:45:30 +0200 Subject: [PATCH 05/17] add event information in pair table --- PWGDQ/DataModel/ReducedInfoTables.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PWGDQ/DataModel/ReducedInfoTables.h b/PWGDQ/DataModel/ReducedInfoTables.h index 71a15a1ddbd..96155a35255 100644 --- a/PWGDQ/DataModel/ReducedInfoTables.h +++ b/PWGDQ/DataModel/ReducedInfoTables.h @@ -152,6 +152,11 @@ DECLARE_SOA_COLUMN(CORR4REF, corr4ref, float); //! Ref Flow correla DECLARE_SOA_COLUMN(M11REF, m11ref, float); //! Weighted multiplicity of <<2>> for reference flow DECLARE_SOA_COLUMN(M1111REF, m1111ref, float); //! Weighted multiplicity of <<4>> for reference flow DECLARE_SOA_COLUMN(M11REFetagap, m11refetagap, float); //! Weighted multiplicity of <<2>> etagap for reference flow + +DECLARE_SOA_COLUMN(Psi2Random, psi2random, float); //! Event plane angle from random subevent +DECLARE_SOA_COLUMN(Psi2A, psi2a, float); //! Event plane angle from Q-vector A +DECLARE_SOA_COLUMN(Psi2B, psi2b, float); //! Event plane angle from Q-vector B +DECLARE_SOA_COLUMN(Psi2C, psi2c, float); //! Event plane angle from Q-vector C } // namespace reducedevent DECLARE_SOA_TABLE_STAGED(ReducedEvents, "REDUCEDEVENT", //! Main event information table @@ -993,6 +998,9 @@ DECLARE_SOA_TABLE(DileptonsPolarization, "AOD", "RTDILPOLAR", //! reducedpair::CosThetaRM, reducedpair::CosThetaStarTPC, reducedpair::CosThetaStarFT0A, reducedpair::CosThetaStarFT0C); +DECLARE_SOA_TABLE(DileptonsEventInfo, "AOD", "RTDILEVENTINFO", //! + cent::CentFT0C, collision::PosZ, collision::NumContrib, reducedevent::Psi2Random, reducedevent::Psi2A, reducedevent::Psi2B, reducedevent::Psi2C); + using Dielectron = Dielectrons::iterator; using StoredDielectron = StoredDielectrons::iterator; using Dimuon = Dimuons::iterator; @@ -1007,6 +1015,7 @@ using DileptonMiniTree = DileptonsMiniTree::iterator; using DileptonMiniTreeGen = DileptonsMiniTreeGen::iterator; using DileptonMiniTreeRec = DileptonsMiniTreeRec::iterator; using DileptonPolarization = DileptonsPolarization::iterator; +using DileptonEventInfo = DileptonsEventInfo::iterator; // Tables for using analysis-dilepton-track with analysis-asymmetric-pairing DECLARE_SOA_TABLE(Ditracks, "AOD", "RTDITRACK", //! From 6f8666cdd60d5c1c022f1ba88240414adc97b985 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 11:55:07 +0200 Subject: [PATCH 06/17] add event-pair table in tablereader --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 30c619c258a..e5606d55bfa 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1298,6 +1298,7 @@ struct AnalysisSameEventPairing { Produces dileptonInfoList; Produces PromptNonPromptSepTable; Produces dileptonPolarList; + Produces dileptonEventInfoList; o2::base::MatLayerCylSet* fLUT = nullptr; int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc. @@ -1842,6 +1843,7 @@ struct AnalysisSameEventPairing { } if (fConfigOptions.polarTables.value) { dileptonPolarList.reserve(nAssocs); + dileptonEventInfoList.reserve(nAssocs); } fAmbiguousPairs.clear(); constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); @@ -1930,6 +1932,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kCosThetaPP], VarManager::fgValues[VarManager::kPhiPP], VarManager::fgValues[VarManager::kPhiTildePP], VarManager::fgValues[VarManager::kCosThetaRM], VarManager::fgValues[VarManager::kCosThetaStarTPC], VarManager::fgValues[VarManager::kCosThetaStarFT0A], VarManager::fgValues[VarManager::kCosThetaStarFT0C]); + dileptonEventInfoList(VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kPosZ], VarManager::fgValues[VarManager::kNumContrib], VarManager::fgValues[VarManager::kPsi2Random], VarManager::fgValues[VarManager::kPsi2A], VarManager::fgValues[VarManager::kPsi2B], VarManager::fgValues[VarManager::kPsi2C]); } if constexpr (trackHasCov && TTwoProngFitter) { dielectronsExtraList(t1.globalIndex(), t2.globalIndex(), VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); From d189b6421b6d0ba8814f98a27e6a2c945bf96d64 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 12:09:57 +0200 Subject: [PATCH 07/17] add event-pair table in tablereader --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index e5606d55bfa..4cdc2b351e3 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1932,7 +1932,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kCosThetaPP], VarManager::fgValues[VarManager::kPhiPP], VarManager::fgValues[VarManager::kPhiTildePP], VarManager::fgValues[VarManager::kCosThetaRM], VarManager::fgValues[VarManager::kCosThetaStarTPC], VarManager::fgValues[VarManager::kCosThetaStarFT0A], VarManager::fgValues[VarManager::kCosThetaStarFT0C]); - dileptonEventInfoList(VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kPosZ], VarManager::fgValues[VarManager::kNumContrib], VarManager::fgValues[VarManager::kPsi2Random], VarManager::fgValues[VarManager::kPsi2A], VarManager::fgValues[VarManager::kPsi2B], VarManager::fgValues[VarManager::kPsi2C]); + dileptonEventInfoList(VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kPosZ], VarManager::fgValues[VarManager::kNumContrib], VarManager::fgValues[VarManager::kRandomPsi2], VarManager::fgValues[VarManager::kPsi2A], VarManager::fgValues[VarManager::kPsi2B], VarManager::fgValues[VarManager::kPsi2C]); } if constexpr (trackHasCov && TTwoProngFitter) { dielectronsExtraList(t1.globalIndex(), t2.globalIndex(), VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); From 6a44f1b5e2c0417f96340cf20229abc008988794 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 12:14:58 +0200 Subject: [PATCH 08/17] fix bug --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 4cdc2b351e3..9cb2f579930 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1932,7 +1932,7 @@ struct AnalysisSameEventPairing { VarManager::fgValues[VarManager::kCosThetaPP], VarManager::fgValues[VarManager::kPhiPP], VarManager::fgValues[VarManager::kPhiTildePP], VarManager::fgValues[VarManager::kCosThetaRM], VarManager::fgValues[VarManager::kCosThetaStarTPC], VarManager::fgValues[VarManager::kCosThetaStarFT0A], VarManager::fgValues[VarManager::kCosThetaStarFT0C]); - dileptonEventInfoList(VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kPosZ], VarManager::fgValues[VarManager::kNumContrib], VarManager::fgValues[VarManager::kRandomPsi2], VarManager::fgValues[VarManager::kPsi2A], VarManager::fgValues[VarManager::kPsi2B], VarManager::fgValues[VarManager::kPsi2C]); + dileptonEventInfoList(VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kVtxZ], VarManager::fgValues[VarManager::kVtxNcontrib], VarManager::fgValues[VarManager::kRandomPsi2], VarManager::fgValues[VarManager::kPsi2A], VarManager::fgValues[VarManager::kPsi2B], VarManager::fgValues[VarManager::kPsi2C]); } if constexpr (trackHasCov && TTwoProngFitter) { dielectronsExtraList(t1.globalIndex(), t2.globalIndex(), VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]); From e1f4f90c494224c728e9968eb677f1ef8222edc1 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 13:09:00 +0200 Subject: [PATCH 09/17] add histogram for random plane filling --- PWGDQ/Core/HistogramsLibrary.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGDQ/Core/HistogramsLibrary.cxx b/PWGDQ/Core/HistogramsLibrary.cxx index 33846186632..098f5a7df10 100644 --- a/PWGDQ/Core/HistogramsLibrary.cxx +++ b/PWGDQ/Core/HistogramsLibrary.cxx @@ -1361,6 +1361,7 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h } } if (subGroupStr.Contains("globalpolarization")) { + hm->AddHistogram(histClass, "RandomPlaneAngle", "", false, 100, -TMath::Pi() / 2, TMath::Pi() / 2, VarManager::kRandomPsi2); hm->AddHistogram(histClass, "CosThetaStarRandom", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarRandom); hm->AddHistogram(histClass, "Cos2ThetaStarRandom_Mass", "", true, 50, 2.0, 4.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos2ThetaStarRandom); if (subGroupStr.Contains("tpc")) { From 3887bf2d6220a1f23542fbf59f012e3f27a6e2cb Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 20:43:42 +0200 Subject: [PATCH 10/17] update reserved size --- PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx index 3113e45f191..11f9ae7bf55 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx @@ -1669,20 +1669,42 @@ struct AnalysisSameEventPairing { uint32_t mcDecision = static_cast(0); bool isCorrectAssoc_leg1 = false; bool isCorrectAssoc_leg2 = false; - dielectronList.reserve(1); - // dimuonList.reserve(1); - dielectronsExtraList.reserve(1); - // dimuonsExtraList.reserve(1); - dielectronInfoList.reserve(1); - dileptonInfoList.reserve(1); + + // estimate reserved size + int64_t reserveSize = 0; + for (auto& event : events) { + if (event.isEventSelected_bit(0)) { + auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); + reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + } + } + + dielectronList.reserve(reserveSize); + dielectronsExtraList.reserve(reserveSize); + dielectronInfoList.reserve(reserveSize); + dileptonInfoList.reserve(reserveSize); if (fConfigOptions.flatTables.value) { - dielectronAllList.reserve(1); - // dimuonAllList.reserve(1); + dielectronAllList.reserve(reserveSize); } if (fConfigOptions.fConfigMiniTree) { - dileptonMiniTreeGen.reserve(1); - dileptonMiniTreeRec.reserve(1); - } + dileptonMiniTreeGen.reserve(reserveSize); + dileptonMiniTreeRec.reserve(reserveSize); + } + + // dielectronList.reserve(1); + // // dimuonList.reserve(1); + // dielectronsExtraList.reserve(1); + // // dimuonsExtraList.reserve(1); + // dielectronInfoList.reserve(1); + // dileptonInfoList.reserve(1); + // if (fConfigOptions.flatTables.value) { + // dielectronAllList.reserve(1); + // // dimuonAllList.reserve(1); + // } + // if (fConfigOptions.fConfigMiniTree) { + // dileptonMiniTreeGen.reserve(1); + // dileptonMiniTreeRec.reserve(1); + // } constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0); From d64c696da546a7f611218a7b479d606be4f49939 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 21:06:07 +0200 Subject: [PATCH 11/17] update reserved size --- PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 33 ++++++++++++------ PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx | 14 -------- PWGDQ/Tasks/tableReader_withAssoc.cxx | 34 ++++++++++++------- PWGDQ/Tasks/tableReader_withAssoc_direct.cxx | 21 +++++++----- 4 files changed, 57 insertions(+), 45 deletions(-) diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index ebeb6b0399a..21f4dd02bcf 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -2005,23 +2005,34 @@ struct AnalysisSameEventPairing { uint32_t mcDecision = static_cast(0); bool isCorrectAssoc_leg1 = false; bool isCorrectAssoc_leg2 = false; - dielectronList.reserve(1); - dimuonList.reserve(1); - dielectronsExtraList.reserve(1); - dimuonsExtraList.reserve(1); - dielectronInfoList.reserve(1); - dileptonInfoList.reserve(1); + + // estimate reserved size + int64_t reserveSize = 0; + for (auto& event : events) { + if (event.isEventSelected_bit(0)) { + auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); + reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + } + } + + dielectronList.reserve(reserveSize); + dimuonList.reserve(reserveSize); + dielectronsExtraList.reserve(reserveSize); + dimuonsExtraList.reserve(reserveSize); + dielectronInfoList.reserve(reserveSize); + dileptonInfoList.reserve(reserveSize); if (fConfigOptions.flatTables.value) { - dielectronAllList.reserve(1); - dimuonAllList.reserve(1); + dielectronAllList.reserve(reserveSize); + dimuonAllList.reserve(reserveSize); } if (useMiniTree.fConfigMiniTree) { - dileptonMiniTreeGen.reserve(1); - dileptonMiniTreeRec.reserve(1); + dileptonMiniTreeGen.reserve(reserveSize); + dileptonMiniTreeRec.reserve(reserveSize); } if (fConfigOptions.polarTables.value) { - dileptonPolarList.reserve(1); + dileptonPolarList.reserve(reserveSize); } + constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0); diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx index 11f9ae7bf55..099b60a5e9d 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx @@ -1691,20 +1691,6 @@ struct AnalysisSameEventPairing { dileptonMiniTreeRec.reserve(reserveSize); } - // dielectronList.reserve(1); - // // dimuonList.reserve(1); - // dielectronsExtraList.reserve(1); - // // dimuonsExtraList.reserve(1); - // dielectronInfoList.reserve(1); - // dileptonInfoList.reserve(1); - // if (fConfigOptions.flatTables.value) { - // dielectronAllList.reserve(1); - // // dimuonAllList.reserve(1); - // } - // if (fConfigOptions.fConfigMiniTree) { - // dileptonMiniTreeGen.reserve(1); - // dileptonMiniTreeRec.reserve(1); - // } constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0); diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 9cb2f579930..7bd06d47cce 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1829,22 +1829,32 @@ struct AnalysisSameEventPairing { // Reserve capacity for the output tables to avoid repeated reallocations // inside the Arrow builders. Unused capacity is virtual address space // only — pages are not faulted in until written. - auto nAssocs = assocs.size(); - dielectronList.reserve(nAssocs); - dimuonList.reserve(nAssocs); - dielectronsExtraList.reserve(nAssocs); - dielectronInfoList.reserve(nAssocs); - dimuonsExtraList.reserve(nAssocs); - dileptonInfoList.reserve(nAssocs); - dileptonFlowList.reserve(nAssocs); + // estimate reserved size + int64_t reserveSize = 0; + for (auto& event : events) { + if (event.isEventSelected_bit(0)) { + auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); + reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + } + } + LOG(info) << "Reserving capacity for " << reserveSize << " pairs in the output tables"; + + dielectronList.reserve(reserveSize); + dimuonList.reserve(reserveSize); + dielectronsExtraList.reserve(reserveSize); + dielectronInfoList.reserve(reserveSize); + dimuonsExtraList.reserve(reserveSize); + dileptonInfoList.reserve(reserveSize); + dileptonFlowList.reserve(reserveSize); if (fConfigOptions.flatTables.value) { - dielectronAllList.reserve(nAssocs); - dimuonAllList.reserve(nAssocs); + dielectronAllList.reserve(reserveSize); + dimuonAllList.reserve(reserveSize); } if (fConfigOptions.polarTables.value) { - dileptonPolarList.reserve(nAssocs); - dileptonEventInfoList.reserve(nAssocs); + dileptonPolarList.reserve(reserveSize); + dileptonEventInfoList.reserve(reserveSize); } + fAmbiguousPairs.clear(); constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); diff --git a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx index 39814f73fa8..cb987f657c1 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx @@ -1637,16 +1637,21 @@ struct AnalysisSameEventPairing { int sign1 = 0; int sign2 = 0; - dielectronList.reserve(1); - // dimuonList.reserve(1); - dielectronsExtraList.reserve(1); - // dimuonsExtraList.reserve(1); - dielectronInfoList.reserve(1); - dileptonInfoList.reserve(1); + // estimate reserved size + int64_t reserveSize = 0; + for (auto& event : events) { + if (event.isEventSelected_bit(0)) { + auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); + reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + } + } + dielectronList.reserve(reserveSize); + dielectronsExtraList.reserve(reserveSize); + dielectronInfoList.reserve(reserveSize); + dileptonInfoList.reserve(reserveSize); if (fConfigOptions.flatTables.value) { - dielectronAllList.reserve(1); - // dimuonAllList.reserve(1); + dielectronAllList.reserve(reserveSize); } constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); From 26036b1b857513938db6c2edd6bec2243324f011 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 21:25:43 +0200 Subject: [PATCH 12/17] test --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 7bd06d47cce..1fedaa6fd69 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1838,6 +1838,7 @@ struct AnalysisSameEventPairing { } } LOG(info) << "Reserving capacity for " << reserveSize << " pairs in the output tables"; + LOG(info) << "number of Assocs: " << assocs.size() << ", number of Events: " << events.size(); dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); From c086f8f6968b6ed15c68dcb6a17bf3a4d5598849 Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 21:36:45 +0200 Subject: [PATCH 13/17] test --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 1fedaa6fd69..f9af66a684d 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1839,6 +1839,7 @@ struct AnalysisSameEventPairing { } LOG(info) << "Reserving capacity for " << reserveSize << " pairs in the output tables"; LOG(info) << "number of Assocs: " << assocs.size() << ", number of Events: " << events.size(); + reserveSize = 1; dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); From 50b098450ee294d01cc3f9529057328a8fd7b00b Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 22:28:25 +0200 Subject: [PATCH 14/17] test --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index f9af66a684d..0f1f5ab12e0 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1834,12 +1834,16 @@ struct AnalysisSameEventPairing { for (auto& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); - reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + size_t nGood = 0; + for (auto const& t : groupedAssocs) { + if (t.isBarrelSelected_raw() && t.isBarrelSelectedPrefilter_raw()) { + nGood++; + } + } + reserveSize += nGood * (nGood - 1) / 2; } } LOG(info) << "Reserving capacity for " << reserveSize << " pairs in the output tables"; - LOG(info) << "number of Assocs: " << assocs.size() << ", number of Events: " << events.size(); - reserveSize = 1; dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); From 2394f90e29a62b5be692f414fca9bd5b83f9244c Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 22:33:36 +0200 Subject: [PATCH 15/17] test --- PWGDQ/Tasks/tableReader_withAssoc.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 0f1f5ab12e0..3dba98d38c7 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1836,8 +1836,14 @@ struct AnalysisSameEventPairing { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); size_t nGood = 0; for (auto const& t : groupedAssocs) { - if (t.isBarrelSelected_raw() && t.isBarrelSelectedPrefilter_raw()) { - nGood++; + if constexpr (TPairType == VarManager::kDecayToEE) { + if (t.isBarrelSelected_raw()) { + nGood++; + } + } else if constexpr (TPairType == VarManager::kDecayToMuMu) { + if (t.isMuonSelected_raw()) { + nGood++; + } } } reserveSize += nGood * (nGood - 1) / 2; From a8653d99c4d34f21db0889334e6034bcb9e8552f Mon Sep 17 00:00:00 2001 From: zjxiongOvO Date: Tue, 9 Jun 2026 22:55:13 +0200 Subject: [PATCH 16/17] update reserve system --- PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 16 ++++++++++++++-- PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx | 17 +++++++++++++++-- PWGDQ/Tasks/tableReader_withAssoc.cxx | 1 - PWGDQ/Tasks/tableReader_withAssoc_direct.cxx | 12 ++++++++++-- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index 21f4dd02bcf..58fc25f40d0 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -2011,9 +2011,21 @@ struct AnalysisSameEventPairing { for (auto& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); - reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + size_t nGood = 0; + for (auto const& t : groupedAssocs) { + if constexpr (TPairType == VarManager::kDecayToEE) { + if (t.isBarrelSelected_raw()) { + nGood++; + } + } else if constexpr (TPairType == VarManager::kDecayToMuMu) { + if (t.isMuonSelected_raw()) { + nGood++; + } + } + } + reserveSize += nGood * (nGood - 1) / 2; } - } + } dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx index 099b60a5e9d..32bdd05e5fb 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx @@ -1675,9 +1675,22 @@ struct AnalysisSameEventPairing { for (auto& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); - reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + size_t nGood = 0; + for (auto const& t : groupedAssocs) { + if constexpr (TPairType == VarManager::kDecayToEE) { + if (t.isBarrelSelected_raw()) { + nGood++; + } + } + /*else if constexpr (TPairType == VarManager::kDecayToMuMu) { + if (t.isMuonSelected_raw()) { + nGood++; + } + }*/ + } + reserveSize += nGood * (nGood - 1) / 2; } - } + } dielectronList.reserve(reserveSize); dielectronsExtraList.reserve(reserveSize); diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index 3dba98d38c7..a7044e94135 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1849,7 +1849,6 @@ struct AnalysisSameEventPairing { reserveSize += nGood * (nGood - 1) / 2; } } - LOG(info) << "Reserving capacity for " << reserveSize << " pairs in the output tables"; dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); diff --git a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx index cb987f657c1..50165476850 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx @@ -1642,9 +1642,17 @@ struct AnalysisSameEventPairing { for (auto& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); - reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations + size_t nGood = 0; + for (auto const& t : groupedAssocs) { + if constexpr (TPairType == VarManager::kDecayToEE) { + if (t.isBarrelSelected_raw()) { + nGood++; + } + } + } + reserveSize += nGood * (nGood - 1) / 2; } - } + } dielectronList.reserve(reserveSize); dielectronsExtraList.reserve(reserveSize); From e7f8d1d6393a4961316bbb510670fcd5ff782389 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Wed, 10 Jun 2026 11:48:18 +0000 Subject: [PATCH 17/17] Please consider the following formatting changes --- PWGDQ/DataModel/ReducedInfoTables.h | 8 ++++---- PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 2 +- PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx | 2 +- PWGDQ/Tasks/tableReader_withAssoc.cxx | 8 ++++---- PWGDQ/Tasks/tableReader_withAssoc_direct.cxx | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/PWGDQ/DataModel/ReducedInfoTables.h b/PWGDQ/DataModel/ReducedInfoTables.h index 96155a35255..be60adab101 100644 --- a/PWGDQ/DataModel/ReducedInfoTables.h +++ b/PWGDQ/DataModel/ReducedInfoTables.h @@ -153,10 +153,10 @@ DECLARE_SOA_COLUMN(M11REF, m11ref, float); //! Weighted multipl DECLARE_SOA_COLUMN(M1111REF, m1111ref, float); //! Weighted multiplicity of <<4>> for reference flow DECLARE_SOA_COLUMN(M11REFetagap, m11refetagap, float); //! Weighted multiplicity of <<2>> etagap for reference flow -DECLARE_SOA_COLUMN(Psi2Random, psi2random, float); //! Event plane angle from random subevent -DECLARE_SOA_COLUMN(Psi2A, psi2a, float); //! Event plane angle from Q-vector A -DECLARE_SOA_COLUMN(Psi2B, psi2b, float); //! Event plane angle from Q-vector B -DECLARE_SOA_COLUMN(Psi2C, psi2c, float); //! Event plane angle from Q-vector C +DECLARE_SOA_COLUMN(Psi2Random, psi2random, float); //! Event plane angle from random subevent +DECLARE_SOA_COLUMN(Psi2A, psi2a, float); //! Event plane angle from Q-vector A +DECLARE_SOA_COLUMN(Psi2B, psi2b, float); //! Event plane angle from Q-vector B +DECLARE_SOA_COLUMN(Psi2C, psi2c, float); //! Event plane angle from Q-vector C } // namespace reducedevent DECLARE_SOA_TABLE_STAGED(ReducedEvents, "REDUCEDEVENT", //! Main event information table diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index 58fc25f40d0..4ea4e79e70e 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -2025,7 +2025,7 @@ struct AnalysisSameEventPairing { } reserveSize += nGood * (nGood - 1) / 2; } - } + } dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx index 32bdd05e5fb..5a437d6f091 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx @@ -1690,7 +1690,7 @@ struct AnalysisSameEventPairing { } reserveSize += nGood * (nGood - 1) / 2; } - } + } dielectronList.reserve(reserveSize); dielectronsExtraList.reserve(reserveSize); diff --git a/PWGDQ/Tasks/tableReader_withAssoc.cxx b/PWGDQ/Tasks/tableReader_withAssoc.cxx index a7044e94135..0c099b65eaa 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc.cxx @@ -1849,7 +1849,7 @@ struct AnalysisSameEventPairing { reserveSize += nGood * (nGood - 1) / 2; } } - + dielectronList.reserve(reserveSize); dimuonList.reserve(reserveSize); dielectronsExtraList.reserve(reserveSize); @@ -1865,7 +1865,7 @@ struct AnalysisSameEventPairing { dileptonPolarList.reserve(reserveSize); dileptonEventInfoList.reserve(reserveSize); } - + fAmbiguousPairs.clear(); constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0); constexpr bool eventHasQvectorCentr = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); @@ -2787,8 +2787,8 @@ struct AnalysisSameEventPairing { } void processBarrelOnlyWithQvectorCentrSkimmed(MyEventsQvectorCentrSelected const& events, - soa::Join const& barrelAssocs, - MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) + soa::Join const& barrelAssocs, + MyBarrelTracksWithCovWithAmbiguities const& barrelTracks) { runSameEventPairing(events, trackAssocsPerCollision, barrelAssocs, barrelTracks); } diff --git a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx index 50165476850..13e6b82c889 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx @@ -1652,7 +1652,7 @@ struct AnalysisSameEventPairing { } reserveSize += nGood * (nGood - 1) / 2; } - } + } dielectronList.reserve(reserveSize); dielectronsExtraList.reserve(reserveSize);