@@ -356,6 +356,8 @@ struct HfTaskFlow {
356356 Preslice<HfCandidatesSelD0> perColD0s = aod::track::collisionId;
357357 Preslice<HfCandidatesSelLc> perColLcs = aod::track::collisionId;
358358 Preslice<FilteredMftTracks> perColMftTracks = o2::aod::fwdtrack::collisionId;
359+ PresliceUnsorted<soa::SmallGroups<aod::BestCollisionsFwd>> perColReassociated2dTracks = o2::aod::fwdtrack::collisionId;
360+ PresliceUnsorted<soa::SmallGroups<aod::BestCollisionsFwd3d>> perColReassociated3dTracks = o2::aod::fwdtrack::collisionId;
359361 Preslice<FilteredTracksWDcaSel> perColTracks = aod::track::collisionId;
360362
361363 // configurables for containers
@@ -1419,6 +1421,16 @@ struct HfTaskFlow {
14191421 registry.fill (HIST (" Data/Mft/hAmbiguityOfMftTracks" ), MftTrackAmbiguityStep::AllMftTracks);
14201422 }
14211423
1424+ if (sameEvent) {
1425+ if (track1.collisionId () != track2.bestCollisionId ()) {
1426+ LOGF (info, " ATTENTION : PAS TRIE" );
1427+ }
1428+ } else {
1429+ if (track1.collisionId () == track2.bestCollisionId ()) {
1430+ LOGF (info, " ATTENTION : PAS TRIE" );
1431+ }
1432+ }
1433+
14221434 auto reassociatedMftTrack = track2.template mfttrack_as <FilteredMftTracks>();
14231435
14241436 if (!isAcceptedMftTrack (reassociatedMftTrack, false )) {
@@ -1901,6 +1913,87 @@ struct HfTaskFlow {
19011913 }
19021914 }
19031915
1916+ template <typename TCollisions, typename TTracksTrig, typename TTracksAssoc, typename TPresliceTrigger, typename TPresliceAssociated>
1917+ void mixCollisionsBis (TCollisions const & collisions, CorrelationContainer::CFStep step,
1918+ TTracksTrig const & tracks1, TTracksAssoc const & tracks2, TPresliceTrigger const & presliceTrigger, TPresliceAssociated const & presliceAssociated,
1919+ OutputObj<CorrelationContainer>& corrContainer, aod::BCsWithTimestamps const &)
1920+ {
1921+ auto getMultiplicity = [this ](FilteredCollisionsWSelMult::iterator const & collision) {
1922+ auto multiplicity = getMultiplicityEstimator (collision, false );
1923+ return multiplicity;
1924+ };
1925+
1926+ using MixedBinning = FlexibleBinningPolicy<std::tuple<decltype (getMultiplicity)>, aod::collision::PosZ, decltype (getMultiplicity)>;
1927+ MixedBinning const binningOnVtxAndMult{{getMultiplicity}, {configAxis.binsMixingVertex , configAxis.binsMixingMultiplicity }, true };
1928+
1929+ for (auto const & [collision1, collision2] : soa::selfCombinations (binningOnVtxAndMult, configTask.nMixedEvents , -1 , collisions, collisions)) {
1930+
1931+ if (!(isAcceptedCollision (collision1, false ))) {
1932+ continue ;
1933+ }
1934+ if (!(isAcceptedCollision (collision2, false ))) {
1935+ continue ;
1936+ }
1937+ if (collision1.globalIndex () == collision2.globalIndex ()) {
1938+ continue ;
1939+ }
1940+ const auto multiplicity = getMultiplicityEstimator (collision1, false );
1941+ if (multiplicity < configCollision.minMultiplicity || multiplicity > configCollision.maxMultiplicity ) {
1942+ return ;
1943+ }
1944+
1945+ auto bc = collision1.template bc_as <aod::BCsWithTimestamps>();
1946+ auto slicedTriggerTracks = tracks1.sliceBy (presliceTrigger, collision1.globalIndex ());
1947+ auto slicedAssociatedTracks = tracks2.sliceBy (presliceAssociated, collision2.globalIndex ());
1948+
1949+ corrContainer->fillEvent (multiplicity, step);
1950+ fillCorrelations (corrContainer, step, slicedTriggerTracks, slicedAssociatedTracks, multiplicity, collision1.posZ (), false , getMagneticField (bc.timestamp ()));
1951+ }
1952+ }
1953+
1954+ template <typename TCollisions, typename TTracksTrig, typename TTracksAssoc, typename TPresliceTrigger, typename TPresliceAssociated>
1955+ void mixCollisionsReassociatedMftTracks (TCollisions const & collisions, CorrelationContainer::CFStep step,
1956+ TTracksTrig const & tracks1, TTracksAssoc const & tracks2, TPresliceTrigger const & presliceTrigger, TPresliceAssociated const & presliceAssociated,
1957+ OutputObj<CorrelationContainer>& corrContainer, bool cutAmbiguousTracks)
1958+ {
1959+ auto getMultiplicity = [this ](FilteredCollisionsWSelMult::iterator const & collision) {
1960+ auto multiplicity = getMultiplicityEstimator (collision, false );
1961+ return multiplicity;
1962+ };
1963+
1964+ using MixedBinning = FlexibleBinningPolicy<std::tuple<decltype (getMultiplicity)>, aod::collision::PosZ, decltype (getMultiplicity)>;
1965+ MixedBinning const binningOnVtxAndMult{{getMultiplicity}, {configAxis.binsMixingVertex , configAxis.binsMixingMultiplicity }, true };
1966+
1967+ for (auto const & [collision1, collision2] : soa::selfCombinations (binningOnVtxAndMult, configTask.nMixedEvents , -1 , collisions, collisions)) {
1968+
1969+ if (!isAcceptedCollision (collision1) || !isAcceptedCollision (collision2)) {
1970+ continue ;
1971+ }
1972+ if (collision1.globalIndex () == collision2.globalIndex ()) {
1973+ continue ;
1974+ }
1975+ const auto multiplicity = getMultiplicityEstimator (collision1, false );
1976+ if (multiplicity < configCollision.minMultiplicity || multiplicity > configCollision.maxMultiplicity ) {
1977+ return ;
1978+ }
1979+
1980+ // if TPC-MFT cases
1981+ if constexpr (std::is_same_v<FilteredTracksWDcaSel, TTracksTrig>) {
1982+ auto slicedTriggerTracks = tracks1.sliceBy (presliceTrigger, collision1.globalIndex ());
1983+ auto slicedAssociatedTracks = tracks2.sliceBy (presliceAssociated, collision2.globalIndex ());
1984+
1985+ corrContainer->fillEvent (multiplicity, step);
1986+ fillCorrelationsReassociatedMftTracks (corrContainer, step, slicedTriggerTracks, slicedAssociatedTracks, multiplicity, collision1.posZ (), false , cutAmbiguousTracks);
1987+ } else if ((collision1.has_foundFT0 () && collision2.has_foundFT0 ())) { // if MFT-FT0A cases
1988+ auto slicedTriggerTracks = tracks1.sliceBy (presliceTrigger, collision1.globalIndex ());
1989+ const auto & ft0 = collision2.foundFT0 ();
1990+
1991+ corrContainer->fillEvent (multiplicity, step);
1992+ fillCorrelationsFITReassociatedMftTracks (corrContainer, step, slicedTriggerTracks, ft0, tracks2, multiplicity, collision1.posZ (), false , cutAmbiguousTracks, isFT0A);
1993+ }
1994+ } // end of for loop
1995+ }
1996+
19041997 template <typename TCollisions, typename TTracksTrig, typename TTracksAssoc, typename TPreslice>
19051998 void mixCollisionsFIT (TCollisions const & collisions, CorrelationContainer::CFStep step,
19061999 TTracksTrig const & tracks1, TTracksAssoc const & tracks2, TPreslice const & preslice,
@@ -2857,6 +2950,42 @@ struct HfTaskFlow {
28572950 }
28582951 PROCESS_SWITCH (HfTaskFlow, processMixedTpcMftChCh, " DATA : Process mixed-event correlations for TPC-MFT h-h case" , false );
28592952
2953+ void processMixedTpcMftChChBis (FilteredCollisionsWSelMult const & collisions,
2954+ FilteredTracksWDcaSel const & tracks,
2955+ FilteredMftTracks const & mftTracks,
2956+ aod::BCsWithTimestamps const & bcs)
2957+ {
2958+ mixCollisionsBis (collisions, CorrelationContainer::kCFStepReconstructed , tracks, mftTracks, perColTracks, perColMftTracks, mixedEvent, bcs);
2959+ }
2960+ PROCESS_SWITCH (HfTaskFlow, processMixedTpcMftChChBis, " DATA : Process mixed-event correlations for TPC-MFT h-h case" , false );
2961+
2962+ void processMixedTpcMftChChReassociated2d (FilteredCollisionsWSelMult const & collisions,
2963+ FilteredTracksWDcaSel const & tracks,
2964+ FilteredMftTracks const & /* mftTracks*/ ,
2965+ soa::SmallGroups<aod::BestCollisionsFwd> const & reassociated2dMftTracks)
2966+ {
2967+ mixCollisionsReassociatedMftTracks (collisions, CorrelationContainer::kCFStepReconstructed , tracks, reassociated2dMftTracks, perColTracks, perColReassociated2dTracks, mixedEvent, false );
2968+ }
2969+ PROCESS_SWITCH (HfTaskFlow, processMixedTpcMftChChReassociated2d, " DATA : Process mixed-event correlations for TPC-MFT h-h case" , false );
2970+
2971+ void processMixedTpcMftChChReassociated3d (FilteredCollisionsWSelMult const & collisions,
2972+ FilteredTracksWDcaSel const & tracks,
2973+ FilteredMftTracks const & /* mftTracks*/ ,
2974+ soa::SmallGroups<aod::BestCollisionsFwd3d> const & reassociated3dMftTracks)
2975+ {
2976+ mixCollisionsReassociatedMftTracks (collisions, CorrelationContainer::kCFStepReconstructed , tracks, reassociated3dMftTracks, perColTracks, perColReassociated3dTracks, mixedEvent, false );
2977+ }
2978+ PROCESS_SWITCH (HfTaskFlow, processMixedTpcMftChChReassociated3d, " DATA : Process mixed-event correlations for TPC-MFT h-h case" , false );
2979+
2980+ void processMixedTpcMftChChNonAmbiguous (FilteredCollisionsWSelMult const & collisions,
2981+ FilteredTracksWDcaSel const & tracks,
2982+ FilteredMftTracks const & /* mftTracks*/ ,
2983+ soa::SmallGroups<aod::BestCollisionsFwd> const & reassociated2dMftTracks)
2984+ {
2985+ mixCollisionsReassociatedMftTracks (collisions, CorrelationContainer::kCFStepReconstructed , tracks, reassociated2dMftTracks, perColTracks, perColReassociated2dTracks, mixedEvent, true );
2986+ }
2987+ PROCESS_SWITCH (HfTaskFlow, processMixedTpcMftChChNonAmbiguous, " DATA : Process mixed-event correlations for TPC-MFT h-h case" , false );
2988+
28602989 // =====================================
28612990 // DATA : process mixed event correlations: TPC-MFT HF-h case for D0
28622991 // =====================================
@@ -2980,6 +3109,33 @@ struct HfTaskFlow {
29803109 }
29813110 PROCESS_SWITCH (HfTaskFlow, processMixedMftFt0aChCh, " DATA : Process mixed-event correlations for MFT-FT0-A h-h case" , false );
29823111
3112+ void processMixedMftFt0aChChReassociated2d (FilteredCollisionsWSelMult const & collisions,
3113+ FilteredMftTracks const & /* mftTracks*/ ,
3114+ soa::SmallGroups<aod::BestCollisionsFwd> const & reassociated2dMftTracks,
3115+ aod::FT0s const & ft0s)
3116+ {
3117+ mixCollisionsReassociatedMftTracks (collisions, CorrelationContainer::kCFStepReconstructed , reassociated2dMftTracks, ft0s, perColReassociated2dTracks, perColReassociated2dTracks, mixedEvent, false );
3118+ }
3119+ PROCESS_SWITCH (HfTaskFlow, processMixedMftFt0aChChReassociated2d, " DATA : Process mixed-event correlations for MFT-FT0-A h-h case" , false );
3120+
3121+ void processMixedMftFt0aChChReassociated3d (FilteredCollisionsWSelMult const & collisions,
3122+ FilteredMftTracks const & /* mftTracks*/ ,
3123+ soa::SmallGroups<aod::BestCollisionsFwd3d> const & reassociated3dMftTracks,
3124+ aod::FT0s const & ft0s)
3125+ {
3126+ mixCollisionsReassociatedMftTracks (collisions, CorrelationContainer::kCFStepReconstructed , reassociated3dMftTracks, ft0s, perColReassociated3dTracks, perColReassociated3dTracks, mixedEvent, false );
3127+ }
3128+ PROCESS_SWITCH (HfTaskFlow, processMixedMftFt0aChChReassociated3d, " DATA : Process mixed-event correlations for MFT-FT0-A h-h case" , false );
3129+
3130+ void processMixedMftFt0aChChNonAmbiguous (FilteredCollisionsWSelMult const & collisions,
3131+ FilteredMftTracks const & /* mftTracks*/ ,
3132+ soa::SmallGroups<aod::BestCollisionsFwd> const & reassociated2dMftTracks,
3133+ aod::FT0s const & ft0s)
3134+ {
3135+ mixCollisionsReassociatedMftTracks (collisions, CorrelationContainer::kCFStepReconstructed , reassociated2dMftTracks, ft0s, perColReassociated2dTracks, perColReassociated2dTracks, mixedEvent, true );
3136+ }
3137+ PROCESS_SWITCH (HfTaskFlow, processMixedMftFt0aChChNonAmbiguous, " DATA : Process mixed-event correlations for MFT-FT0-A h-h case" , false );
3138+
29833139 // =====================================
29843140 // DATA : process mixed event correlations: TPC-FT0C ch part. - ch. part. case
29853141 // =====================================
0 commit comments