Skip to content

Commit 2a71cc2

Browse files
committed
multiplicity only
1 parent 90c3ef1 commit 2a71cc2

File tree

1 file changed

+57
-81
lines changed

1 file changed

+57
-81
lines changed

PWGHF/HFC/Tasks/taskFlow.cxx

Lines changed: 57 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,6 @@ using namespace o2::constants::math;
6666
using namespace o2::framework;
6767
using namespace o2::framework::expressions;
6868

69-
enum MultOrCentEstimators {
70-
MultNTracksPV = 0,
71-
MultNumContrib,
72-
MultFT0C,
73-
MultFT0M,
74-
CentFT0C,
75-
CentFT0CVariant1,
76-
CentFT0M,
77-
CentFV0A,
78-
CentNTracksPV,
79-
CentNGlobal,
80-
CentMFT
81-
};
82-
8369
enum MftTrackSelectionStep {
8470
NoSelection = 0,
8571
Eta,
@@ -95,6 +81,13 @@ enum MftTrackAmbiguityStep {
9581
NMftAmbiguitySteps
9682
};
9783

84+
enum MultiplicityEstimators {
85+
MultNTracksPV = 0,
86+
MultNumContrib,
87+
MultFT0C,
88+
MultFT0M
89+
};
90+
9891
enum ReassociationMftTracks {
9992
NotReassociatedMftTracks = 0,
10093
ReassociatedMftTracks,
@@ -134,7 +127,7 @@ enum CorrelatedParticles {
134127
static constexpr std::string_view WhatDataType[] = {"Data/", "MC/"};
135128
static constexpr std::string_view WhatCorrelationCase[] = {"TpcTpc/", "TpcMft/", "TpcFv0a/", "MftFv0a/"};
136129
static constexpr std::string_view WhatParticles[] = {"ChPartChPart/", "D0ChPart/", "LcChPart/"};
137-
static constexpr std::string_view WhatMultOrCentEstimator[] = {"multNTracksPV/", "multNumContrib/", "multFT0C/", "multFT0M/", "centFT0C/", "centFT0CVariant1/", "centFT0M/", "centFV0A/", "centNtracksPV/", "centNGlobal/", "centMFT/"};
130+
static constexpr std::string_view WhatMultiplicityEstimator[] = {"multNTracksPV", "multNumContrib", "multFT0C", "multFT0M"};
138131

139132
static constexpr TrackSelectionFlags::flagtype TrackSelectionIts =
140133
TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF |
@@ -178,7 +171,7 @@ struct HfTaskFlow {
178171
std::string prefix = "ConfigCollision_group";
179172
Configurable<bool> isApplyGoodZvtxFT0vsPV{"isApplyGoodZvtxFT0vsPV", false, "Enable GoodZvtxFT0vsPV cut"};
180173
Configurable<bool> isApplySameBunchPileup{"isApplySameBunchPileup", false, "Enable SameBunchPileup cut"};
181-
Configurable<int> multOrCentEstimator{"multOrCentEstimator", 0, "0: multNTracksPV, 1: numContrib, 2: multFT0C, 3: multFT0M, 4: centFT0C, 5: centFT0CVariants1s, 6: centFT0M, 7: centFV0A, 8: centNTracksPV, 9: centNGlobal, 10: centMFT"};
174+
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"};
182175
Configurable<bool> isApplyNoCollInTimeRangeStrict{"isApplyNoCollInTimeRangeStrict", false, ""};
183176
Configurable<float> zVertexMax{"zVertexMax", 7.0f, "Accepted z-vertex range"};
184177
} configCollision;
@@ -225,7 +218,7 @@ struct HfTaskFlow {
225218
// using declarations : DATA
226219
// =========================
227220

228-
using FilteredCollisionsWSelMult = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::CentNTPVs, aod::CentNGlobals, aod::CentMFTs>>;
221+
using FilteredCollisionsWSelMult = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults>>;
229222
using HfCandidatesSelD0 = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0>>;
230223
using HfCandidatesSelLc = soa::Filtered<soa::Join<aod::HfCand3Prong, aod::HfSelLc>>;
231224
using FilteredTracksWDcaSel = soa::Filtered<soa::Join<aod::TracksWDca, aod::TrackSelection, aod::TracksExtra>>;
@@ -393,7 +386,7 @@ struct HfTaskFlow {
393386
// =========================
394387

395388
registry.add("Data/hVtxZ", "v_{z} (cm)", {HistType::kTH1D, {axisVertex}});
396-
registry.add(Form("Data/hMultiplicity_%s", WhatMultOrCentEstimator[configCollision.multOrCentEstimator].data()), "", {HistType::kTH1D, {axisMultiplicity}});
389+
registry.add(Form("Data/hMultiplicity_%s", WhatMultiplicityEstimator[configCollision.multiplicityEstimator].data()), "", {HistType::kTH1D, {axisMultiplicity}});
397390

398391
registry.add("Data/hEventCounter", "hEventCounter", {HistType::kTH1D, {{EventSelectionStep::NEventSelectionSteps, -0.5, +EventSelectionStep::NEventSelectionSteps - 0.5}}});
399392
std::string labels[EventSelectionStep::NEventSelectionSteps];
@@ -794,31 +787,29 @@ struct HfTaskFlow {
794787
}
795788

796789
template <typename TCollision>
797-
float getMultiplicityOrCentrality(TCollision collision)
790+
float getMultiplicityEstimator(TCollision collision, bool isSameEvent)
798791
{
799-
switch (configCollision.multOrCentEstimator) {
800-
case MultOrCentEstimators::MultNTracksPV:
792+
switch (configCollision.multiplicityEstimator) {
793+
case MultiplicityEstimators::MultNTracksPV:
794+
if (isSameEvent) {
795+
registry.fill(HIST("Data/hMultiplicity_multNTracksPV"), collision.multNTracksPV());
796+
}
801797
return collision.multNTracksPV();
802-
case MultOrCentEstimators::MultFT0C:
803-
return collision.multFT0C();
804-
case MultOrCentEstimators::MultNumContrib:
798+
case MultiplicityEstimators::MultNumContrib:
799+
if (isSameEvent) {
800+
registry.fill(HIST("Data/hMultiplicity_multNumContrib"), collision.numContrib());
801+
}
805802
return collision.numContrib();
806-
case MultOrCentEstimators::MultFT0M:
803+
case MultiplicityEstimators::MultFT0C:
804+
if (isSameEvent) {
805+
registry.fill(HIST("Data/hMultiplicity_multFT0C"), collision.multFT0C());
806+
}
807+
return collision.multFT0C();
808+
case MultiplicityEstimators::MultFT0M:
809+
if (isSameEvent) {
810+
registry.fill(HIST("Data/hMultiplicity_multFT0M"), collision.multFT0M());
811+
}
807812
return collision.multFT0M();
808-
case MultOrCentEstimators::CentFT0C:
809-
return collision.centFT0C();
810-
case MultOrCentEstimators::CentFT0CVariant1:
811-
return collision.centFT0CVariant1();
812-
case MultOrCentEstimators::CentFT0M:
813-
return collision.centFT0M();
814-
case MultOrCentEstimators::CentFV0A:
815-
return collision.centFV0A();
816-
case MultOrCentEstimators::CentNTracksPV:
817-
return collision.centNTPV();
818-
case MultOrCentEstimators::CentNGlobal:
819-
return collision.centNGlobal();
820-
case MultOrCentEstimators::CentMFT:
821-
return collision.centMFT();
822813
default:
823814
return collision.multNTracksPV();
824815
}
@@ -1704,7 +1695,7 @@ struct HfTaskFlow {
17041695
OutputObj<CorrelationContainer>& corrContainer)
17051696
{
17061697
auto getMultiplicity = [this](FilteredCollisionsWSelMult::iterator const& collision) {
1707-
auto multiplicity = getMultiplicityOrCentrality(collision);
1698+
auto multiplicity = getMultiplicityEstimator(collision, false);
17081699
return multiplicity;
17091700
};
17101701

@@ -1726,7 +1717,7 @@ struct HfTaskFlow {
17261717
}
17271718
}
17281719

1729-
const auto multiplicity = getMultiplicityOrCentrality(collision1);
1720+
const auto multiplicity = getMultiplicityEstimator(collision1, false);
17301721

17311722
corrContainer->fillEvent(multiplicity, step);
17321723
fillCorrelations(corrContainer, step, tracks1, tracks2, multiplicity, collision1.posZ(), false);
@@ -1818,8 +1809,8 @@ struct HfTaskFlow {
18181809
// options are ran at the same time
18191810
// temporary solution, since other correlation options always have to be ran with h-h, too
18201811
// TODO: rewrite it in a more intelligent way
1821-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1822-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1812+
const auto multiplicity = getMultiplicityEstimator(collision, true);
1813+
// registry.fill(HIST(Form("Data/hMultiplicity_%s", WhatMultiplicityEstimator[HfTaskFlow::configCollision.multiplicityEstimator].data())), multiplicity);
18231814

18241815
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
18251816
fillCorrelations(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, tracks, tracks, multiplicity, collision.posZ(), true);
@@ -1844,8 +1835,7 @@ struct HfTaskFlow {
18441835
return;
18451836
}
18461837

1847-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1848-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1838+
const auto multiplicity = getMultiplicityEstimator(collision, true);
18491839

18501840
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
18511841
fillCorrelations(sameEventHf, CorrelationContainer::CFStep::kCFStepReconstructed, candidates, tracks, multiplicity, collision.posZ(), true);
@@ -1870,8 +1860,7 @@ struct HfTaskFlow {
18701860
return;
18711861
}
18721862

1873-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1874-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1863+
const auto multiplicity = getMultiplicityEstimator(collision, true);
18751864

18761865
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
18771866
fillCorrelations(sameEventHf, CorrelationContainer::CFStep::kCFStepReconstructed, candidates, tracks, multiplicity, collision.posZ(), true);
@@ -1890,8 +1879,7 @@ struct HfTaskFlow {
18901879
return;
18911880
}
18921881

1893-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1894-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1882+
const auto multiplicity = getMultiplicityEstimator(collision, true);
18951883

18961884
// I use kCFStepAll for running my code with all MFTTracks were the reassociation process was not applied
18971885
// We don't fill "normal" QA plots with these tracks, only specific plots to compare with other type of MFTTracks
@@ -1914,8 +1902,7 @@ struct HfTaskFlow {
19141902
registry.fill(HIST("Data/Mft/hNBestCollisionFwd"), reassociatedMftTracks.size());
19151903

19161904
// const auto multiplicity = collision.multNTracksPV();
1917-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1918-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1905+
const auto multiplicity = getMultiplicityEstimator(collision, true);
19191906

19201907
// I use the step kCFStepReconstructed for reassociatedMftTracks (most likely the ones we will use in the end)
19211908
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
@@ -1936,8 +1923,7 @@ struct HfTaskFlow {
19361923
registry.fill(HIST("Data/Mft/hNMftTracks"), mftTracks.size());
19371924
registry.fill(HIST("Data/Mft/hNBestCollisionFwd"), reassociatedMftTracks.size());
19381925

1939-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1940-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1926+
const auto multiplicity = getMultiplicityEstimator(collision, true);
19411927

19421928
// I use kCFStepTracked for running my code with only non-ambiguous MFTTracks
19431929
// This is the same as running with reassociatedMftTracks, but applying one more cut in the fillCorrelations function
@@ -1966,8 +1952,7 @@ struct HfTaskFlow {
19661952
return;
19671953
}
19681954

1969-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1970-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1955+
const auto multiplicity = getMultiplicityEstimator(collision, true);
19711956

19721957
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
19731958
fillCorrelations(sameEventHf, CorrelationContainer::CFStep::kCFStepReconstructed, candidates, mftTracks, multiplicity, collision.posZ(), true);
@@ -1983,8 +1968,7 @@ struct HfTaskFlow {
19831968
return; // when process function has iterator
19841969
}
19851970

1986-
const auto multiplicity = getMultiplicityOrCentrality(collision);
1987-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1971+
const auto multiplicity = getMultiplicityEstimator(collision, true);
19881972

19891973
// I use the step kCFStepReconstructed for reassociatedMftTracks (most likely the ones we will use in the end)
19901974
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
@@ -2011,8 +1995,7 @@ struct HfTaskFlow {
20111995
return;
20121996
}
20131997

2014-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2015-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
1998+
const auto multiplicity = getMultiplicityEstimator(collision, true);
20161999

20172000
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
20182001
fillCorrelations(sameEventHf, CorrelationContainer::CFStep::kCFStepReconstructed, candidates, mftTracks, multiplicity, collision.posZ(), true);
@@ -2028,8 +2011,7 @@ struct HfTaskFlow {
20282011
return; // when process function has iterator
20292012
}
20302013

2031-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2032-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
2014+
const auto multiplicity = getMultiplicityEstimator(collision, true);
20332015

20342016
// I use the step kCFStepReconstructed for reassociatedMftTracks (most likely the ones we will use in the end)
20352017
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
@@ -2049,11 +2031,10 @@ struct HfTaskFlow {
20492031
return;
20502032
}
20512033

2052-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2034+
const auto multiplicity = getMultiplicityEstimator(collision, true);
20532035

20542036
if (collision.has_foundFV0()) {
20552037
const auto& fv0 = collision.foundFV0();
2056-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
20572038

20582039
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
20592040
fillCorrelationsFV0(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, tracks, fv0, multiplicity, collision.posZ(), true);
@@ -2073,11 +2054,10 @@ struct HfTaskFlow {
20732054
return;
20742055
}
20752056

2076-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2057+
const auto multiplicity = getMultiplicityEstimator(collision, true);
20772058

20782059
if (collision.has_foundFV0()) {
20792060
const auto& fv0 = collision.foundFV0();
2080-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
20812061

20822062
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
20832063
fillCorrelationsFV0(sameEventHf, CorrelationContainer::CFStep::kCFStepReconstructed, candidates, fv0, multiplicity, collision.posZ(), true);
@@ -2097,11 +2077,10 @@ struct HfTaskFlow {
20972077
return;
20982078
}
20992079

2100-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2080+
const auto multiplicity = getMultiplicityEstimator(collision, true);
21012081

21022082
if (collision.has_foundFV0()) {
21032083
const auto& fv0 = collision.foundFV0();
2104-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
21052084

21062085
sameEventHf->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
21072086
fillCorrelationsFV0(sameEventHf, CorrelationContainer::CFStep::kCFStepReconstructed, candidates, fv0, multiplicity, collision.posZ(), true);
@@ -2121,11 +2100,10 @@ struct HfTaskFlow {
21212100
return;
21222101
}
21232102

2124-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2103+
const auto multiplicity = getMultiplicityEstimator(collision, true);
21252104

21262105
if (collision.has_foundFV0()) {
21272106
const auto& fv0 = collision.foundFV0();
2128-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
21292107

21302108
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
21312109
fillCorrelationsFV0(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, mftTracks, fv0, multiplicity, collision.posZ(), true);
@@ -2142,11 +2120,10 @@ struct HfTaskFlow {
21422120
return;
21432121
}
21442122

2145-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2123+
const auto multiplicity = getMultiplicityEstimator(collision, true);
21462124

21472125
if (collision.has_foundFV0()) {
21482126
const auto& fv0 = collision.foundFV0();
2149-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
21502127

21512128
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
21522129
fillCorrelationsFV0ReassociatedMftTracks(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, reassociatedMftTracks, fv0, multiplicity, collision.posZ(), true, false);
@@ -2163,11 +2140,10 @@ struct HfTaskFlow {
21632140
return;
21642141
}
21652142

2166-
const auto multiplicity = getMultiplicityOrCentrality(collision);
2143+
const auto multiplicity = getMultiplicityEstimator(collision, true);
21672144

21682145
if (collision.has_foundFV0()) {
21692146
const auto& fv0 = collision.foundFV0();
2170-
registry.fill(HIST("Data/hMultiplicity"), multiplicity);
21712147

21722148
sameEvent->fillEvent(multiplicity, CorrelationContainer::kCFStepReconstructed);
21732149
fillCorrelationsFV0ReassociatedMftTracks(sameEvent, CorrelationContainer::CFStep::kCFStepReconstructed, reassociatedMftTracks, fv0, multiplicity, collision.posZ(), true, true);
@@ -2313,7 +2289,7 @@ struct HfTaskFlow {
23132289
aod::FV0As const&)
23142290
{
23152291
auto getMultiplicity = [this](FilteredCollisionsWSelMult::iterator const& collision) {
2316-
auto multiplicity = getMultiplicityOrCentrality(collision);
2292+
auto multiplicity = getMultiplicityEstimator(collision, false);
23172293
return multiplicity;
23182294
};
23192295

@@ -2332,7 +2308,7 @@ struct HfTaskFlow {
23322308

23332309
if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
23342310

2335-
const auto multiplicity = getMultiplicityOrCentrality(collision1);
2311+
const auto multiplicity = getMultiplicityEstimator(collision1, false);
23362312

23372313
auto slicedTriggerTracks = tracks.sliceBy(perColTracks, collision1.globalIndex());
23382314
const auto& fv0 = collision2.foundFV0();
@@ -2353,7 +2329,7 @@ struct HfTaskFlow {
23532329
aod::FV0As const&)
23542330
{
23552331
auto getMultiplicity = [this](FilteredCollisionsWSelMult::iterator const& collision) {
2356-
auto multiplicity = getMultiplicityOrCentrality(collision);
2332+
auto multiplicity = getMultiplicityEstimator(collision, false);
23572333
return multiplicity;
23582334
};
23592335

@@ -2372,7 +2348,7 @@ struct HfTaskFlow {
23722348

23732349
if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
23742350

2375-
const auto multiplicity = getMultiplicityOrCentrality(collision1);
2351+
const auto multiplicity = getMultiplicityEstimator(collision1, false);
23762352

23772353
auto slicedTriggerCandidates = candidates.sliceBy(perColD0s, collision1.globalIndex());
23782354
const auto& fv0 = collision2.foundFV0();
@@ -2393,7 +2369,7 @@ struct HfTaskFlow {
23932369
aod::FV0As const&)
23942370
{
23952371
auto getMultiplicity = [this](FilteredCollisionsWSelMult::iterator const& collision) {
2396-
auto multiplicity = getMultiplicityOrCentrality(collision);
2372+
auto multiplicity = getMultiplicityEstimator(collision, false);
23972373
return multiplicity;
23982374
};
23992375

@@ -2412,7 +2388,7 @@ struct HfTaskFlow {
24122388

24132389
if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
24142390

2415-
const auto multiplicity = getMultiplicityOrCentrality(collision1);
2391+
const auto multiplicity = getMultiplicityEstimator(collision1, false);
24162392

24172393
auto slicedTriggerCandidates = candidates.sliceBy(perColLcs, collision1.globalIndex());
24182394
const auto& fv0 = collision2.foundFV0();
@@ -2433,7 +2409,7 @@ struct HfTaskFlow {
24332409
aod::FV0As const&)
24342410
{
24352411
auto getMultiplicity = [this](FilteredCollisionsWSelMult::iterator const& collision) {
2436-
auto multiplicity = getMultiplicityOrCentrality(collision);
2412+
auto multiplicity = getMultiplicityEstimator(collision, false);
24372413
return multiplicity;
24382414
};
24392415

@@ -2452,7 +2428,7 @@ struct HfTaskFlow {
24522428

24532429
if (collision1.has_foundFV0() && collision2.has_foundFV0()) {
24542430

2455-
const auto multiplicity = getMultiplicityOrCentrality(collision1);
2431+
const auto multiplicity = getMultiplicityEstimator(collision1, false);
24562432
auto slicedTriggerMftTracks = mftTracks.sliceBy(perColMftTracks, collision1.globalIndex());
24572433
const auto& fv0 = collision2.foundFV0();
24582434

0 commit comments

Comments
 (0)