Skip to content

Commit afe313e

Browse files
authored
Merge branch 'AliceO2Group:master' into NetChargeFluctuations3
2 parents b22d4cf + 24a51f8 commit afe313e

10 files changed

Lines changed: 707 additions & 186 deletions

File tree

PWGCF/Femto/Core/femtoUtils.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <cstdint>
3131
#include <limits>
3232
#include <optional>
33+
#include <type_traits>
3334
#include <unordered_map>
3435

3536
namespace o2::analysis::femto
@@ -83,7 +84,7 @@ inline double getPdgMass(int pdgCode)
8384
{
8485
// use this function instead of TDatabasePDG to return masses defined in the PhysicsConstants.h header
8586
// this approach saves a lot of memory and important partilces like deuteron are missing in TDatabasePDG anyway
86-
double mass = 0.f;
87+
double mass = 0.;
8788
// add new particles if necessary here
8889
switch (std::abs(pdgCode)) {
8990
case kPiPlus:
@@ -102,10 +103,10 @@ inline double getPdgMass(int pdgCode)
102103
mass = o2::constants::physics::MassPhi;
103104
break;
104105
case kRho770_0:
105-
mass = 775.26; // not defined in O2?
106+
mass = 0.77526; // not defined in O2?
106107
break;
107108
case kRho770Plus:
108-
mass = 775.11; // not defined in O2?
109+
mass = 0.77511; // not defined in O2?
109110
break;
110111
case o2::constants::physics::Pdg::kK0Star892:
111112
mass = o2::constants::physics::MassK0Star892;
@@ -138,7 +139,7 @@ inline double getPdgMass(int pdgCode)
138139
mass = o2::constants::physics::MassOmegaMinus;
139140
break;
140141
default:
141-
LOG(warn) << "PDG code is not suppored. Return 0...";
142+
LOG(warn) << "PDG code " << pdgCode << " is not suppored. Return 0... ";
142143
}
143144
return mass;
144145
}
@@ -154,11 +155,15 @@ concept HasQvectors = requires(T col) {
154155
};
155156

156157
template <typename T>
157-
concept HasEventShape = requires(T col) {
158-
col.qvec();
159-
col.eventPlaneAngle();
158+
concept HasEventShapeRow = requires(T row) {
159+
row.qvec();
160+
row.eventPlaneAngle();
160161
};
161162

163+
/// accepts either a row/iterator or a table (Filtered<Join<...>> etc.)
164+
template <typename T>
165+
concept HasEventShape = HasEventShapeRow<std::decay_t<T>> || (requires { typename std::decay_t<T>::iterator; } && HasEventShapeRow<typename std::decay_t<T>::iterator>);
166+
162167
/// Recalculate pT for Kinks (Sigmas) using kinematic constraints
163168
inline float calcPtnew(float pxMother, float pyMother, float pzMother, float pxDaughter, float pyDaughter, float pzDaughter)
164169
{

PWGCF/Femto/Core/pairBuilder.h

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "PWGCF/Femto/Core/charmHadronHistManager.h"
2121
#include "PWGCF/Femto/Core/closePairRejection.h"
2222
#include "PWGCF/Femto/Core/collisionHistManager.h"
23+
#include "PWGCF/Femto/Core/femtoUtils.h"
2324
#include "PWGCF/Femto/Core/kinkHistManager.h"
2425
#include "PWGCF/Femto/Core/mcParticleHistManager.h"
2526
#include "PWGCF/Femto/Core/modes.h"
@@ -202,8 +203,8 @@ class PairTrackTrackBuilder
202203
}
203204
}
204205

