Skip to content

Commit 37c0e66

Browse files
committed
modified the reserve size for table reader
1 parent 0291fbd commit 37c0e66

1 file changed

Lines changed: 27 additions & 13 deletions

File tree

PWGDQ/Tasks/tableReader.cxx

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,8 @@ struct AnalysisTrackSelection {
350350

351351
int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc.
352352

353+
int64_t reserveSize = 0;
354+
353355
void init(o2::framework::InitContext& context)
354356
{
355357
if (context.mOptions.get<bool>("processDummy")) {
@@ -416,7 +418,8 @@ struct AnalysisTrackSelection {
416418
fCurrentRun = event.runNumber();
417419
}
418420

419-
trackSel.reserve(tracks.size());
421+
reserveSize += tracks.size();
422+
trackSel.reserve(reserveSize);
420423
uint32_t filterMap = 0;
421424
bool prefilterSelected = false;
422425
int iCut = 0;
@@ -477,6 +480,8 @@ struct AnalysisMuonSelection {
477480

478481
Filter filterEventSelected = aod::dqanalysisflags::isEventSelected == 1;
479482

483+
int64_t reserveSize = 0;
484+
480485
void init(o2::framework::InitContext& context)
481486
{
482487
if (context.mOptions.get<bool>("processDummy")) {
@@ -516,7 +521,8 @@ struct AnalysisMuonSelection {
516521
VarManager::ResetValues(0, VarManager::kNMuonTrackVariables);
517522
VarManager::FillEvent<TEventFillMap>(event);
518523

519-
muonSel.reserve(muons.size());
524+
reserveSize += muons.size();
525+
muonSel.reserve(reserveSize);
520526
uint32_t filterMap = 0;
521527
int iCut = 0;
522528

@@ -1103,6 +1109,8 @@ struct AnalysisSameEventPairing {
11031109
std::vector<std::vector<TString>> fTrackMuonHistNames;
11041110
std::vector<AnalysisCompositeCut> fPairCuts;
11051111

1112+
int64_t reserveSize = 0;
1113+
11061114
void init(o2::framework::InitContext& context)
11071115
{
11081116
if (context.mOptions.get<bool>("processDummy")) {
@@ -1372,20 +1380,26 @@ struct AnalysisSameEventPairing {
13721380
uint32_t twoTrackFilter = 0;
13731381
uint32_t dileptonFilterMap = 0;
13741382
uint32_t dileptonMcDecision = 0; // placeholder, copy of the dqEfficiency.cxx one
1375-
dielectronList.reserve(1);
1376-
dimuonList.reserve(1);
1377-
dielectronExtraList.reserve(1);
1378-
dielectronInfoList.reserve(1);
1379-
dimuonExtraList.reserve(1);
1380-
dileptonInfoList.reserve(1);
1381-
dileptonFlowList.reserve(1);
1383+
1384+
if constexpr (TPairType != VarManager::kElectronMuon) {
1385+
// tracks1 = tracks2
1386+
// since emu does not require any table in this task, reserveSize is updated for same particle only now
1387+
reserveSize += tracks1.size() * (tracks1.size() - 1) / 2;
1388+
}
1389+
dielectronList.reserve(reserveSize);
1390+
dimuonList.reserve(reserveSize);
1391+
dielectronExtraList.reserve(reserveSize);
1392+
dielectronInfoList.reserve(reserveSize);
1393+
dimuonExtraList.reserve(reserveSize);
1394+
dileptonInfoList.reserve(reserveSize);
1395+
dileptonFlowList.reserve(reserveSize);
13821396
if (fConfigFlatTables.value) {
1383-
dielectronAllList.reserve(1);
1384-
dielectronMlList.reserve(1);
1385-
dimuonAllList.reserve(1);
1397+
dielectronAllList.reserve(reserveSize);
1398+
dielectronMlList.reserve(reserveSize);
1399+
dimuonAllList.reserve(reserveSize);
13861400
}
13871401
if (useMiniTree.fConfigMiniTree) {
1388-
dileptonMiniTree.reserve(1);
1402+
dileptonMiniTree.reserve(reserveSize);
13891403
}
13901404

13911405
bool isSelectedBDT = false;

0 commit comments

Comments
 (0)