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
3 changes: 3 additions & 0 deletions PWGCF/Femto/Core/dataTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ using TwoTrackResonanceType = uint16_t;
using CascadeMaskType = uint16_t;
using CascadeType = uint16_t;

// datatype for particles
using ParticleType = uint16_t;

} // namespace femtodatatypes

} // namespace o2::aod
Expand Down
10 changes: 6 additions & 4 deletions PWGCF/Femto/Core/femtoUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@

#include <cmath>
#include <cstdint>
#include <experimental/type_traits>
#include <optional>
#include <unordered_map>
#include <utility>

namespace o2::analysis::femto
{
Expand Down Expand Up @@ -194,10 +196,10 @@ inline bool enableTable(const char* tableName, int userSetting, o2::framework::I
}

template <typename T>
inline int sign(T value)
{
return (value > 0) - (value < 0); // Returns 1 for positive, -1 for negative, 0 for zero
}
using HasMass = decltype(std::declval<T&>().mass());

template <typename T>
using HasSign = decltype(std::declval<T&>().sign());

}; // namespace utils
}; // namespace o2::analysis::femto
Expand Down
21 changes: 21 additions & 0 deletions PWGCF/Femto/Core/modes.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,27 @@ enum class MomentumType : o2::aod::femtodatatypes::MomentumType {
kPTpc, // momentum at inner wall of tpc
};

enum class Particle : o2::aod::femtodatatypes::ParticleType {
kTrack,
kTwoTrackResonance,
kV0,
kKink,
kCascade,
};

constexpr bool hasMass(Particle p)
{
switch (p) {
case Particle::kV0:
case Particle::kTwoTrackResonance:
case Particle::kKink:
case Particle::kCascade:
return true;
default:
return false;
}
}

enum class Track : o2::aod::femtodatatypes::TrackType {
kPrimaryTrack,
kV0Daughter,
Expand Down
176 changes: 94 additions & 82 deletions PWGCF/Femto/Core/pairBuilder.h

Large diffs are not rendered by default.

337 changes: 256 additions & 81 deletions PWGCF/Femto/Core/pairHistManager.h

Large diffs are not rendered by default.

30 changes: 18 additions & 12 deletions PWGCF/Femto/Core/pairProcessHelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,20 +45,17 @@ void processSameEvent(T1 const& SliceParticle,
T7& rng,
bool randomize)
{
// Fill single particle histograms
for (auto const& part : SliceParticle) {
ParticleHistManager.fill(part, TrackTable);
}
std::uniform_real_distribution<float> dist(0.f, 1.f);
for (auto const& [p1, p2] : o2::soa::combinations(o2::soa::CombinationsStrictlyUpperIndexPolicy(SliceParticle, SliceParticle))) {
// Close pair rejection
if (CprManager.isActivated()) {
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
}
CprManager.fill();
// Randomize pair order if enabled
float threshold = 0.5f;
bool swapPair = randomize ? (dist(rng) > threshold) : false;
Expand All @@ -67,7 +64,10 @@ void processSameEvent(T1 const& SliceParticle,
} else {
PairHistManager.setPair(p1, p2, Collision);
}
PairHistManager.fill();
if (PairHistManager.checkPairCuts()) {
CprManager.fill();
PairHistManager.fill();
}
}
}

Expand Down Expand Up @@ -110,9 +110,11 @@ void processSameEvent(T1 const& SliceParticle1,
continue;
}
}
CprManager.fill();
PairHistManager.setPair(p1, p2, Collision);
PairHistManager.fill();
if (PairHistManager.checkPairCuts()) {
CprManager.fill();
PairHistManager.fill();
}
}
}

