Skip to content

Commit 15210ce

Browse files
authored
[PWGCF] Update femto framework (#13586)
1 parent b788e24 commit 15210ce

12 files changed

+428
-202
lines changed

PWGCF/Femto/Core/dataTypes.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ using TwoTrackResonanceType = uint16_t;
5050
using CascadeMaskType = uint16_t;
5151
using CascadeType = uint16_t;
5252

53+
// datatype for particles
54+
using ParticleType = uint16_t;
55+
5356
} // namespace femtodatatypes
5457

5558
} // namespace o2::aod

PWGCF/Femto/Core/femtoUtils.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@
2727

2828
#include <cmath>
2929
#include <cstdint>
30+
#include <experimental/type_traits>
3031
#include <optional>
3132
#include <unordered_map>
33+
#include <utility>
3234

3335
namespace o2::analysis::femto
3436
{
@@ -194,10 +196,10 @@ inline bool enableTable(const char* tableName, int userSetting, o2::framework::I
194196
}
195197

196198
template <typename T>
197-
inline int sign(T value)
198-
{
199-
return (value > 0) - (value < 0); // Returns 1 for positive, -1 for negative, 0 for zero
200-
}
199+
using HasMass = decltype(std::declval<T&>().mass());
200+
201+
template <typename T>
202+
using HasSign = decltype(std::declval<T&>().sign());
201203

202204
}; // namespace utils
203205
}; // namespace o2::analysis::femto

PWGCF/Femto/Core/modes.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,27 @@ enum class MomentumType : o2::aod::femtodatatypes::MomentumType {
7171
kPTpc, // momentum at inner wall of tpc
7272
};
7373

74+
enum class Particle : o2::aod::femtodatatypes::ParticleType {
75+
kTrack,
76+
kTwoTrackResonance,
77+
kV0,
78+
kKink,
79+
kCascade,
80+
};
81+
82+
constexpr bool hasMass(Particle p)
83+
{
84+
switch (p) {
85+
case Particle::kV0:
86+
case Particle::kTwoTrackResonance:
87+
case Particle::kKink:
88+
case Particle::kCascade:
89+
return true;
90+
default:
91+
return false;
92+
}
93+
}
94+
7495
enum class Track : o2::aod::femtodatatypes::TrackType {
7596
kPrimaryTrack,
7697
kV0Daughter,

PWGCF/Femto/Core/pairBuilder.h

Lines changed: 94 additions & 82 deletions
Large diffs are not rendered by default.

PWGCF/Femto/Core/pairHistManager.h

Lines changed: 256 additions & 81 deletions
Large diffs are not rendered by default.

PWGCF/Femto/Core/pairProcessHelpers.h

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,17 @@ void processSameEvent(T1 const& SliceParticle,
4545
T7& rng,
4646
bool randomize)
4747
{
48-
// Fill single particle histograms
4948
for (auto const& part : SliceParticle) {
5049
ParticleHistManager.fill(part, TrackTable);
5150
}
5251
std::uniform_real_distribution<float> dist(0.f, 1.f);
5352
for (auto const& [p1, p2] : o2::soa::combinations(o2::soa::CombinationsStrictlyUpperIndexPolicy(SliceParticle, SliceParticle))) {
54-
// Close pair rejection
5553
if (CprManager.isActivated()) {
5654
CprManager.setPair(p1, p2, TrackTable);
5755
if (CprManager.isClosePair()) {
5856
continue;
5957
}
6058
}
61-
CprManager.fill();
6259
// Randomize pair order if enabled
6360
float threshold = 0.5f;
6461
bool swapPair = randomize ? (dist(rng) > threshold) : false;
@@ -67,7 +64,10 @@ void processSameEvent(T1 const& SliceParticle,
6764
} else {
6865
PairHistManager.setPair(p1, p2, Collision);
6966
}
70-
PairHistManager.fill();
67+
if (PairHistManager.checkPairCuts()) {
68+
CprManager.fill();
69+
PairHistManager.fill();
70+
}
7171
}
7272
}
7373

@@ -110,9 +110,11 @@ void processSameEvent(T1 const& SliceParticle1,
110110
continue;
111111
}
112112
}
113-
CprManager.fill();
114113
PairHistManager.setPair(p1, p2, Collision);
115-
PairHistManager.fill();
114+
if (PairHistManager.checkPairCuts()) {
115+
CprManager.fill();
116+
PairHistManager.fill();
117+
}
116118
}
117119
}
118120

@@ -158,9 +160,11 @@ void processMixedEvent(T1& Collisions,
158160
continue;
159161
}
160162
}
161-
CprManager.fill();
162-
PairHistManager.setPair(p1, p2, collision1);
163-
PairHistManager.fill();
163+
PairHistManager.setPair(p1, p2, collision1, collision2);
164+
if (PairHistManager.checkPairCuts()) {
165+
CprManager.fill();
166+
PairHistManager.fill();
167+
}
164168
}
165169
}
166170
}
@@ -209,9 +213,11 @@ void processMixedEvent(T1& Collisions,
209213
continue;
210214
}
211215
}
212-
CprManager.fill();
213-
PairHistManager.setPair(p1, p2, collision1);
214-
PairHistManager.fill();
216+
PairHistManager.setPair(p1, p2, collision1, collision2);
217+
if (PairHistManager.checkPairCuts()) {
218+
CprManager.fill();
219+
PairHistManager.fill();
220+
}
215221
}
216222
}
217223
}

