Skip to content

Commit d64c696

Browse files
committed
update reserved size
1 parent 3887bf2 commit d64c696

4 files changed

Lines changed: 57 additions & 45 deletions

File tree

PWGDQ/Tasks/dqEfficiency_withAssoc.cxx

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2005,23 +2005,34 @@ struct AnalysisSameEventPairing {
20052005
uint32_t mcDecision = static_cast<uint32_t>(0);
20062006
bool isCorrectAssoc_leg1 = false;
20072007
bool isCorrectAssoc_leg2 = false;
2008-
dielectronList.reserve(1);
2009-
dimuonList.reserve(1);
2010-
dielectronsExtraList.reserve(1);
2011-
dimuonsExtraList.reserve(1);
2012-
dielectronInfoList.reserve(1);
2013-
dileptonInfoList.reserve(1);
2008+
2009+
// estimate reserved size
2010+
int64_t reserveSize = 0;
2011+
for (auto& event : events) {
2012+
if (event.isEventSelected_bit(0)) {
2013+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
2014+
reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations
2015+
}
2016+
}
2017+
2018+
dielectronList.reserve(reserveSize);
2019+
dimuonList.reserve(reserveSize);
2020+
dielectronsExtraList.reserve(reserveSize);
2021+
dimuonsExtraList.reserve(reserveSize);
2022+
dielectronInfoList.reserve(reserveSize);
2023+
dileptonInfoList.reserve(reserveSize);
20142024
if (fConfigOptions.flatTables.value) {
2015-
dielectronAllList.reserve(1);
2016-
dimuonAllList.reserve(1);
2025+
dielectronAllList.reserve(reserveSize);
2026+
dimuonAllList.reserve(reserveSize);
20172027
}
20182028
if (useMiniTree.fConfigMiniTree) {
2019-
dileptonMiniTreeGen.reserve(1);
2020-
dileptonMiniTreeRec.reserve(1);
2029+
dileptonMiniTreeGen.reserve(reserveSize);
2030+
dileptonMiniTreeRec.reserve(reserveSize);
20212031
}
20222032
if (fConfigOptions.polarTables.value) {
2023-
dileptonPolarList.reserve(1);
2033+
dileptonPolarList.reserve(reserveSize);
20242034
}
2035+
20252036
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0);
20262037
constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0);
20272038

PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1691,20 +1691,6 @@ struct AnalysisSameEventPairing {
16911691
dileptonMiniTreeRec.reserve(reserveSize);
16921692
}
16931693

1694-
// dielectronList.reserve(1);
1695-
// // dimuonList.reserve(1);
1696-
// dielectronsExtraList.reserve(1);
1697-
// // dimuonsExtraList.reserve(1);
1698-
// dielectronInfoList.reserve(1);
1699-
// dileptonInfoList.reserve(1);
1700-
// if (fConfigOptions.flatTables.value) {
1701-
// dielectronAllList.reserve(1);
1702-
// // dimuonAllList.reserve(1);
1703-
// }
1704-
// if (fConfigOptions.fConfigMiniTree) {
1705-
// dileptonMiniTreeGen.reserve(1);
1706-
// dileptonMiniTreeRec.reserve(1);
1707-
// }
17081694
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);
17091695
constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0);
17101696

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,22 +1829,32 @@ struct AnalysisSameEventPairing {
18291829
// Reserve capacity for the output tables to avoid repeated reallocations
18301830
// inside the Arrow builders. Unused capacity is virtual address space
18311831
// only — pages are not faulted in until written.
1832-
auto nAssocs = assocs.size();
1833-
dielectronList.reserve(nAssocs);
1834-
dimuonList.reserve(nAssocs);
1835-
dielectronsExtraList.reserve(nAssocs);
1836-
dielectronInfoList.reserve(nAssocs);
1837-
dimuonsExtraList.reserve(nAssocs);
1838-
dileptonInfoList.reserve(nAssocs);
1839-
dileptonFlowList.reserve(nAssocs);
1832+
// estimate reserved size
1833+
int64_t reserveSize = 0;
1834+
for (auto& event : events) {
1835+
if (event.isEventSelected_bit(0)) {
1836+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
1837+
reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations
1838+
}
1839+
}
1840+
LOG(info) << "Reserving capacity for " << reserveSize << " pairs in the output tables";
1841+
1842+
dielectronList.reserve(reserveSize);
1843+
dimuonList.reserve(reserveSize);
1844+
dielectronsExtraList.reserve(reserveSize);
1845+
dielectronInfoList.reserve(reserveSize);
1846+
dimuonsExtraList.reserve(reserveSize);
1847+
dileptonInfoList.reserve(reserveSize);
1848+
dileptonFlowList.reserve(reserveSize);
18401849
if (fConfigOptions.flatTables.value) {
1841-
dielectronAllList.reserve(nAssocs);
1842-
dimuonAllList.reserve(nAssocs);
1850+
dielectronAllList.reserve(reserveSize);
1851+
dimuonAllList.reserve(reserveSize);
18431852
}
18441853
if (fConfigOptions.polarTables.value) {
1845-
dileptonPolarList.reserve(nAssocs);
1846-
dileptonEventInfoList.reserve(nAssocs);
1854+
dileptonPolarList.reserve(reserveSize);
1855+
dileptonEventInfoList.reserve(reserveSize);
18471856
}
1857+
18481858
fAmbiguousPairs.clear();
18491859
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0);
18501860
constexpr bool eventHasQvectorCentr = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);

PWGDQ/Tasks/tableReader_withAssoc_direct.cxx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,16 +1637,21 @@ struct AnalysisSameEventPairing {
16371637
int sign1 = 0;
16381638
int sign2 = 0;
16391639

1640-
dielectronList.reserve(1);
1641-
// dimuonList.reserve(1);
1642-
dielectronsExtraList.reserve(1);
1643-
// dimuonsExtraList.reserve(1);
1644-
dielectronInfoList.reserve(1);
1645-
dileptonInfoList.reserve(1);
1640+
// estimate reserved size
1641+
int64_t reserveSize = 0;
1642+
for (auto& event : events) {
1643+
if (event.isEventSelected_bit(0)) {
1644+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
1645+
reserveSize += (groupedAssocs.size() * (groupedAssocs.size() - 1)) / 2; // n choose 2 combinations
1646+
}
1647+
}
16461648

1649+
dielectronList.reserve(reserveSize);
1650+
dielectronsExtraList.reserve(reserveSize);
1651+
dielectronInfoList.reserve(reserveSize);
1652+
dileptonInfoList.reserve(reserveSize);
16471653
if (fConfigOptions.flatTables.value) {
1648-
dielectronAllList.reserve(1);
1649-
// dimuonAllList.reserve(1);
1654+
dielectronAllList.reserve(reserveSize);
16501655
}
16511656

16521657
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);

0 commit comments

Comments
 (0)