diff --git a/Tutorials/src/tracksCombinations.cxx b/Tutorials/src/tracksCombinations.cxx index 67ed35d2307..a61d8daf5aa 100644 --- a/Tutorials/src/tracksCombinations.cxx +++ b/Tutorials/src/tracksCombinations.cxx @@ -88,6 +88,31 @@ struct ConfigurableBinnedCollisionCombinations { } }; +struct BinnedTrackPartitionsCombinations { + std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; + std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; + ColumnBinningPolicy trackBinning{{xBins, yBins}, true}; + Configurable philow{"phiLow", 1.0f, "lowest phi"}; + + void process(aod::Tracks const& tracks) + { + Partition leftPhi = aod::track::phi < philow; + Partition rightPhi = aod::track::phi >= philow; + leftPhi.bindTable(tracks); + rightPhi.bindTable(tracks); + + int count = 0; + // Strictly upper tracks binned by x and y position + for (auto& [t0, t1] : selfCombinations(trackBinning, 5, -1, leftPhi, rightPhi)) { + int bin = trackBinning.getBin({t0.x(), t0.y()}); + LOGF(info, "Tracks bin: %d pair: %d (%f, %f, %f) phi %f, %d (%f, %f, %f) phi %f", bin, t0.index(), t0.x(), t0.y(), t0.z(), t0.phi(), t1.index(), t1.x(), t1.y(), t1.z(), t1.phi()); + count++; + if (count > 100) + break; + } + } +}; + struct HashTask { std::vector xBins{-0.064f, -0.062f, -0.060f, 0.066f, 0.068f, 0.070f, 0.072}; std::vector yBins{-0.320f, -0.301f, -0.300f, 0.330f, 0.340f, 0.350f, 0.360}; @@ -149,6 +174,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), };