205-
template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
206-
void processMixedEvent(T1 const& cols, T2& trackTable, T3& partition1, T4& partition2, T5& cache, T6& binsVtxMult, T7& binsVtxCent, T8& binsVtxMultCent)
206+
template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
207+
void processMixedEvent(T1 const& cols, T2& trackTable, T3& partition1, T4& partition2, T5& cache, T6& binsVtxMult, T7& binsVtxCent, T8& binsVtxMultCent, T9& binsVtxCentEventPlaneAngle)
207208
{
208209

209210
if (mSameSpecies) {
@@ -217,6 +218,13 @@ class PairTrackTrackBuilder
217218
case static_cast<int>(pairhistmanager::kVtxMultCent):
218219
pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxMultCent, mMixingDepth, mPairHistManagerMe, mCprMe, mPcMe);
219220
break;
221+
case static_cast<int>(pairhistmanager::kVtxCentEventPlaneAngle):
222+
if constexpr (utils::HasEventShape<T1>) {
223+
pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxCentEventPlaneAngle, mMixingDepth, mPairHistManagerMe, mCprMe, mPcMe);
224+
} else {
225+
LOG(fatal) << "Mixing policy kVtxCentEventPlaneAngle requires a collision table with event-shape columns. Breaking...";
226+
}
227+
break;
220228
default:
221229
LOG(fatal) << "Invalid binning policiy specifed. Breaking...";
222230
}
@@ -231,14 +239,21 @@ class PairTrackTrackBuilder
231239
case static_cast<int>(pairhistmanager::kVtxMultCent):
232240
pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition2, trackTable, cache, binsVtxMultCent, mMixingDepth, mPairHistManagerMe, mCprMe, mPcMe);
233241
break;
242+
case static_cast<int>(pairhistmanager::kVtxCentEventPlaneAngle):
243+
if constexpr (utils::HasEventShape<T1>) {
244+
pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition2, trackTable, cache, binsVtxCentEventPlaneAngle, mMixingDepth, mPairHistManagerMe, mCprMe, mPcMe);
245+
} else {
246+
LOG(fatal) << "Mixing policy kVtxCentEventPlaneAngle requires a collision table with event-shape columns. Breaking...";
247+
}
248+
break;
234249
default:
235250
LOG(fatal) << "Invalid binning policiy specifed. Breaking...";
236251
}
237252
}
238253
}
239254

240-
template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
241-
void processMixedEvent(T1 const& cols, T2 const& mcCols, T3& trackTable, T4& partition1, T5& partition2, T6 const& mcParticles, T7 const& mcMothers, T8 const& mcPartonicMothers, T9& cache, T10& binsVtxMult, T11& binsVtxCent, T12& binsVtxMultCent)
255+
template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
256+
void processMixedEvent(T1 const& cols, T2 const& mcCols, T3& trackTable, T4& partition1, T5& partition2, T6 const& mcParticles, T7 const& mcMothers, T8 const& mcPartonicMothers, T9& cache, T10& binsVtxMult, T11& binsVtxCent, T12& binsVtxMultCent, T13& binsVtxCentEventPlaneAngle)
242257
{
243258
if (mSameSpecies) {
244259
switch (mMixingPolicy) {
@@ -251,6 +266,13 @@ class PairTrackTrackBuilder
251266
case static_cast<int>(pairhistmanager::kVtxMultCent):
252267
pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition1, trackTable, mcParticles, mcMothers, mcPartonicMothers, cache, binsVtxMultCent, mMixingDepth, mPairHistManagerMe, mTrackCleaner1, mTrackCleaner1, mCprMe, mPcMe);
253268
break;
269+
case static_cast<int>(pairhistmanager::kVtxCentEventPlaneAngle):
270+
if constexpr (utils::HasEventShape<T1>) {
271+
pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition1, trackTable, mcParticles, mcMothers, mcPartonicMothers, cache, binsVtxCentEventPlaneAngle, mMixingDepth, mPairHistManagerMe, mTrackCleaner1, mTrackCleaner1, mCprMe, mPcMe);
272+
} else {
273+
LOG(fatal) << "Mixing policy kVtxCentEventPlaneAngle requires a collision table with event-shape columns. Breaking...";
274+
}
275+
break;
254276
default:
255277
LOG(fatal) << "Invalid binning policiy specifed. Breaking...";
256278
}
@@ -265,6 +287,13 @@ class PairTrackTrackBuilder
265287
case static_cast<int>(pairhistmanager::kVtxMultCent):
266288
pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition2, trackTable, mcParticles, mcMothers, mcPartonicMothers, cache, binsVtxMultCent, mMixingDepth, mPairHistManagerMe, mTrackCleaner1, mTrackCleaner2, mCprMe, mPcMe);
267289
break;
290+
case static_cast<int>(pairhistmanager::kVtxCentEventPlaneAngle):
291+
if constexpr (utils::HasEventShape<T1>) {
292+
pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition2, trackTable, mcParticles, mcMothers, mcPartonicMothers, cache, binsVtxCentEventPlaneAngle, mMixingDepth, mPairHistManagerMe, mTrackCleaner1, mTrackCleaner2, mCprMe, mPcMe);
293+
} else {
294+
LOG(fatal) << "Mixing policy kVtxCentEventPlaneAngle requires a collision table with event-shape columns. Breaking...";
295+
}
296+
break;
268297
default:
269298
LOG(fatal) << "Invalid binning policiy specifed. Breaking...";
270299
}

0 commit comments

Comments
 (0)