Expand Down Expand Up @@ -158,9 +160,11 @@ void processMixedEvent(T1& Collisions,
continue;
}
}
CprManager.fill();
PairHistManager.setPair(p1, p2, collision1);
PairHistManager.fill();
PairHistManager.setPair(p1, p2, collision1, collision2);
if (PairHistManager.checkPairCuts()) {
CprManager.fill();
PairHistManager.fill();
}
}
}
}
Expand Down Expand Up @@ -209,9 +213,11 @@ void processMixedEvent(T1& Collisions,
continue;
}
}
CprManager.fill();
PairHistManager.setPair(p1, p2, collision1);
PairHistManager.fill();
PairHistManager.setPair(p1, p2, collision1, collision2);
if (PairHistManager.checkPairCuts()) {
CprManager.fill();
PairHistManager.fill();
}
}
}
}
Expand Down
11 changes: 6 additions & 5 deletions PWGCF/Femto/Tasks/femtoPairTrackCascade.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ struct FemtoPairTrackCascade {

// setup pairs
pairhistmanager::ConfPairBinning confPairBinning;
pairhistmanager::ConfPairCuts confPairCuts;

pairbuilder::PairTrackCascadeBuilder<
trackhistmanager::PrefixTrack1,
Expand Down Expand Up @@ -158,21 +159,21 @@ struct FemtoPairTrackCascade {
auto bachelorHistSpec = trackhistmanager::makeTrackHistSpecMap(confBachelorBinning);
auto posDauSpec = trackhistmanager::makeTrackHistSpecMap(confPosDauBinning);
auto negDauSpec = trackhistmanager::makeTrackHistSpecMap(confNegDauBinning);
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confXiBinning);
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
auto cprHistSpec = closepairrejection::makeCprHistSpecMap(confCpr);

// setup for xis
if (doprocessXiSameEvent || doprocessXiMixedEvent) {
auto xiHistSpec = cascadehistmanager::makeCascadeHistSpecMap(confXiBinning);
auto pairTrackXiHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confXiBinning);
pairTrackXiBuilder.init(&hRegistry, trackSelection, xiSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, xiHistSpec, bachelorHistSpec, posDauSpec, negDauSpec, pairTrackXiHistSpec, cprHistSpec);
auto pairTrackXiHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackXiBuilder.init(&hRegistry, trackSelection, xiSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, xiHistSpec, bachelorHistSpec, posDauSpec, negDauSpec, pairTrackXiHistSpec, cprHistSpec);
}

// setup for omegas
if (doprocessOmegaSameEvent || doprocessOmegaMixedEvent) {
auto omegaHistSpec = cascadehistmanager::makeCascadeHistSpecMap(confOmegaBinning);
auto pairTrackOmegaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confOmegaBinning);
pairTrackOmegaBuilder.init(&hRegistry, trackSelection, omegaSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, omegaHistSpec, bachelorHistSpec, posDauSpec, negDauSpec, pairTrackOmegaHistSpec, cprHistSpec);
auto pairTrackOmegaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackOmegaBuilder.init(&hRegistry, trackSelection, omegaSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, omegaHistSpec, bachelorHistSpec, posDauSpec, negDauSpec, pairTrackOmegaHistSpec, cprHistSpec);
}

