@@ -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
110112enum 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