@@ -144,6 +144,12 @@ enum MftTrackSelectionStep {
144144 NMftTrackSelectionSteps
145145};
146146
147+ enum CentralityEstimators {
148+ CentFT0C = 0 ,
149+ CentFT0CVariants1s,
150+ CentFT0M
151+ };
152+
147153enum MultiplicityEstimators {
148154 MultNTracksPV = 0 ,
149155 MultNumContrib,
@@ -175,6 +181,7 @@ enum TrackSelection {
175181static constexpr std::string_view WhatDataType[] = {" Data/" , " MC/" };
176182static constexpr std::string_view WhatCorrelationCase[] = {" TpcTpc/" , " TpcMft/" , " TpcFv0a/" , " MftFv0a/" , " TpcFt0a/" , " MftFt0a/" , " TpcFt0c/" , " Ft0aFt0c/" };
177183static constexpr std::string_view WhatParticles[] = {" ChPartChPart/" , " D0ChPart/" , " LcChPart/" };
184+ static constexpr std::string_view WhatCentralityEstimator[] = {" centFT0C" , " centFT0CVariants1s" , " centFT0M" };
178185static constexpr std::string_view WhatMultiplicityEstimator[] = {" multNTracksPV" , " multNumContrib" , " multFT0C" , " multFT0M" };
179186auto static constexpr MinFt0cCell = 96 ;
180187
@@ -234,6 +241,7 @@ struct HfTaskFlow {
234241 // configurables for collisions
235242 struct : ConfigurableGroup {
236243 std::string prefix = " ConfigCollision_group" ;
244+ Configurable<int > centralityEstimator{" centralityEstimator" , 0 , " 0: centFT0C, 1: centFT0CVariants1s, 2: centFT0M" };
237245 Configurable<bool > isApplyGoodItsLayersAll{" isApplyGoodItsLayersAll" , false , " Enable GoodITSLayersAll" };
238246 Configurable<bool > isApplyGoodZvtxFT0vsPV{" isApplyGoodZvtxFT0vsPV" , false , " Enable GoodZvtxFT0vsPV cut" };
239247 Configurable<bool > isApplyNoCollInRofStandard{" isApplyNoCollInRofStandard" , false , " " };
@@ -244,7 +252,7 @@ struct HfTaskFlow {
244252 Configurable<bool > isApplySameBunchPileup{" isApplySameBunchPileup" , false , " Enable SameBunchPileup cut" };
245253 Configurable<int > maxMultiplicity{" maxMultiplicity" , 300 , " maximum multiplicity selection for collision" };
246254 Configurable<int > minMultiplicity{" minMultiplicity" , 0 , " minimum multiplicity selection for collision" };
247- Configurable<int > multiplicityEstimator{" multiplicityEstimator" , 0 , " 0: multNTracksPV, 1: numContrib, 2: multFT0C, 3: multFT0M, 4: centFT0C, 5: centFT0CVariants1s, 6: centFT0M, 7: centFV0A, 8: centNTracksPV, 9: centNGlobal, 10: centMFT " };
255+ Configurable<int > multiplicityEstimator{" multiplicityEstimator" , 0 , " 0: multNTracksPV, 1: numContrib, 2: multFT0C, 3: multFT0M" };
248256 Configurable<bool > useMultiplicityFromTracks{" useMultiplicityFromTracks" , false , " Use multiplicity from counting tracks" };
249257 Configurable<bool > useMultiplicityFromTracksCorrected{" useMultiplicityFromTracksCorrected" , false , " Use multiplicity from counting tracks, corrected but takes a lot of computation time" };
250258 Configurable<bool > requireRCTFlagChecker{" requireRCTFlagChecker" , false , " Check event quality in run condition table" };
@@ -1014,6 +1022,30 @@ struct HfTaskFlow {
10141022 }
10151023 }
10161024
1025+ template <typename TCollision>
1026+ float getCentralityEstimator (TCollision const & collision, bool isSameEvent)
1027+ {
1028+ switch (configCollision.centralityEstimator ) {
1029+ case CentralityEstimators::CentFT0C:
1030+ if (isSameEvent) {
1031+ registry.fill (HIST (" Data/hCentrality_centFT0C" ), collision.centFT0C ());
1032+ }
1033+ return collision.centFT0C ();
1034+ case CentralityEstimators::CentFT0CVariants1s:
1035+ if (isSameEvent) {
1036+ registry.fill (HIST (" Data/hCentrality_centFT0CVariants1s" ), collision.centFT0CVariants1s ());
1037+ }
1038+ return collision.centFT0CVariants1s ();
1039+ case CentralityEstimators::CentFT0M:
1040+ if (isSameEvent) {
1041+ registry.fill (HIST (" Data/hCentrality_centFT0M" ), collision.centFT0M ());
1042+ }
1043+ return collision.centFT0M ();
1044+ default :
1045+ return collision.centFT0C ();
1046+ }
1047+ }
1048+
10171049 template <typename TTrack, typename TTrackAssoc>
10181050 float getDPhiStar (TTrack const & track1, TTrackAssoc const & track2, float radius, int magField)
10191051 {
0 commit comments