if (((doprocessXiSameEvent || doprocessXiMixedEvent) + (doprocessOmegaSameEvent || doprocessOmegaMixedEvent)) > 1) {
Expand Down
5 changes: 3 additions & 2 deletions PWGCF/Femto/Tasks/femtoPairTrackKink.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ struct FemtoPairTrackKink {

// setup pairs
pairhistmanager::ConfPairBinning confPairBinning;
pairhistmanager::ConfPairCuts confPairCuts;

pairbuilder::PairTrackKinkBuilder<
trackhistmanager::PrefixTrack1,
Expand Down Expand Up @@ -124,14 +125,14 @@ struct FemtoPairTrackKink {
auto colHistSpec = colhistmanager::makeColHistSpecMap(confCollisionBinning);
auto trackHistSpec = trackhistmanager::makeTrackHistSpecMap(confTrackBinning);
auto chaDauSpec = trackhistmanager::makeTrackHistSpecMap(confChaDauBinning);
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confSigmaBinning);
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
auto cprHistSpec = closepairrejection::makeCprHistSpecMap(confCpr);

// setup for sigma
// if (doprocessSigmaSameEvent || doprocessSigmaMixedEvent) {
if (doprocessSigmaSameEvent) {
auto sigmaHistSpec = kinkhistmanager::makeKinkHistSpecMap(confSigmaBinning);
pairTrackSigmaBuilder.init(&hRegistry, trackSelection, sigmaSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, sigmaHistSpec, chaDauSpec, pairHistSpec, cprHistSpec);
pairTrackSigmaBuilder.init(&hRegistry, trackSelection, sigmaSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, sigmaHistSpec, chaDauSpec, pairHistSpec, cprHistSpec);
}
};

Expand Down
6 changes: 4 additions & 2 deletions PWGCF/Femto/Tasks/femtoPairTrackTrack.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ struct FemtoPairTrackTrack {

// setup pairs
pairhistmanager::ConfPairBinning confPairBinning;
pairhistmanager::ConfPairCuts confPairCuts;

closepairrejection::ConfCpr confCpr;

pairbuilder::PairTrackTrackBuilder<
Expand Down Expand Up @@ -111,10 +113,10 @@ struct FemtoPairTrackTrack {
auto colHistSpec = colhistmanager::makeColHistSpecMap(confCollisionBinning);
auto trackHistSpec1 = trackhistmanager::makeTrackHistSpecMap(confTrackBinning1);
auto trackHistSpec2 = trackhistmanager::makeTrackHistSpecMap(confTrackBinning2);
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning1, confTrackBinning2);
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
auto cprHistSpec = closepairrejection::makeCprHistSpecMap(confCpr);

pairTrackTrackBuilder.init(&hRegistry, trackSelections1, trackSelections2, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec1, trackHistSpec2, pairHistSpec, cprHistSpec);
pairTrackTrackBuilder.init(&hRegistry, trackSelections1, trackSelections2, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec1, trackHistSpec2, pairHistSpec, cprHistSpec);
};

void processSameEvent(FilteredCollision const& col, Tracks const& tracks)
Expand Down
13 changes: 7 additions & 6 deletions PWGCF/Femto/Tasks/femtoPairTrackTwoTrackResonance.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ struct FemtoPairTrackTwoTrackResonance {

// setup pairs
pairhistmanager::ConfPairBinning confPairBinning;
pairhistmanager::ConfPairCuts confPairCuts;

// setup for track-phi pairs
pairbuilder::PairTrackTwoTrackResonanceBuilder<
Expand Down Expand Up @@ -184,22 +185,22 @@ struct FemtoPairTrackTwoTrackResonance {
// setup for phi
if (doprocessPhiSameEvent || doprocessPhiMixedEvent) {
auto phiHistSpec = twotrackresonancehistmanager::makeTwoTrackResonanceHistSpecMap(confPhiBinning);
auto pairTrackPhiHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confPhiBinning);
pairTrackPhiBuilder.init(&hRegistry, trackSelection, phiSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, phiHistSpec, posDauSpec, negDauSpec, pairTrackPhiHistSpec, cprHistSpec);
auto pairTrackPhiHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackPhiBuilder.init(&hRegistry, trackSelection, phiSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, phiHistSpec, posDauSpec, negDauSpec, pairTrackPhiHistSpec, cprHistSpec);
}

// setup for kstar0
if (doprocessKstar0SameEvent || doprocessKstar0MixedEvent) {
auto kstar0HistSpec = twotrackresonancehistmanager::makeTwoTrackResonanceHistSpecMap(confKstar0Binning);
auto pairTrackKstar0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confKstar0Binning);
pairTrackKstar0Builder.init(&hRegistry, trackSelection, kstar0Selection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, kstar0HistSpec, posDauSpec, negDauSpec, pairTrackKstar0HistSpec, cprHistSpec);
auto pairTrackKstar0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackKstar0Builder.init(&hRegistry, trackSelection, kstar0Selection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, kstar0HistSpec, posDauSpec, negDauSpec, pairTrackKstar0HistSpec, cprHistSpec);
}

// setup for kstar0
if (doprocessRho0SameEvent || doprocessRho0MixedEvent) {
auto rho0HistSpec = twotrackresonancehistmanager::makeTwoTrackResonanceHistSpecMap(confRho0Binning);
auto pairTrackRho0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confRho0Binning);
pairTrackRho0Builder.init(&hRegistry, trackSelection, rho0Selection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, rho0HistSpec, posDauSpec, negDauSpec, pairTrackRho0HistSpec, cprHistSpec);
auto pairTrackRho0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackRho0Builder.init(&hRegistry, trackSelection, rho0Selection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, rho0HistSpec, posDauSpec, negDauSpec, pairTrackRho0HistSpec, cprHistSpec);
}
};

