@@ -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