Skip to content

Commit 29f4897

Browse files
authored
[PWGLF] Add correlation histograms (#12845)
1 parent f6a1a57 commit 29f4897

File tree

1 file changed

+71
-48
lines changed

1 file changed

+71
-48
lines changed

PWGLF/Tasks/Strangeness/cascadeAnalysisLightIonsDerivedData.cxx

Lines changed: 71 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ struct CascadeAnalysisLightIonsDerivedData {
9393
Configurable<bool> rejectITSROFBorder{"rejectITSROFBorder", true, "reject events at ITS ROF border"};
9494
Configurable<bool> rejectTFBorder{"rejectTFBorder", true, "reject events at TF border"};
9595
Configurable<bool> requireVertexITSTPC{"requireVertexITSTPC", false, "require events with at least one ITS-TPC track"};
96-
Configurable<bool> requireIsGoodZvtxFT0VsPV{"requireIsGoodZvtxFT0VsPV", false, "require is good Zvtx FT0 vs PV"};
96+
Configurable<bool> requireIsGoodZvtxFT0VsPV{"requireIsGoodZvtxFT0VsPV", true, "require is good Zvtx FT0 vs PV"};
9797
Configurable<bool> requireIsVertexTOFmatched{"requireIsVertexTOFmatched", false, "require events with at least one of vertex contributors matched to TOF"};
9898
Configurable<bool> requireIsVertexTRDmatched{"requireIsVertexTRDmatched", false, "require events with at least one of vertex contributors matched to TRD"};
9999
Configurable<bool> rejectSameBunchPileup{"rejectSameBunchPileup", true, "reject collisions in case of pileup with another collision in the same foundBC"};
@@ -134,6 +134,7 @@ struct CascadeAnalysisLightIonsDerivedData {
134134
ConfigurableAxis centEstimatorHistBin{"centEstimatorHistBin", {501, -0.5, 500.5}, ""};
135135
ConfigurableAxis centralityBinning{"centralityBinning", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, ""};
136136
ConfigurableAxis axisNch{"axisNch", {500, 0.0f, +1000.0f}, "Number of charged particles"};
137+
ConfigurableAxis axisMult{"axisMult", {500, 0.0f, +1000.0f}, "Multiplicity"};
137138

138139
// Centrality estimator
139140
Configurable<int> centralityEstimator{"centralityEstimator", 0, "0 = FT0C, 1 = FTOM, 2 = FV0A, 3 = NGlobal"};
@@ -200,6 +201,7 @@ struct CascadeAnalysisLightIonsDerivedData {
200201
// Multiplicity Histograms
201202
registryData.add("hCentEstimator", "hCentEstimator", HistType::kTH1D, {axisCentEstimator});
202203
registryData.add("hCentralityVsNch", "hCentralityVsNch", HistType::kTH2D, {axisCentEstimator, axisNch});
204+
registryData.add("hCentralityVsMultiplicity", "hCentralityVsMultiplicity", HistType::kTH2D, {axisCentEstimator, axisMult});
203205

204206
// Histograms for xi (data)
205207
registryData.add("hMassXipos", "hMassXipos", HistType::kTH3F, {centAxis, ptAxis, invMassXiAxis});
@@ -244,6 +246,7 @@ struct CascadeAnalysisLightIonsDerivedData {
244246
// Multiplicity Histograms
245247
registryMC.add("hCentEstimator_truerec", "hCentEstimator_truerec", HistType::kTH1D, {axisCentEstimator});
246248
registryMC.add("hCentralityVsNch_truerec", "hCentralityVsNch_truerec", HistType::kTH2D, {axisCentEstimator, axisNch});
249+
registryMC.add("hCentralityVsMultiplicity_truerec", "hCentralityVsMultiplicity_truerec", HistType::kTH2D, {axisCentEstimator, axisMult});
247250

248251
// Histograms for xi (mc)
249252
registryMC.add("hMassXipos_truerec", "hMassXipos_truerec", HistType::kTH3F, {centAxis, ptAxis, invMassXiAxis});
@@ -623,7 +626,7 @@ struct CascadeAnalysisLightIonsDerivedData {
623626
bool atLeastOne = false;
624627
int biggestNContribs = -1;
625628
int nCollisions = 0;
626-
float multiplicitydata = -1.0f;
629+
float centralitydata = -1.0f;
627630
for (auto const& collision : groupedCollisions) {
628631
// event selections
629632
if (applySel8 && !collision.sel8())
@@ -663,29 +666,29 @@ struct CascadeAnalysisLightIonsDerivedData {
663666
if (biggestNContribs < collision.multPVTotalContributors()) {
664667
biggestNContribs = collision.multPVTotalContributors();
665668
if (centralityEstimator == Option::kFT0C)
666-
multiplicitydata = collision.centFT0C();
669+
centralitydata = collision.centFT0C();
667670
if (centralityEstimator == Option::kFT0M)
668-
multiplicitydata = collision.centFT0M();
671+
centralitydata = collision.centFT0M();
669672
if (centralityEstimator == Option::kFV0A)
670-
multiplicitydata = collision.centFV0A();
673+
centralitydata = collision.centFV0A();
671674
if (centralityEstimator == Option::kNGlobal)
672-
multiplicitydata = collision.centNGlobal();
675+
centralitydata = collision.centNGlobal();
673676
}
674677
nCollisions++;
675678

676679
atLeastOne = true;
677680
}
678681

679-
registryMC.fill(HIST("hCentralityVsNcoll_beforeEvSel"), multiplicitydata, groupedCollisions.size());
680-
registryMC.fill(HIST("hCentralityVsNcoll_afterEvSel"), multiplicitydata, nCollisions);
681-
registryMC.fill(HIST("hCentralityVsMultMC"), multiplicitydata, mcCollisions.multMCNParticlesEta05());
682+
registryMC.fill(HIST("hCentralityVsNcoll_beforeEvSel"), centralitydata, groupedCollisions.size());
683+
registryMC.fill(HIST("hCentralityVsNcoll_afterEvSel"), centralitydata, nCollisions);
684+
registryMC.fill(HIST("hCentralityVsMultMC"), centralitydata, mcCollisions.multMCNParticlesEta05());
682685

683686
registryQC.fill(HIST("hVertexZGen"), mcCollisions.posZ());
684687

685688
if (atLeastOne) {
686689
registryMC.fill(HIST("hGenEvents"), mcCollisions.multMCNParticlesEta05(), 1 /* at least 1 rec. event*/);
687690

688-
registryMC.fill(HIST("hGenEventCentrality"), multiplicitydata);
691+
registryMC.fill(HIST("hGenEventCentrality"), centralitydata);
689692
}
690693
}
691694
return;
@@ -747,20 +750,30 @@ struct CascadeAnalysisLightIonsDerivedData {
747750
// Store the Zvtx
748751
registryQC.fill(HIST("hVertexZdata"), std::fabs(collision.posZ()));
749752

750-
// Store the event multiplicity using different estimators
753+
// Store the event centrality using different estimators
754+
float centrality = -1.0f;
751755
float multiplicity = -1.0f;
752756

753-
if (centralityEstimator == Option::kFT0C)
754-
multiplicity = collision.centFT0C();
755-
if (centralityEstimator == Option::kFT0M)
756-
multiplicity = collision.centFT0M();
757-
if (centralityEstimator == Option::kFV0A)
758-
multiplicity = collision.centFV0A();
759-
if (centralityEstimator == Option::kNGlobal)
760-
multiplicity = collision.centNGlobal();
757+
if (centralityEstimator == Option::kFT0C) {
758+
centrality = collision.centFT0C();
759+
multiplicity = collision.multFT0C();
760+
}
761+
if (centralityEstimator == Option::kFT0M) {
762+
centrality = collision.centFT0M();
763+
multiplicity = collision.multFT0C() + collision.multFT0A();
764+
}
765+
if (centralityEstimator == Option::kFV0A) {
766+
centrality = collision.centFV0A();
767+
multiplicity = collision.multFV0A();
768+
}
769+
if (centralityEstimator == Option::kNGlobal) {
770+
centrality = collision.centNGlobal();
771+
multiplicity = collision.multNTracksGlobal();
772+
}
761773

762-
registryData.fill(HIST("hCentEstimator"), multiplicity);
763-
registryData.fill(HIST("hCentralityVsNch"), multiplicity, collision.multNTracksPVeta1());
774+
registryData.fill(HIST("hCentEstimator"), centrality);
775+
registryData.fill(HIST("hCentralityVsNch"), centrality, collision.multNTracksPVeta1());
776+
registryData.fill(HIST("hCentralityVsMultiplicity"), centrality, multiplicity);
764777

765778
// Loop over cascades
766779
for (const auto& casc : fullCascades) {
@@ -788,25 +801,25 @@ struct CascadeAnalysisLightIonsDerivedData {
788801

789802
// ------------------------------------- Store selctions distribution for analysis
790803
if (casc.sign() < 0) {
791-
registryData.fill(HIST("hMassXineg"), multiplicity, casc.pt(), casc.mXi());
792-
registryData.fill(HIST("hMassOmeganeg"), multiplicity, casc.pt(), casc.mOmega());
804+
registryData.fill(HIST("hMassXineg"), centrality, casc.pt(), casc.mXi());
805+
registryData.fill(HIST("hMassOmeganeg"), centrality, casc.pt(), casc.mOmega());
793806
}
794807
if (casc.sign() > 0) {
795-
registryData.fill(HIST("hMassXipos"), multiplicity, casc.pt(), casc.mXi());
796-
registryData.fill(HIST("hMassOmegapos"), multiplicity, casc.pt(), casc.mOmega());
808+
registryData.fill(HIST("hMassXipos"), centrality, casc.pt(), casc.mXi());
809+
registryData.fill(HIST("hMassOmegapos"), centrality, casc.pt(), casc.mOmega());
797810
}
798811

799812
if (casc.sign() < 0 && passedXiSelection(casc, pos, neg, bach, collision)) {
800-
registryData.fill(HIST("hMassXinegSelected"), multiplicity, casc.pt(), casc.mXi());
813+
registryData.fill(HIST("hMassXinegSelected"), centrality, casc.pt(), casc.mXi());
801814
}
802815
if (casc.sign() < 0 && passedOmegaSelection(casc, pos, neg, bach, collision)) {
803-
registryData.fill(HIST("hMassOmeganegSelected"), multiplicity, casc.pt(), casc.mOmega());
816+
registryData.fill(HIST("hMassOmeganegSelected"), centrality, casc.pt(), casc.mOmega());
804817
}
805818
if (casc.sign() > 0 && passedXiSelection(casc, pos, neg, bach, collision)) {
806-
registryData.fill(HIST("hMassXiposSelected"), multiplicity, casc.pt(), casc.mXi());
819+
registryData.fill(HIST("hMassXiposSelected"), centrality, casc.pt(), casc.mXi());
807820
}
808821
if (casc.sign() > 0 && passedOmegaSelection(casc, pos, neg, bach, collision)) {
809-
registryData.fill(HIST("hMassOmegaposSelected"), multiplicity, casc.pt(), casc.mOmega());
822+
registryData.fill(HIST("hMassOmegaposSelected"), centrality, casc.pt(), casc.mOmega());
810823
}
811824
}
812825
}
@@ -869,20 +882,30 @@ struct CascadeAnalysisLightIonsDerivedData {
869882
// Store the Zvtx
870883
registryQC.fill(HIST("hVertexZRec"), RecCol.posZ());
871884

872-
// Store the event multiplicity using different estimators
885+
// Store the event centrality using different estimators
886+
float centralityMcRec = -1.0f;
873887
float multiplicityMcRec = -1.0f;
874888

875-
if (centralityEstimator == Option::kFT0C)
876-
multiplicityMcRec = RecCol.centFT0C();
877-
if (centralityEstimator == Option::kFT0M)
878-
multiplicityMcRec = RecCol.centFT0M();
879-
if (centralityEstimator == Option::kFV0A)
880-
multiplicityMcRec = RecCol.centFV0A();
881-
if (centralityEstimator == Option::kNGlobal)
882-
multiplicityMcRec = RecCol.centNGlobal();
889+
if (centralityEstimator == Option::kFT0C) {
890+
centralityMcRec = RecCol.centFT0C();
891+
multiplicityMcRec = RecCol.multFT0C();
892+
}
893+
if (centralityEstimator == Option::kFT0M) {
894+
centralityMcRec = RecCol.centFT0M();
895+
multiplicityMcRec = RecCol.multFT0C() + RecCol.multFT0A();
896+
}
897+
if (centralityEstimator == Option::kFV0A) {
898+
centralityMcRec = RecCol.centFV0A();
899+
multiplicityMcRec = RecCol.multFV0A();
900+
}
901+
if (centralityEstimator == Option::kNGlobal) {
902+
centralityMcRec = RecCol.centNGlobal();
903+
multiplicityMcRec = RecCol.multNTracksGlobal();
904+
}
883905

884-
registryMC.fill(HIST("hCentEstimator_truerec"), multiplicityMcRec);
885-
registryMC.fill(HIST("hCentralityVsNch_truerec"), multiplicityMcRec, RecCol.multNTracksPVeta1());
906+
registryMC.fill(HIST("hCentEstimator_truerec"), centralityMcRec);
907+
registryMC.fill(HIST("hCentralityVsNch_truerec"), centralityMcRec, RecCol.multNTracksPVeta1());
908+
registryMC.fill(HIST("hCentralityVsMultiplicity_truerec"), centralityMcRec, multiplicityMcRec);
886909

887910
for (const auto& casc : fullCascades) {
888911
if (etaMin > casc.bacheloreta() || casc.bacheloreta() > etaMax ||
@@ -923,33 +946,33 @@ struct CascadeAnalysisLightIonsDerivedData {
923946
// ------------------------------------- Store selctions distribution for analysis
924947
if (casc.sign() < 0) {
925948
if (pdgParent == kXiMinus) {
926-
registryMC.fill(HIST("hMassXineg_truerec"), multiplicityMcRec, ptmc, casc.mXi());
949+
registryMC.fill(HIST("hMassXineg_truerec"), centralityMcRec, ptmc, casc.mXi());
927950
}
928951
if (pdgParent == kOmegaMinus) {
929-
registryMC.fill(HIST("hMassOmeganeg_truerec"), multiplicityMcRec, ptmc, casc.mOmega());
952+
registryMC.fill(HIST("hMassOmeganeg_truerec"), centralityMcRec, ptmc, casc.mOmega());
930953
}
931954
}
932955

933956
if (casc.sign() > 0) {
934957
if (pdgParent == kXiPlusBar) {
935-
registryMC.fill(HIST("hMassXipos_truerec"), multiplicityMcRec, ptmc, casc.mXi());
958+
registryMC.fill(HIST("hMassXipos_truerec"), centralityMcRec, ptmc, casc.mXi());
936959
}
937960
if (pdgParent == kOmegaPlusBar) {
938-
registryMC.fill(HIST("hMassOmegapos_truerec"), multiplicityMcRec, ptmc, casc.mOmega());
961+
registryMC.fill(HIST("hMassOmegapos_truerec"), centralityMcRec, ptmc, casc.mOmega());
939962
}
940963
}
941964

942965
if (casc.sign() < 0 && pdgParent == kXiMinus && passedXiSelection(casc, pos, neg, bach, RecCol)) {
943-
registryMC.fill(HIST("hMassXinegSelected_truerec"), multiplicityMcRec, ptmc, casc.mXi());
966+
registryMC.fill(HIST("hMassXinegSelected_truerec"), centralityMcRec, ptmc, casc.mXi());
944967
}
945968
if (casc.sign() < 0 && pdgParent == kOmegaMinus && passedOmegaSelection(casc, pos, neg, bach, RecCol)) {
946-
registryMC.fill(HIST("hMassOmeganegSelected_truerec"), multiplicityMcRec, ptmc, casc.mOmega());
969+
registryMC.fill(HIST("hMassOmeganegSelected_truerec"), centralityMcRec, ptmc, casc.mOmega());
947970
}
948971
if (casc.sign() > 0 && pdgParent == kXiPlusBar && passedXiSelection(casc, pos, neg, bach, RecCol)) {
949-
registryMC.fill(HIST("hMassXiposSelected_truerec"), multiplicityMcRec, ptmc, casc.mXi());
972+
registryMC.fill(HIST("hMassXiposSelected_truerec"), centralityMcRec, ptmc, casc.mXi());
950973
}
951974
if (casc.sign() > 0 && pdgParent == kOmegaPlusBar && passedOmegaSelection(casc, pos, neg, bach, RecCol)) {
952-
registryMC.fill(HIST("hMassOmegaposSelected_truerec"), multiplicityMcRec, ptmc, casc.mOmega());
975+
registryMC.fill(HIST("hMassOmegaposSelected_truerec"), centralityMcRec, ptmc, casc.mOmega());
953976
}
954977
} // casc loop
955978
} // rec.collision loop

0 commit comments

Comments
 (0)