Expand Down
9 changes: 5 additions & 4 deletions PWGCF/Femto/Tasks/femtoPairTrackV0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ struct FemtoPairTrackV0 {

// setup pairs
pairhistmanager::ConfPairBinning confPairBinning;
pairhistmanager::ConfPairCuts confPairCuts;

pairbuilder::PairTrackV0Builder<
trackhistmanager::PrefixTrack1,
Expand Down Expand Up @@ -155,15 +156,15 @@ struct FemtoPairTrackV0 {
// setup for lambda
if (doprocessLambdaSameEvent || doprocessLambdaMixedEvent) {
auto lambdaHistSpec = v0histmanager::makeV0HistSpecMap(confLambdaBinning);
auto pairTrackLambdaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confLambdaBinning);
pairTrackLambdaBuilder.init(&hRegistry, trackSelection, lambdaSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, lambdaHistSpec, posDauSpec, negDauSpec, pairTrackLambdaHistSpec, cprHistSpec);
auto pairTrackLambdaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackLambdaBuilder.init(&hRegistry, trackSelection, lambdaSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, lambdaHistSpec, posDauSpec, negDauSpec, pairTrackLambdaHistSpec, cprHistSpec);
}

// setup for k0short
if (doprocessK0shortSameEvent || doprocessK0shortMixedEvent) {
auto k0shortHistSpec = v0histmanager::makeV0HistSpecMap(confK0shortBinning);
auto pairTrackK0shortHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confLambdaBinning);
pairTrackK0shortBuilder.init(&hRegistry, trackSelection, lambdaSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, k0shortHistSpec, posDauSpec, negDauSpec, pairTrackK0shortHistSpec, cprHistSpec);
auto pairTrackK0shortHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairTrackK0shortBuilder.init(&hRegistry, trackSelection, lambdaSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, k0shortHistSpec, posDauSpec, negDauSpec, pairTrackK0shortHistSpec, cprHistSpec);
}

if (((doprocessLambdaSameEvent || doprocessLambdaMixedEvent) + (doprocessK0shortSameEvent || doprocessK0shortMixedEvent)) > 1) {
Expand Down
9 changes: 5 additions & 4 deletions PWGCF/Femto/Tasks/femtoPairV0V0.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ struct FemtoPairV0V0 {

// setup pairs
pairhistmanager::ConfPairBinning confPairBinning;
pairhistmanager::ConfPairCuts confPairCuts;

pairbuilder::PairV0V0Builder<
v0histmanager::PrefixLambda1,
Expand Down Expand Up @@ -154,15 +155,15 @@ struct FemtoPairV0V0 {
// setup for lambda
if (doprocessLambdaLambdaSameEvent || doprocessLambdaLambdaMixedEvent) {
auto lambdaHistSpec = v0histmanager::makeV0HistSpecMap(confLambdaBinning);
auto pairLambdaLambdaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confLambdaBinning, confLambdaBinning);
pairLambdaLambdaBuilder.init(&hRegistry, lambdaSelection, lambdaSelection, confCpr, confMixing, confPairBinning, colHistSpec, lambdaHistSpec, lambdaHistSpec, posDauSpec, negDauSpec, pairLambdaLambdaHistSpec, cprHistSpec);
auto pairLambdaLambdaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairLambdaLambdaBuilder.init(&hRegistry, lambdaSelection, lambdaSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, lambdaHistSpec, lambdaHistSpec, posDauSpec, negDauSpec, pairLambdaLambdaHistSpec, cprHistSpec);
}

// setup for k0short
if (doprocessK0shortK0shortSameEvent || doprocessK0shortK0shortMixedEvent) {
auto k0shortHistSpec = v0histmanager::makeV0HistSpecMap(confK0shortBinning);
auto pairLambdaLambdaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confLambdaBinning, confLambdaBinning);
pairLambdaLambdaBuilder.init(&hRegistry, k0shortSelection, k0shortSelection, confCpr, confMixing, confPairBinning, colHistSpec, k0shortHistSpec, k0shortHistSpec, posDauSpec, negDauSpec, pairLambdaLambdaHistSpec, cprHistSpec);
auto pairLambdaLambdaHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
pairLambdaLambdaBuilder.init(&hRegistry, k0shortSelection, k0shortSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, k0shortHistSpec, k0shortHistSpec, posDauSpec, negDauSpec, pairLambdaLambdaHistSpec, cprHistSpec);
}

if (((doprocessLambdaLambdaSameEvent || doprocessLambdaLambdaMixedEvent) + (doprocessK0shortK0shortSameEvent || doprocessK0shortK0shortMixedEvent)) > 1) {
Expand Down
Loading