Skip to content

Commit 2303ff6

Browse files
[PWGHF] Add alternative FT0c centrality estimator in HF centrality and flow task
1 parent 3fd02a0 commit 2303ff6

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

PWGHF/Core/CentralityEstimation.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ enum CentralityEstimator {
3030
FT0M,
3131
FV0A,
3232
NTracksPV,
33+
FT0CVariant1,
3334
NCentralityEstimators
3435
};
3536

@@ -43,6 +44,11 @@ concept HasFT0CCent = requires(T collision) {
4344
collision.centFT0C();
4445
};
4546

47+
template <typename T>
48+
concept HasFT0CVariant1Cent = requires(T collision) {
49+
collision.centFT0CVariant1();
50+
};
51+
4652
template <typename T>
4753
concept HasFT0MCent = requires(T collision) {
4854
collision.centFT0M();
@@ -76,6 +82,15 @@ float getCentralityColl(const TCollision& collision)
7682
return collision.centFT0C();
7783
}
7884

85+
/// Evaluate centrality/multiplicity percentile using FT0C variant 1 estimator
86+
/// \param candidate is candidate
87+
/// \return centrality/multiplicity percentile of the collision
88+
template <HasFT0CVariant1Cent TCollision>
89+
float getCentralityColl(const TCollision& collision)
90+
{
91+
return collision.centFT0CVariant1();
92+
}
93+
7994
/// Evaluate centrality/multiplicity percentile using FT0M estimator
8095
/// \param candidate is candidate
8196
/// \return centrality/multiplicity percentile of the collision
@@ -144,6 +159,18 @@ float getCentralityColl(const TCollision& collision, const int centEstimator)
144159
}
145160
LOG(fatal) << "Collision does not have centFV0A().";
146161
break;
162+
case CentralityEstimator::NTracksPV:
163+
if constexpr (HasNTracksPvCent<TCollision>) {
164+
return collision.centNTPV();
165+
}
166+
LOG(fatal) << "Collision does not have centNTPV().";
167+
break;
168+
case CentralityEstimator::FT0CVariant1:
169+
if constexpr (HasFT0CVariant1Cent<TCollision>) {
170+
return collision.centFT0CVariant1();
171+
}
172+
LOG(fatal) << "Collision does not have centFT0CVariant1().";
173+
break;
147174
default:
148175
LOG(fatal) << "Centrality estimator not valid. See CentralityEstimator for valid values.";
149176
break;

PWGHF/D2H/Tasks/taskFlowCharmHadrons.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ struct HfTaskFlowCharmHadrons {
109109

110110
Configurable<int> harmonic{"harmonic", 2, "harmonic number"};
111111
Configurable<int> qVecDetector{"qVecDetector", 3, "Detector for Q vector estimation (FV0A: 0, FT0M: 1, FT0A: 2, FT0C: 3, TPC Pos: 4, TPC Neg: 5, TPC Tot: 6)"};
112-
Configurable<int> centEstimator{"centEstimator", 2, "Centrality estimation (FT0A: 1, FT0C: 2, FT0M: 3, FV0A: 4)"};
112+
Configurable<int> centEstimator{"centEstimator", 2, "Centrality estimation (FT0A: 1, FT0C: 2, FT0M: 3, FV0A: 4, NTracksPV: 5, FT0CVariant1: 6)"};
113113
Configurable<int> selectionFlag{"selectionFlag", 1, "Selection Flag for hadron (e.g. 1 for skimming, 3 for topo. and kine., 7 for PID)"};
114114
Configurable<float> centralityMin{"centralityMin", 0., "Minimum centrality accepted in SP/EP computation (not applied in resolution process)"};
115115
Configurable<float> centralityMax{"centralityMax", 100., "Maximum centrality accepted in SP/EP computation (not applied in resolution process)"};
@@ -146,7 +146,7 @@ struct HfTaskFlowCharmHadrons {
146146
using CandXic0DataWMl = soa::Filtered<soa::Join<aod::HfCandToXiPiKf, aod::HfSelToXiPiKf, aod::HfMlToXiPi>>;
147147
using CandD0DataWMl = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0>>;
148148
using CandD0Data = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0>>;
149-
using CollsWithQvecs = soa::Join<aod::Collisions, aod::EvSels, aod::QvectorFT0Cs, aod::QvectorFT0As, aod::QvectorFT0Ms, aod::QvectorFV0As, aod::QvectorBPoss, aod::QvectorBNegs, aod::QvectorBTots, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
149+
using CollsWithQvecs = soa::Join<aod::Collisions, aod::EvSels, aod::QvectorFT0Cs, aod::QvectorFT0As, aod::QvectorFT0Ms, aod::QvectorFV0As, aod::QvectorBPoss, aod::QvectorBNegs, aod::QvectorBTots, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::centFT0CVariant1s>;
150150
using TracksWithExtra = soa::Join<aod::Tracks, aod::TracksExtra>;
151151

152152
Filter filterSelectDsCandidates = aod::hf_sel_candidate_ds::isSelDsToKKPi >= selectionFlag || aod::hf_sel_candidate_ds::isSelDsToPiKK >= selectionFlag;
@@ -878,7 +878,7 @@ struct HfTaskFlowCharmHadrons {
878878
float const xQVecBTot = collision.qvecBTotRe();
879879
float const yQVecBTot = collision.qvecBTotIm();
880880

881-
centrality = o2::hf_centrality::getCentralityColl(collision, o2::hf_centrality::CentralityEstimator::FT0C);
881+
centrality = o2::hf_centrality::getCentralityColl(collision, CentEstimator);
882882
if (storeResoOccu) {
883883
const auto occupancy = o2::hf_occupancy::getOccupancyColl(collision, occEstimator);
884884
registry.fill(HIST("trackOccVsFT0COcc"), collision.trackOccupancyInTimeRange(), collision.ft0cOccupancyInTimeRange());

0 commit comments

Comments
 (0)