@@ -404,58 +404,68 @@ struct lambdaTwoPartPolarization {
404404
405405 FillHistograms (collision, collision, V0s, V0s);
406406 }
407- PROCESS_SWITCH (lambdaTwoPartPolarization, processDataSame, " Process Event for same data" , true );
407+ PROCESS_SWITCH (lambdaTwoPartPolarization, processDataSame, " Process event for same data" , true );
408408
409409 SliceCache cache;
410- using BinningTypeVertexContributorFT0M = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0M>;
411- using BinningTypeVertexContributorFT0C = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C>;
410+ Preslice<aod::V0Datas> tracksPerCollisionV0 = aod::v0data::collisionId;
411+
412+ using BinningTypeT0C = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C>;
413+ BinningTypeT0C colBinningT0C{{vertexAxis, centAxis}, true };
414+
412415 void processDataMixedT0C (EventCandidates const & collisions,
413416 TrackCandidates const & /* tracks*/ , aod::V0Datas const & V0s, aod::BCsWithTimestamps const &)
414417 {
415- auto tracksTuple = std::make_tuple (V0s);
416- BinningTypeVertexContributorFT0C binningOnPositions{{vertexAxis, centAxis}, true };
417- SameKindPair<EventCandidates, V0TrackCandidate, BinningTypeVertexContributorFT0C> pair{binningOnPositions, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache};
418- for (auto & [c1, tracks1, c2, tracks2] : pair) {
418+ for (auto & [c1, c2] : selfCombinations (colBinningT0C, cfgNoMixedEvents, -1 , collisions, collisions)) {
419+
420+ if (c1.index () == c2.index ())
421+ continue ;
422+
419423 centrality = c1.centFT0C ();
420- auto bc = c1.bc_as <aod::BCsWithTimestamps>();
421424 if (cfgAccCor) {
425+ auto bc = c1.bc_as <aod::BCsWithTimestamps>();
422426 AccMap = ccdb->getForTimeStamp <TProfile2D>(cfgAccCorPath.value , bc.timestamp ());
423427 }
424428 if (!eventSelected (c1))
425429 continue ;
426430 if (!eventSelected (c2))
427431 continue ;
428- if (c1.bcId () == c2.bcId ())
429- continue ;
432+
433+ auto tracks1 = V0s.sliceBy (tracksPerCollisionV0, c1.globalIndex ());
434+ auto tracks2 = V0s.sliceBy (tracksPerCollisionV0, c2.globalIndex ());
430435
431436 FillHistograms (c1, c2, tracks1, tracks2);
432437 }
433438 }
434- PROCESS_SWITCH (lambdaTwoPartPolarization, processDataMixedT0C, " Process Event for mixed data in PbPb" , false );
439+ PROCESS_SWITCH (lambdaTwoPartPolarization, processDataMixedT0C, " Process event for mixed data in PbPb" , false );
440+
441+ using BinningTypeT0M = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0M>;
442+ BinningTypeT0M colBinningT0M{{vertexAxis, centAxis}, true };
435443
436444 void processDataMixedT0M (EventCandidates const & collisions,
437445 TrackCandidates const & /* tracks*/ , aod::V0Datas const & V0s, aod::BCsWithTimestamps const &)
438446 {
439- auto tracksTuple = std::make_tuple (V0s);
440- BinningTypeVertexContributorFT0M binningOnPositions{{vertexAxis, centAxis}, true };
441- SameKindPair<EventCandidates, V0TrackCandidate, BinningTypeVertexContributorFT0M> pair{binningOnPositions, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache};
442- for (auto & [c1, tracks1, c2, tracks2] : pair) {
447+ for (auto & [c1, c2] : selfCombinations (colBinningT0M, cfgNoMixedEvents, -1 , collisions, collisions)) {
448+
449+ if (c1.index () == c2.index ())
450+ continue ;
451+
443452 centrality = c1.centFT0M ();
444- auto bc = c1.bc_as <aod::BCsWithTimestamps>();
445453 if (cfgAccCor) {
454+ auto bc = c1.bc_as <aod::BCsWithTimestamps>();
446455 AccMap = ccdb->getForTimeStamp <TProfile2D>(cfgAccCorPath.value , bc.timestamp ());
447456 }
448457 if (!eventSelected (c1))
449458 continue ;
450459 if (!eventSelected (c2))
451460 continue ;
452- if (c1.bcId () == c2.bcId ())
453- continue ;
461+
462+ auto tracks1 = V0s.sliceBy (tracksPerCollisionV0, c1.globalIndex ());
463+ auto tracks2 = V0s.sliceBy (tracksPerCollisionV0, c2.globalIndex ());
454464
455465 FillHistograms (c1, c2, tracks1, tracks2);
456466 }
457467 }
458- PROCESS_SWITCH (lambdaTwoPartPolarization, processDataMixedT0M, " Process Event for mixed data in pp" , false );
468+ PROCESS_SWITCH (lambdaTwoPartPolarization, processDataMixedT0M, " Process event for mixed data in pp" , false );
459469};
460470
461471WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments