Skip to content

Commit f178bcd

Browse files
pykuanPei-Ying Kuan
andauthored
[PWGCF] add number of track cuts and histograms (#18002)
Co-authored-by: Pei-Ying Kuan <pei-ying.kuan@cern.ch>
1 parent ac098d0 commit f178bcd

1 file changed

Lines changed: 51 additions & 16 deletions

File tree

‎PWGCF/MultiparticleCorrelations/Tasks/multiparticleCumulants.cxx‎

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ enum EnEventHistograms {
9696
eVertexY,
9797
eVertexZ,
9898
eNumContrib,
99+
eNumTrack,
99100
eEventHistograms_N
100101
};
101102

@@ -105,7 +106,8 @@ static constexpr std::array<const char*, eEventHistograms_N> EventHistNames = {
105106
"VertexX",
106107
"VertexY",
107108
"VertexZ",
108-
"NumContrib"};
109+
"NumContrib",
110+
"NumTrack"};
109111

110112
enum EnParticleHistograms {
111113
ePt,
@@ -227,6 +229,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
227229
Configurable<bool> cfSel8CutSwitch{"cfSel8CutSwitch", true, "Sel8 cut switch"};
228230
Configurable<bool> cfCentCutSwitch{"cfCentCutSwitch", true, "centrality cut switch"};
229231
Configurable<bool> cfNumContribCutSwitch{"cfNumContribCutSwitch", true, "NContribution cut switch"};
232+
Configurable<bool> cfNumTrackCutSwitch{"cfNumTrackCutSwitch", true, "NTrack cut switch"};
230233
Configurable<bool> cfCentCorrCutSwitch{"cfCentCorrCutSwitch", true, "centrality correlation outlier cut switch"};
231234
Configurable<bool> cfMultCorrCutSwitch{"cfMultCorrCutSwitch", true, "multiplicity correlation outlier cut switch"};
232235
Configurable<bool> cfNumContribMultCorrCutSwitch{"cfNumContribMultCorrCutSwitch", true, "NContribution vs. multiplicity correlation outlier cut switch"};
@@ -244,7 +247,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
244247
Configurable<std::vector<float>> cfVertexZCut{"cfVertexZCut", {-10., 10.}, "vertex z position range: {min, max}[cm]"};
245248
Configurable<std::vector<float>> cfCentCut{"cfCentCut", {10., 20.}, "centrality range: {min, max}[%]"};
246249
Configurable<std::vector<float>> cfNumContribCut{"cfNumContribCut", {0, 3000.}, "NContribution range: {min, max}"};
247-
// Configurable<std::vector<float>> cfCentCorrCut{"cfCentCorrCut", {1., 10.}, "parameters of limits in centralities 2D histograms, (x-t)/m < y < mx+t: {m, t}"};
250+
Configurable<std::vector<float>> cfNumTrackCut{"cfNumTrackCut", {0, 3000.}, "NTrack range: {min, max}"};
248251
Configurable<std::vector<float>> cfCentABCorrCut{"cfCentABCorrCut", {1.4, 300., 1.4, 300.}, "parameters of limits in FT0C vs. FT0M centrality 2D histograms, cx+d < y < ax+b: {a,b,c,d}"};
249252
Configurable<std::vector<float>> cfCentACCorrCut{"cfCentACCorrCut", {1.4, 300., 1.4, 300.}, "parameters of limits in FT0C vs. FT0M centrality 2D histograms, cx+d < y < ax+b: {a,b,c,d}"};
250253
Configurable<std::vector<float>> cfCentBCCorrCut{"cfCentBCCorrCut", {1.4, 300., 1.4, 300.}, "parameters of limits in FT0C vs. FT0M centrality 2D histograms, cx+d < y < ax+b: {a,b,c,d}"};
@@ -277,6 +280,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
277280
Configurable<std::vector<float>> cfVerYBins{"cfVerYBins", {100, -0.05, 0.05}, "nVerYBins, VerYMin, VerYMax"};
278281
Configurable<std::vector<float>> cfVerZBins{"cfVerZBins", {100, -50., 50.}, "nVerZBins, VerZMin, VerZMax"};
279282
Configurable<std::vector<float>> cfNumContribBins{"cfNumContribBins", {100, 0., 5000.}, "nNumContribBins, NumContribMin, NumContribMax"};
283+
Configurable<std::vector<float>> cfNumTrackBins{"cfNumTrackBins", {100, 0., 5000.}, "nNumTrackBins, NumTrackMin, NumTrackMax"};
280284
Configurable<std::vector<double>> cfTwoParticleCorrBins{"cfTwoParticleCorrBins", {100, 0., 2e-3}, "nTwoParticleCorrBins, TwoParticleCorrMin, TwoParticleCorrMax"};
281285
Configurable<std::vector<double>> cfFourParticleCorrBins{"cfFourParticleCorrBins", {100, 0., 1e-7}, "nFourParticleCorrBins, FourParticleCorrMin, FourParticleCorrMax"};
282286
Configurable<std::vector<double>> cfSixParticleCorrBins{"cfSixParticleCorrBins", {100, 0., 1e-11}, "nSixParticleCorrBins, SixParticleCorrMin, SixParticleCorrMax"};
@@ -297,6 +301,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
297301
bool fSel8CutSwitch = true;
298302
bool fCentCutSwitch = true;
299303
bool fNumContribCutSwitch = true;
304+
bool fNumTrackCutSwitch = true;
300305
bool fCentCorrCutSwitch = true;
301306
bool fMultCorrCutSwitch = true;
302307
bool fNumContribMultCorrCutSwitch = true;
@@ -312,6 +317,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
312317
std::vector<float> fVertexZCut = {-10., 10.};
313318
std::vector<float> fCentCut = {10., 20.};
314319
std::vector<float> fNumContribCut = {0, 3000.};
320+
std::vector<float> fNumTrackCut = {0, 350.};
315321
std::vector<std::vector<std::vector<float>>> fCentAllCorrCut = {{{0., 0., 0., 0.}, {0., 0., 0., 0.}, {0., 0., 0., 0.}}, {{0., 0., 0., 0.}, {0., 0., 0., 0.}, {0., 0., 0., 0.}}, {{0., 0., 0., 0.}, {0., 0., 0., 0.}, {0., 0., 0., 0.}}};
316322
std::vector<std::vector<std::vector<float>>> fMultAllCorrCut = {{{0., 0., 0., 0.}, {0., 0., 0., 0.}, {0., 0., 0., 0.}}, {{0., 0., 0., 0.}, {0., 0., 0., 0.}, {0., 0., 0., 0.}}, {{0., 0., 0., 0.}, {0., 0., 0., 0.}, {0., 0., 0., 0.}}};
317323
std::vector<float> fNumContribMultCorrCut = {0.024, -600., 0.035, 100.};
@@ -337,6 +343,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
337343
std::vector<float> fVerYBins = {100, -0.05, 0.05};
338344
std::vector<float> fVerZBins = {100, -50., 50.};
339345
std::vector<float> fNumContribBins = {100, 0, 5000};
346+
std::vector<float> fNumTrackBins = {100, 0, 5000};
340347
std::vector<double> fTwoParticleCorrBins = {100, 0, 2e-3};
341348
std::vector<double> fFourParticleCorrBins = {100, 0, 1e-7};
342349
std::vector<double> fSixParticleCorrBins = {100, 0, 1e-11};
@@ -1399,7 +1406,9 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
13991406
if (diffPt < diffPtMax) {
14001407
wt.fPtMCByRunMap.at(ebye.fRunNumber)->Fill(mcparticle.pt());
14011408
} else {
1402-
LOGF(info, "|RecPt - SimPt| = %e > %e", diffPt, diffPtMax);
1409+
if (tc.fPrintSwitch) {
1410+
LOGF(info, "|RecPt - SimPt| = %e > %e", diffPt, diffPtMax);
1411+
}
14031412
}
14041413
// Fill MC particle histograms after cut:
14051414
pc.fParticleHistograms[ePt][eSim][eAfter]->Fill(mcparticle.pt());
@@ -1410,6 +1419,11 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
14101419
} // if constexpr (rs == eRec || rs == eRecAndSim) {
14111420
} // end of for (int64_t i = 0; i < tracks.size(); i++) {
14121421

1422+
// Fill real event histograms (NumTrack) before cut:
1423+
ev.fEventHistograms[eNumTrack][eRec][eBefore]->Fill(nTracksBefore);
1424+
ev.fEventHistograms[eNumTrack][eRec][eAfter]->Fill(nTracksAfter);
1425+
bool bNumTrackCut = nTracksAfter > tc.fNumTrackCut[0] && nTracksAfter < tc.fNumTrackCut[1];
1426+
14131427
// 2-p correlations:
14141428
for (int i = 0; i < NumTwoPCorrBins; i++) {
14151429
int k = 2;
@@ -1439,15 +1453,17 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
14391453
LOGF(info, "min v%d^2 so far = %e", i + 2, ebye.fTwoParticleCorrelationEbye[eBefore][i]);
14401454
}
14411455
} else {
1442-
LOGF(warning, "cent=%f, nTracksBefore = %d, wTwoRecursionBefore = %e", rlCollisionCent, nTracksBefore, wTwoRecursionBefore);
1456+
if (tc.fPrintSwitch) {
1457+
LOGF(warning, "cent=%f, nTracksBefore = %d, wTwoRecursionBefore = %e", rlCollisionCent, nTracksBefore, wTwoRecursionBefore);
1458+
}
14431459
}
14441460

14451461
// After cut:
14461462
TComplex twoRecursionAfter = mccRecursion(2, harmonicsTwoNum, eAfter) / mccRecursion(2, harmonicsTwoDen, eAfter).Re();
14471463
double wTwoRecursionAfter = mccRecursion(2, harmonicsTwoDen, eAfter).Re();
14481464
ebye.fTwoParticleCorrelationEbye[eAfter][i] = twoRecursionAfter.Re();
14491465

1450-
if (nTracksAfter > k - 1 && wTwoRecursionAfter > 0.) {
1466+
if (nTracksAfter > k - 1 && wTwoRecursionAfter > 0. && bNumTrackCut) {
14511467
// Fill vn^2 profile and histogram:
14521468
mc.fTwoParticleCorrelationProfiles[eAfter]->Fill(mc.fTwoParticleCorrelationProfiles[eAfter]->GetXaxis()->GetBinCenter(i + 1), ebye.fTwoParticleCorrelationEbye[eAfter][i], wTwoRecursionAfter);
14531469
mc.fTwoParticleCorrelationHistograms[eAfter][eBefore][i]->Fill(ebye.fTwoParticleCorrelationEbye[eAfter][i]);
@@ -1463,7 +1479,9 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
14631479
LOGF(info, "min v%d^2 so far = %e", i + 2, ebye.fTwoParticleCorrelationEbye[eAfter][i]);
14641480
}
14651481
} else {
1466-
LOGF(warning, "cent=%f, nTracksAfter = %d, wTwoRecursionAfter = %e", rlCollisionCent, nTracksAfter, wTwoRecursionAfter);
1482+
if (tc.fPrintSwitch) {
1483+
LOGF(warning, "cent=%f, nTracksAfter = %d, wTwoRecursionAfter = %e", rlCollisionCent, nTracksAfter, wTwoRecursionAfter);
1484+
}
14671485
}
14681486

14691487
for (int n = 0; n < NumEtaGap; n++) {
@@ -1478,7 +1496,9 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
14781496
gapb = (qvba * TComplex::Conjugate(qvbb)).Re() / (wba * wbb);
14791497
mc.fTwoParticleCorrelationGapProfiles[n][eBefore]->Fill(mc.fTwoParticleCorrelationGapProfiles[n][eBefore]->GetXaxis()->GetBinCenter(i + 1), gapb, wba * wbb);
14801498
} else {
1481-
LOGF(warning, "etagap=%f, cent=%f, nTracksBeforeA = %d, nTracksBeforeB = %d", tc.fEtaGap[n], rlCollisionCent, nTracksBeforeA[n], nTracksBeforeB[n]);
1499+
if (tc.fPrintSwitch) {
1500+
LOGF(warning, "etagap=%f, cent=%f, nTracksBeforeA = %d, nTracksBeforeB = %d", tc.fEtaGap[n], rlCollisionCent, nTracksBeforeA[n], nTracksBeforeB[n]);
1501+
}
14821502
}
14831503

14841504
// After cut, with gap:
@@ -1492,7 +1512,9 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
14921512
mc.fTwoParticleCorrelationGapProfiles[n][eAfter]->Fill(mc.fTwoParticleCorrelationGapProfiles[n][eAfter]->GetXaxis()->GetBinCenter(i + 1), gapa, waa * wab);
14931513
mc.fTwoParticleCorrelationGapHistograms[n][i]->Fill(gapa, waa * wab);
14941514
} else {
1495-
LOGF(warning, "etagap=%f, cent=%f, nTracksAfterA = %d, nTracksAfterB = %d", tc.fEtaGap[n], rlCollisionCent, nTracksAfterA[n], nTracksAfterB[n]);
1515+
if (tc.fPrintSwitch) {
1516+
LOGF(warning, "etagap=%f, cent=%f, nTracksAfterA = %d, nTracksAfterB = %d", tc.fEtaGap[n], rlCollisionCent, nTracksAfterA[n], nTracksAfterB[n]);
1517+
}
14961518
}
14971519
}
14981520
}
@@ -1528,15 +1550,18 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
15281550
LOGF(info, "min v%d^2v%d^2 so far = %e", mcc.h3, mcc.h4, ebye.fFourParticleCorrelationEbye[eBefore][i]);
15291551
}
15301552
} else {
1531-
LOGF(warning, "cent=%f, nTracksBefore = %d, wFourRecursionBefore = %e", rlCollisionCent, nTracksBefore, wFourRecursionBefore);
1553+
if (tc.fPrintSwitch) {
1554+
LOGF(warning, "cent=%f, nTracksBefore = %d, wFourRecursionBefore = %e", rlCollisionCent, nTracksBefore, wFourRecursionBefore);
1555+
}
15321556
}
15331557

15341558
// After cut:
15351559
TComplex fourRecursionAfter = mccRecursion(4, harmonicsFourNum, eAfter) / mccRecursion(4, harmonicsFourDen, eAfter).Re();
15361560
double wFourRecursionAfter = mccRecursion(4, harmonicsFourDen, eAfter).Re();
15371561
ebye.fFourParticleCorrelationEbye[eAfter][i] = fourRecursionAfter.Re();
15381562

1539-
if (nTracksAfter > k - 1 && wFourRecursionAfter > 0.) {
1563+
// LOGF(info, "nTracksAfter = %d", nTracksAfter);
1564+
if (nTracksAfter > k - 1 && wFourRecursionAfter > 0. && bNumTrackCut) {
15401565
// Fill vn^2vm^2 profile and histogram:
15411566
mc.fFourParticleCorrelationProfiles[eAfter]->Fill(mc.fFourParticleCorrelationProfiles[eAfter]->GetXaxis()->GetBinCenter(i + 1), ebye.fFourParticleCorrelationEbye[eAfter][i], wFourRecursionAfter);
15421567
mc.fFourParticleCorrelationHistograms[eAfter][eBefore][i]->Fill(ebye.fFourParticleCorrelationEbye[eAfter][i]);
@@ -1552,7 +1577,9 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
15521577
LOGF(info, "min v%d^2v%d^2 so far = %e", mcc.h3, mcc.h4, ebye.fFourParticleCorrelationEbye[eAfter][i]);
15531578
}
15541579
} else {
1555-
LOGF(warning, "cent=%f, nTracksAfter = %d, wFourRecursionAfter = %e", rlCollisionCent, nTracksAfter, wFourRecursionAfter);
1580+
if (tc.fPrintSwitch) {
1581+
LOGF(warning, "cent=%f, nTracksAfter = %d, wFourRecursionAfter = %e", rlCollisionCent, nTracksAfter, wFourRecursionAfter);
1582+
}
15561583
}
15571584
}
15581585

@@ -1589,15 +1616,17 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
15891616
LOGF(info, "min v%d^2v%d^2v%d^2 so far = %e", mcc.h4, mcc.h5, mcc.h6, ebye.fSixParticleCorrelationEbye[eBefore][i]);
15901617
}
15911618
} else {
1592-
LOGF(warning, "cent=%f, nTracksBefore = %d, wSixRecursionBefore = %e", rlCollisionCent, nTracksBefore, wSixRecursionBefore);
1619+
if (tc.fPrintSwitch) {
1620+
LOGF(warning, "cent=%f, nTracksBefore = %d, wSixRecursionBefore = %e", rlCollisionCent, nTracksBefore, wSixRecursionBefore);
1621+
}
15931622
}
15941623

15951624
// After cut:
15961625
TComplex sixRecursionAfter = mccRecursion(6, harmonicsSixNum, eAfter) / mccRecursion(6, harmonicsSixDen, eAfter).Re();
15971626
double wSixRecursionAfter = mccRecursion(6, harmonicsSixDen, eAfter).Re();
15981627
ebye.fSixParticleCorrelationEbye[eAfter][i] = sixRecursionAfter.Re();
15991628

1600-
if (nTracksAfter > k - 1 && wSixRecursionAfter > 0.) {
1629+
if (nTracksAfter > k - 1 && wSixRecursionAfter > 0. && bNumTrackCut) {
16011630
// Fill v2^2v3^2v4^2 profile and histogram:
16021631
mc.fSixParticleCorrelationProfiles[eAfter]->Fill(mc.fSixParticleCorrelationProfiles[eAfter]->GetXaxis()->GetBinCenter(i + 1), ebye.fSixParticleCorrelationEbye[eAfter][i], wSixRecursionAfter);
16031632
mc.fSixParticleCorrelationHistograms[eAfter][eBefore][i]->Fill(ebye.fSixParticleCorrelationEbye[eAfter][i]);
@@ -1613,7 +1642,9 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
16131642
LOGF(info, "min v%d^2v%d^2v%d^2 so far = %e", mcc.h4, mcc.h5, mcc.h6, ebye.fSixParticleCorrelationEbye[eAfter][i]);
16141643
}
16151644
} else {
1616-
LOGF(warning, "cent=%f, nTracksAfter = %d, wSixRecursionAfter = %e", rlCollisionCent, nTracksAfter, wSixRecursionAfter);
1645+
if (tc.fPrintSwitch) {
1646+
LOGF(warning, "cent=%f, nTracksAfter = %d, wSixRecursionAfter = %e", rlCollisionCent, nTracksAfter, wSixRecursionAfter);
1647+
}
16171648
}
16181649
}
16191650
}
@@ -1684,7 +1715,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
16841715
ev.fEventHistograms[histType][eSim][ba] = new TH1F(nameSim.c_str(), nameSimfull.c_str(), nBinsCent, minCent, maxCent);
16851716
ev.fEventHistograms[histType][eSim][ba]->GetXaxis()->SetTitle(EventHistNames[histType]);
16861717
ev.fEventHistogramsList->Add(ev.fEventHistograms[histType][eSim][ba]);
1687-
} // No nContrib and multiplicity for processSim
1718+
} // No nContrib, multiplicity and nTrack for processSim
16881719
}
16891720
}
16901721
}
@@ -1939,6 +1970,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
19391970
tc.fSel8CutSwitch = cfSel8CutSwitch;
19401971
tc.fCentCutSwitch = cfCentCutSwitch;
19411972
tc.fNumContribCutSwitch = cfNumContribCutSwitch;
1973+
tc.fNumTrackCutSwitch = cfNumTrackCutSwitch;
19421974
tc.fCentCorrCutSwitch = cfCentCorrCutSwitch;
19431975
tc.fMultCorrCutSwitch = cfMultCorrCutSwitch;
19441976
tc.fNumContribMultCorrCutSwitch = cfNumContribMultCorrCutSwitch;
@@ -1954,6 +1986,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
19541986
tc.fVertexZCut = cfVertexZCut;
19551987
tc.fCentCut = cfCentCut;
19561988
tc.fNumContribCut = cfNumContribCut;
1989+
tc.fNumTrackCut = cfNumTrackCut;
19571990
tc.fCentAllCorrCut[0][1] = cfCentABCorrCut;
19581991
tc.fCentAllCorrCut[0][2] = cfCentACCorrCut;
19591992
tc.fCentAllCorrCut[1][2] = cfCentBCCorrCut;
@@ -1983,6 +2016,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
19832016
tc.fVerYBins = cfVerYBins;
19842017
tc.fVerZBins = cfVerZBins;
19852018
tc.fNumContribBins = cfNumContribBins;
2019+
tc.fNumTrackBins = cfNumTrackBins;
19862020
tc.fTwoParticleCorrBins = cfTwoParticleCorrBins;
19872021
tc.fFourParticleCorrBins = cfFourParticleCorrBins;
19882022
tc.fSixParticleCorrBins = cfSixParticleCorrBins;
@@ -2040,7 +2074,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
20402074
fBaseList->Add(mc.fMultiparticleCorrelationProfilesList);
20412075

20422076
std::vector<std::vector<float>> lPcBins = {tc.fPtBins, tc.fPhiBins};
2043-
std::vector<std::vector<float>> lEvBins = {tc.fCentBins, tc.fMultBins, tc.fVerXBins, tc.fVerYBins, tc.fVerZBins, tc.fNumContribBins};
2077+
std::vector<std::vector<float>> lEvBins = {tc.fCentBins, tc.fMultBins, tc.fVerXBins, tc.fVerYBins, tc.fVerZBins, tc.fNumContribBins, tc.fNumTrackBins};
20442078
std::vector<std::vector<float>> lQABins = {tc.fCentBins, tc.fMultBins, tc.fNumContribBins};
20452079
std::vector<std::vector<float>> lCrBins = {tc.fCentBins, tc.fFT0CMultBins, tc.fFT0MMultBins, tc.fFV0AMultBins, tc.fNumContribBins, tc.fMultBins};
20462080

@@ -2052,6 +2086,7 @@ struct MultiparticleCumulants { // this name is used in lower-case format to nam
20522086
bookEventHistograms<eVertexY>(lEvBins);
20532087
bookEventHistograms<eVertexZ>(lEvBins);
20542088
bookEventHistograms<eNumContrib>(lEvBins);
2089+
bookEventHistograms<eNumTrack>(lEvBins);
20552090
bookQAHistograms<eCent>(lQABins);
20562091
bookQAHistograms<eMult>(lQABins);
20572092
bookCorrHistograms<eCorrCent>(lCrBins);

0 commit comments

Comments
 (0)