Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PWGCF/FemtoDream/femtoDreamPairTaskTrackTrack.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ struct femtoDreamPairTaskTrackTrack {
ConfigurableAxis CfgMultBins{"CfgMultBins", {VARIABLE_WIDTH, 0.0f, 20.0f, 40.0f, 60.0f, 80.0f, 100.0f, 200.0f, 99999.f}, "Mixing bins - multiplicity"};
ConfigurableAxis CfgVtxBins{"CfgVtxBins", {VARIABLE_WIDTH, -10.0f, -8.f, -6.f, -4.f, -2.f, 0.f, 2.f, 4.f, 6.f, 8.f, 10.f}, "Mixing bins - z-vertex"};

BinningPolicy<aod::collision::PosZ, aod::femtodreamcollision::MultV0M> colBinning{{CfgVtxBins, CfgMultBins}, true};
ColumnBinningPolicy<aod::collision::PosZ, aod::femtodreamcollision::MultV0M> colBinning{{CfgVtxBins, CfgMultBins}, true};

ConfigurableAxis CfgkstarBins{"CfgkstarBins", {1500, 0., 6.}, "binning kstar"};
ConfigurableAxis CfgkTBins{"CfgkTBins", {150, 0., 9.}, "binning kT"};
Expand Down
2 changes: 1 addition & 1 deletion PWGCF/FemtoDream/femtoDreamPairTaskTrackV0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ struct femtoDreamPairTaskTrackV0 {
void processMixedEvent(o2::aod::FemtoDreamCollisions& cols,
o2::aod::FemtoDreamParticles& parts)
{
BinningPolicy<aod::collision::PosZ, aod::femtodreamcollision::MultV0M> colBinning{{CfgVtxBins, CfgMultBins}, true};
ColumnBinningPolicy<aod::collision::PosZ, aod::femtodreamcollision::MultV0M> colBinning{{CfgVtxBins, CfgMultBins}, true};

for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {

Expand Down
2 changes: 1 addition & 1 deletion PWGCF/Tasks/correlations.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ struct CorrelationTask {

using aodCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms>>;
using derivedCollisions = soa::Filtered<aod::CFCollisions>;
using BinningType = BinningPolicy<aod::collision::PosZ, aod::cent::CentRun2V0M>;
using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentRun2V0M>;

void init(o2::framework::InitContext&)
{
Expand Down
59 changes: 49 additions & 10 deletions Tutorials/src/eventMixing.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ DECLARE_SOA_TABLE(Hashes, "AOD", "HASH", hash::Bin);
struct MixedEvents {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aod::Collisions, aod::Tracks, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -68,7 +68,7 @@ struct MixedEvents {
struct MixedEventsInsideProcess {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)

void process(aod::Collisions& collisions, aod::Tracks& tracks)
Expand Down Expand Up @@ -103,7 +103,7 @@ struct MixedEventsFilteredTracks {

std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aod::Collisions, myTracks, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -134,7 +134,7 @@ struct MixedEventsJoinedCollisions {
using aodCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms>;
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aodCollisions, aod::Tracks, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -165,7 +165,7 @@ struct MixedEventsDynamicColumns {
using aodCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::Mults>;
std::vector<double> zBins{7, -7, 7};
std::vector<double> multBins{VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 100.1};
using BinningType = BinningPolicy<aod::collision::PosZ, aod::mult::MultFV0M<aod::mult::MultFV0A, aod::mult::MultFV0C>>;
using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::mult::MultFV0M<aod::mult::MultFV0A, aod::mult::MultFV0C>>;
BinningType corrBinning{{zBins, multBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aodCollisions, aod::Tracks, BinningType> pair{corrBinning, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -195,7 +195,7 @@ struct MixedEventsDynamicColumns {
struct MixedEventsVariousKinds {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
Pair<aod::Collisions, aod::Tracks, aod::V0s, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -228,7 +228,7 @@ struct MixedEventsTriple {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
std::vector<double> zBins{7, -7, 7};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY, aod::collision::PosZ>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY, aod::collision::PosZ>;
BinningType binningOnPositions{{xBins, yBins, zBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindTriple<aod::Collisions, aod::Tracks, BinningType> triple{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -259,7 +259,7 @@ struct MixedEventsTripleVariousKinds {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
std::vector<double> zBins{7, -7, 7};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY, aod::collision::PosZ>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY, aod::collision::PosZ>;
BinningType binningOnPositions{{xBins, yBins, zBins}, true}; // true is for 'ignore overflows' (true by default)
Triple<aod::Collisions, aod::Tracks, aod::V0s, aod::Tracks, BinningType> triple{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -356,7 +356,6 @@ struct MixedEventsWithHashTask {
};

struct MixedEventsPartitionedTracks {

Filter trackFilter = (aod::track::x > -0.8f) && (aod::track::x < 0.8f) && (aod::track::y > 1.0f);
using myTracks = soa::Filtered<aod::Tracks>;

Expand All @@ -365,7 +364,7 @@ struct MixedEventsPartitionedTracks {

std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aod::Collisions, myTracks, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -400,6 +399,45 @@ struct MixedEventsPartitionedTracks {
}
};

struct MixedEventsLambdaBinning {
ConfigurableAxis axisVertex{"axisVertex", {14, -7, 7}, "vertex axis for histograms"};
ConfigurableAxis axisMultiplicity{"axisMultiplicity", {VARIABLE_WIDTH, 0.0, 2.750, 5.250, 7.750, 12.750, 17.750, 22.750, 27.750, 32.750, 37.750, 42.750, 47.750, 52.750, 57.750, 62.750, 67.750, 72.750, 77.750, 82.750, 87.750, 92.750, 97.750, 250.1}, "multiplicity axis for histograms"};

void process(aod::Collisions& collisions, aod::Tracks& tracks)
{
LOGF(info, "Input data Collisions %d, Tracks %d ", collisions.size(), tracks.size());

auto getTracksSize =
[&tracks](aod::Collision const& col) {
auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, col.globalIndex()); // it's cached, so slicing/grouping happens only once
return associatedTracks.size();
};

using BinningType = FlexibleBinningPolicy<std::tuple<decltype(getTracksSize)>, aod::collision::PosZ, decltype(getTracksSize)>;
BinningType binningWithLambda{{getTracksSize}, {axisVertex, axisMultiplicity}, true};

auto tracksTuple = std::make_tuple(tracks);
SameKindPair<aod::Collisions, aod::Tracks, BinningType> pair{binningWithLambda, 5, -1, collisions, tracksTuple}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

int count = 0;
for (auto& [c1, tracks1, c2, tracks2] : pair) {
LOGF(info, "Mixed event collisions: (%d, %d) z: (%.3f, %.3f), tracks size (%d, %d)", c1.globalIndex(), c2.globalIndex(), c1.posZ(), c2.posZ(), tracks1.size(), tracks2.size());
count++;
if (count == 100)
break;

// Example of using tracks from mixed events -- iterate over all track pairs from the two collisions
int trackCount = 0;
for (auto& [t1, t2] : combinations(CombinationsFullIndexPolicy(tracks1, tracks2))) {
LOGF(info, "Mixed event tracks pair: (%d, %d) from events (%d, %d), track event: (%d, %d)", t1.index(), t2.index(), c1.index(), c2.index(), t1.collision().index(), t2.collision().index());
trackCount++;
if (trackCount == 10)
break;
}
}
}
};

WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
{
return WorkflowSpec{
Expand All @@ -414,5 +452,6 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
adaptAnalysisTask<HashTask>(cfgc),
adaptAnalysisTask<MixedEventsWithHashTask>(cfgc),
adaptAnalysisTask<MixedEventsPartitionedTracks>(cfgc),
adaptAnalysisTask<MixedEventsLambdaBinning>(cfgc),
};
}
6 changes: 3 additions & 3 deletions Tutorials/src/eventMixingValidation.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ struct MixedEventsEmptyTables {

std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aod::Collisions, myTracks, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -62,7 +62,7 @@ struct MixedEventsEmptyTables {
struct MixedEventsJoinedTracks {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
SameKindPair<aod::Collisions, aod::FullTracks, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored

Expand Down Expand Up @@ -93,7 +93,7 @@ struct MixedEventsJoinedTracks {
// struct MixedEventsBadSubscription {
// std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
// std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
// using BinningType = BinningPolicy<aod::collision::PosX, aod::collision::PosY>;
// using BinningType = ColumnBinningPolicy<aod::collision::PosX, aod::collision::PosY>;
// BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
// SameKindPair<aod::Collisions, aod::Cascades, BinningType> pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored
//
Expand Down
4 changes: 2 additions & 2 deletions Tutorials/src/tracksCombinations.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ struct TrackCombinations {
struct BinnedTrackCombinations {
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
BinningPolicy<aod::track::X, aod::track::Y> trackBinning{{xBins, yBins}, true};
ColumnBinningPolicy<aod::track::X, aod::track::Y> trackBinning{{xBins, yBins}, true};

void process(aod::Tracks const& tracks)
{
Expand All @@ -73,7 +73,7 @@ struct ConfigurableBinnedCollisionCombinations {

void process(soa::Join<aod::Collisions, aod::Mults> const& collisions)
{
using BinningType = BinningPolicy<aod::collision::PosZ, aod::mult::MultFV0M<aod::mult::MultFV0A, aod::mult::MultFV0C>>;
using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::mult::MultFV0M<aod::mult::MultFV0A, aod::mult::MultFV0C>>;
BinningType colBinning{{axisVertex, axisMultiplicity}, true};

int count = 0;
Expand Down