PWGCF/Femto/Tasks/femtoPairTrackCascade.cxx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ struct FemtoPairTrackCascade {
9292

9393
// setup pairs
9494
pairhistmanager::ConfPairBinning confPairBinning;
95+
pairhistmanager::ConfPairCuts confPairCuts;
9596

9697
pairbuilder::PairTrackCascadeBuilder<
9798
trackhistmanager::PrefixTrack1,
@@ -158,21 +159,21 @@ struct FemtoPairTrackCascade {
158159
auto bachelorHistSpec = trackhistmanager::makeTrackHistSpecMap(confBachelorBinning);
159160
auto posDauSpec = trackhistmanager::makeTrackHistSpecMap(confPosDauBinning);
160161
auto negDauSpec = trackhistmanager::makeTrackHistSpecMap(confNegDauBinning);
161-
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confXiBinning);
162+
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
162163
auto cprHistSpec = closepairrejection::makeCprHistSpecMap(confCpr);
163164

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

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

178179
if (((doprocessXiSameEvent || doprocessXiMixedEvent) + (doprocessOmegaSameEvent || doprocessOmegaMixedEvent)) > 1) {

PWGCF/Femto/Tasks/femtoPairTrackKink.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ struct FemtoPairTrackKink {
8484

8585
// setup pairs
8686
pairhistmanager::ConfPairBinning confPairBinning;
87+
pairhistmanager::ConfPairCuts confPairCuts;
8788

8889
pairbuilder::PairTrackKinkBuilder<
8990
trackhistmanager::PrefixTrack1,
@@ -124,14 +125,14 @@ struct FemtoPairTrackKink {
124125
auto colHistSpec = colhistmanager::makeColHistSpecMap(confCollisionBinning);
125126
auto trackHistSpec = trackhistmanager::makeTrackHistSpecMap(confTrackBinning);
126127
auto chaDauSpec = trackhistmanager::makeTrackHistSpecMap(confChaDauBinning);
127-
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confSigmaBinning);
128+
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
128129
auto cprHistSpec = closepairrejection::makeCprHistSpecMap(confCpr);
129130

130131
// setup for sigma
131132
// if (doprocessSigmaSameEvent || doprocessSigmaMixedEvent) {
132133
if (doprocessSigmaSameEvent) {
133134
auto sigmaHistSpec = kinkhistmanager::makeKinkHistSpecMap(confSigmaBinning);
134-
pairTrackSigmaBuilder.init(&hRegistry, trackSelection, sigmaSelection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, sigmaHistSpec, chaDauSpec, pairHistSpec, cprHistSpec);
135+
pairTrackSigmaBuilder.init(&hRegistry, trackSelection, sigmaSelection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, sigmaHistSpec, chaDauSpec, pairHistSpec, cprHistSpec);
135136
}
136137
};
137138

PWGCF/Femto/Tasks/femtoPairTrackTrack.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ struct FemtoPairTrackTrack {
7676

7777
// setup pairs
7878
pairhistmanager::ConfPairBinning confPairBinning;
79+
pairhistmanager::ConfPairCuts confPairCuts;
80+
7981
closepairrejection::ConfCpr confCpr;
8082

8183
pairbuilder::PairTrackTrackBuilder<
@@ -111,10 +113,10 @@ struct FemtoPairTrackTrack {
111113
auto colHistSpec = colhistmanager::makeColHistSpecMap(confCollisionBinning);
112114
auto trackHistSpec1 = trackhistmanager::makeTrackHistSpecMap(confTrackBinning1);
113115
auto trackHistSpec2 = trackhistmanager::makeTrackHistSpecMap(confTrackBinning2);
114-
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning1, confTrackBinning2);
116+
auto pairHistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
115117
auto cprHistSpec = closepairrejection::makeCprHistSpecMap(confCpr);
116118

117-
pairTrackTrackBuilder.init(&hRegistry, trackSelections1, trackSelections2, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec1, trackHistSpec2, pairHistSpec, cprHistSpec);
119+
pairTrackTrackBuilder.init(&hRegistry, trackSelections1, trackSelections2, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec1, trackHistSpec2, pairHistSpec, cprHistSpec);
118120
};
119121

120122
void processSameEvent(FilteredCollision const& col, Tracks const& tracks)

PWGCF/Femto/Tasks/femtoPairTrackTwoTrackResonance.cxx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ struct FemtoPairTrackTwoTrackResonance {
9898

9999
// setup pairs
100100
pairhistmanager::ConfPairBinning confPairBinning;
101+
pairhistmanager::ConfPairCuts confPairCuts;
101102

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

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

198199
// setup for kstar0
199200
if (doprocessRho0SameEvent || doprocessRho0MixedEvent) {
200201
auto rho0HistSpec = twotrackresonancehistmanager::makeTwoTrackResonanceHistSpecMap(confRho0Binning);
201-
auto pairTrackRho0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning, confTrackBinning, confRho0Binning);
202-
pairTrackRho0Builder.init(&hRegistry, trackSelection, rho0Selection, confCpr, confMixing, confPairBinning, colHistSpec, trackHistSpec, rho0HistSpec, posDauSpec, negDauSpec, pairTrackRho0HistSpec, cprHistSpec);
202+
auto pairTrackRho0HistSpec = pairhistmanager::makePairHistSpecMap(confPairBinning);
203+
pairTrackRho0Builder.init(&hRegistry, trackSelection, rho0Selection, confCpr, confMixing, confPairBinning, confPairCuts, colHistSpec, trackHistSpec, rho0HistSpec, posDauSpec, negDauSpec, pairTrackRho0HistSpec, cprHistSpec);
203204
}
204205
};
205206

0 commit comments

Comments
 (0)