Skip to content

Commit 6d8d857

Browse files
authored
[PWGLF] use cent instead of mult + bugfixes (#13135)
1 parent d7b231a commit 6d8d857

File tree

1 file changed

+50
-42
lines changed

1 file changed

+50
-42
lines changed

PWGLF/Tasks/Strangeness/cascadecorrelations.cxx

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ using namespace o2::framework::expressions;
5959
using std::array;
6060

6161
// use parameters + cov mat non-propagated, aux info + (extension propagated)
62-
using FullTracksExt = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TracksDCA>;
63-
using FullTracksExtIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA>;
64-
using FullTracksExtWithPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::TracksDCA, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
65-
using FullTracksExtIUWithPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
62+
using FullTracksExt = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov>;
63+
using FullTracksExtIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU>;
64+
using FullTracksExtWithPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
65+
using FullTracksExtIUWithPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCPr>;
6666

6767
Zorro zorro;
6868

@@ -80,7 +80,7 @@ using CascDataExtSelected = soa::Join<CascDataExt, CascadeFlags>;
8080
} // namespace o2::aod
8181

8282
using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::PVMults>;
83-
using MyCollisionsMult = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults>;
83+
using MyCollisionsMult = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>;
8484
using MyCascades = soa::Filtered<aod::CascDataExtSelected>;
8585
using LabeledCascades = soa::Join<aod::CascDataExt, aod::McCascLabels>;
8686

@@ -261,36 +261,44 @@ struct CascadeSelector {
261261
}
262262

263263
template <typename TCollision>
264-
bool eventSelection(TCollision const& collision)
264+
bool eventSelection(TCollision const& collision, bool fillHistos)
265265
{
266266
if (useTrigger) {
267267
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
268268
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), triggerList);
269269
bool eventTrigger = zorro.isSelected(bc.globalBC());
270270
if (eventTrigger) {
271-
registry.fill(HIST("hTriggerQA"), 1);
271+
if (fillHistos)
272+
registry.fill(HIST("hTriggerQA"), 1);
272273
} else {
273-
registry.fill(HIST("hTriggerQA"), 0);
274+
if (fillHistos)
275+
registry.fill(HIST("hTriggerQA"), 0);
274276
return false;
275277
}
276278
}
277279
// fill event selection based on which selection criteria are applied and passed
278-
registry.fill(HIST("hEventSel"), 0);
280+
if (fillHistos)
281+
registry.fill(HIST("hEventSel"), 0);
279282
if (doSel8 && !collision.sel8()) {
280-
registry.fill(HIST("hEventSel"), 1);
283+
if (fillHistos)
284+
registry.fill(HIST("hEventSel"), 1);
281285
return false;
282286
} else if (collision.multNTracksPVeta1() <= INEL) {
283-
registry.fill(HIST("hEventSel"), 2);
287+
if (fillHistos)
288+
registry.fill(HIST("hEventSel"), 2);
284289
return false;
285290
} else if (std::abs(collision.posZ()) > maxVertexZ) {
286-
registry.fill(HIST("hEventSel"), 3);
291+
if (fillHistos)
292+
registry.fill(HIST("hEventSel"), 3);
287293
return false;
288294
} else if (doNoSameBunchPileUp && !collision.selection_bit(aod::evsel::kNoSameBunchPileup)) {
289-
registry.fill(HIST("hEventSel"), 4);
295+
if (fillHistos)
296+
registry.fill(HIST("hEventSel"), 4);
290297
return false;
291298
}
292299
// passes all selections
293-
registry.fill(HIST("hEventSel"), 5);
300+
if (fillHistos)
301+
registry.fill(HIST("hEventSel"), 5);
294302
return true;
295303
}
296304

@@ -528,7 +536,7 @@ struct CascadeSelector {
528536
bool evSel = false; // will be true if at least one rec. collision passes evsel
529537
for (auto const& collision : collisions) {
530538
// can be more than 1 rec. collisions due to event splitting
531-
evSel = eventSelection(collision);
539+
evSel = eventSelection(collision, false);
532540
if (evSel) // exit loop if we find 1 rec. event that passes evsel
533541
break;
534542
}
@@ -564,7 +572,7 @@ struct CascadeSelector {
564572
// wrappers for data/MC processes on reco level
565573
void processRecData(MyCollisions::iterator const& collision, aod::CascDataExt const& Cascades, FullTracksExtIUWithPID const&, aod::BCsWithTimestamps const&)
566574
{
567-
bool evSel = eventSelection(collision);
575+
bool evSel = eventSelection(collision, true);
568576
// do not skip the collision if event selection fails - this will lead to the cascadeFlag table having less entries than the Cascade table, and therefor not joinable.
569577
for (auto const& casc : Cascades) {
570578
if (!evSel) {
@@ -578,7 +586,7 @@ struct CascadeSelector {
578586

579587
void processRecMC(MyCollisions::iterator const& collision, LabeledCascades const& Cascades, FullTracksExtIUWithPID const&, aod::BCsWithTimestamps const&, aod::McParticles const&)
580588
{
581-
bool evSel = eventSelection(collision);
589+
bool evSel = eventSelection(collision, true);
582590
// do not skip the collision if event selection fails - this will lead to the cascadeFlag table having less entries than the Cascade table, and therefor not joinable.
583591
for (auto const& casc : Cascades) {
584592
if (!evSel) {
@@ -620,7 +628,7 @@ struct CascadeCorrelations {
620628
ConfigurableAxis ptAxis = {"ptAxis", {150, 0, 15}, "#it{p}_{T}"};
621629
ConfigurableAxis vertexAxis = {"vertexAxis", {200, -10.0f, 10.0f}, "cm"};
622630
ConfigurableAxis dcaAxis = {"dcaAxis", {100, 0.0f, 2.0f}, "cm"};
623-
ConfigurableAxis multiplicityAxis{"multiplicityAxis", {100, 0, 100}, "Multiplicity (MultFT0M?)"};
631+
ConfigurableAxis multiplicityAxis{"multiplicityAxis", {100, 0, 100}, "Multiplicity (centFT0M?)"};
624632
ConfigurableAxis invLambdaMassAxis{"invLambdaMassAxis", {100, 1.07f, 1.17f}, "Inv. Mass (GeV/c^{2})"};
625633
AxisSpec signAxis{3, -1.5, 1.5, "sign of cascade"};
626634
AxisSpec deltaYAxis{40, -2.f, 2.f, "#Delta y"};
@@ -686,10 +694,10 @@ struct CascadeCorrelations {
686694
"registry",
687695
{
688696
// inv mass
689-
{"hMassXiMinus", "hMassXiMinus", {HistType::kTH2F, {invMassAxis, ptAxis}}},
690-
{"hMassXiPlus", "hMassXiPlus", {HistType::kTH2F, {invMassAxis, ptAxis}}},
691-
{"hMassOmegaMinus", "hMassOmegaMinus", {HistType::kTH2F, {invMassAxis, ptAxis}}},
692-
{"hMassOmegaPlus", "hMassOmegaPlus", {HistType::kTH2F, {invMassAxis, ptAxis}}},
697+
{"hMassXiMinus", "hMassXiMinus", {HistType::kTH3F, {{200, 1.24, 1.44, "Inv. Mass (GeV/c^{2})"}, ptAxis, rapidityAxis}}},
698+
{"hMassXiPlus", "hMassXiPlus", {HistType::kTH3F, {{200, 1.24, 1.44, "Inv. Mass (GeV/c^{2})"}, ptAxis, rapidityAxis}}},
699+
{"hMassOmegaMinus", "hMassOmegaMinus", {HistType::kTH3F, {{200, 1.6, 1.8, "Inv. Mass (GeV/c^{2})"}, ptAxis, rapidityAxis}}},
700+
{"hMassOmegaPlus", "hMassOmegaPlus", {HistType::kTH3F, {{200, 1.6, 1.8, "Inv. Mass (GeV/c^{2})"}, ptAxis, rapidityAxis}}},
693701
// efficiency corrected inv mass
694702
{"hMassXiEffCorrected", "hMassXiEffCorrected", {HistType::kTHnSparseF, {invMassAxis, signAxis, ptAxis, rapidityAxis, vertexAxis, multiplicityAxis}}, true},
695703
{"hMassOmegaEffCorrected", "hMassOmegaEffCorrected", {HistType::kTHnSparseF, {invMassAxis, signAxis, ptAxis, rapidityAxis, vertexAxis, multiplicityAxis}}, true},
@@ -769,7 +777,7 @@ struct CascadeCorrelations {
769777
SliceCache cache;
770778
ConfigurableAxis axisVtxZ{"axisVtxZ", {VARIABLE_WIDTH, -10.0f, -8.f, -6.f, -4.f, -2.f, 0.f, 2.f, 4.f, 6.f, 8.f, 10.f}, "Mixing bins - z-vertex"};
771779
// ConfigurableAxis axisMult{"axisMult", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 100, 1000}, "Mixing bins - multiplicity"};
772-
// using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::mult::MultFT0M<aod::mult::MultFT0A, aod::mult::MultFT0C>>;
780+
// using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::centFT0M>;
773781
// BinningType colBinning{{axisVtxZ, axisMult}, true}; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1.
774782
using BinningType = ColumnBinningPolicy<aod::collision::PosZ>;
775783
BinningType colBinning{{axisVtxZ}, true}; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1.
@@ -793,25 +801,25 @@ struct CascadeCorrelations {
793801
for (auto const& casc : Cascades) {
794802
if (casc.isSelected() <= 2) { // not exclusively an Omega --> consistent with Xi or both
795803
if (casc.sign() < 0) {
796-
registry.fill(HIST("hMassXiMinus"), casc.mXi(), casc.pt());
797-
weight = getEfficiency(hEffXiMin, casc.pt());
804+
registry.fill(HIST("hMassXiMinus"), casc.mXi(), casc.pt(), casc.yXi());
805+
weight = getEfficiency(hEffXiMin, casc.pt(), casc.yXi());
798806
} else {
799-
registry.fill(HIST("hMassXiPlus"), casc.mXi(), casc.pt());
800-
weight = getEfficiency(hEffXiPlus, casc.pt());
807+
registry.fill(HIST("hMassXiPlus"), casc.mXi(), casc.pt(), casc.yXi());
808+
weight = getEfficiency(hEffXiPlus, casc.pt(), casc.yXi());
801809
}
802810
// LOGF(info, "casc pt %f, weight %f", casc.pt(), weight);
803-
registry.fill(HIST("hMassXiEffCorrected"), casc.mXi(), casc.sign(), casc.pt(), casc.yXi(), collision.posZ(), collision.multFT0M(), weight);
811+
registry.fill(HIST("hMassXiEffCorrected"), casc.mXi(), casc.sign(), casc.pt(), casc.yXi(), collision.posZ(), collision.centFT0M(), weight);
804812
registry.fill(HIST("hRapidityXi"), casc.yXi());
805813
}
806814
if (casc.isSelected() >= 2) { // consistent with Omega or both
807815
if (casc.sign() < 0) {
808-
registry.fill(HIST("hMassOmegaMinus"), casc.mOmega(), casc.pt());
809-
weight = getEfficiency(hEffOmegaMin, casc.pt());
816+
registry.fill(HIST("hMassOmegaMinus"), casc.mOmega(), casc.pt(), casc.yOmega());
817+
weight = getEfficiency(hEffOmegaMin, casc.pt(), casc.yOmega());
810818
} else {
811-
registry.fill(HIST("hMassOmegaPlus"), casc.mOmega(), casc.pt());
812-
weight = getEfficiency(hEffOmegaPlus, casc.pt());
819+
registry.fill(HIST("hMassOmegaPlus"), casc.mOmega(), casc.pt(), casc.yOmega());
820+
weight = getEfficiency(hEffOmegaPlus, casc.pt(), casc.yOmega());
813821
}
814-
registry.fill(HIST("hMassOmegaEffCorrected"), casc.mOmega(), casc.sign(), casc.pt(), casc.yOmega(), collision.posZ(), collision.multFT0M(), weight);
822+
registry.fill(HIST("hMassOmegaEffCorrected"), casc.mOmega(), casc.sign(), casc.pt(), casc.yOmega(), collision.posZ(), collision.centFT0M(), weight);
815823
registry.fill(HIST("hRapidityOmega"), casc.yOmega());
816824
}
817825
registry.fill(HIST("hV0Radius"), casc.v0radius());
@@ -870,12 +878,12 @@ struct CascadeCorrelations {
870878
if (assoc.isSelected() <= 2 && std::abs(assoc.yXi()) < maxRapidity) { // assoc Xi
871879
if (doEfficiencyCorrection)
872880
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffXiMin, assoc.pt()) : getEfficiency(hEffXiPlus, assoc.pt());
873-
registry.fill(HIST("hXiXi"), dphi, trigger.yXi() - assoc.yXi(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassXiAssoc, collision.posZ(), collision.multFT0M(), weightTrigg * weightAssoc);
881+
registry.fill(HIST("hXiXi"), dphi, trigger.yXi() - assoc.yXi(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassXiAssoc, collision.posZ(), collision.centFT0M(), weightTrigg * weightAssoc);
874882
}
875883
if (assoc.isSelected() >= 2 && std::abs(assoc.yOmega()) < maxRapidity) { // assoc Omega
876884
if (doEfficiencyCorrection)
877885
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffOmegaMin, assoc.pt()) : getEfficiency(hEffOmegaPlus, assoc.pt());
878-
registry.fill(HIST("hXiOm"), dphi, trigger.yXi() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassOmAssoc, collision.posZ(), collision.multFT0M(), weightTrigg * weightAssoc);
886+
registry.fill(HIST("hXiOm"), dphi, trigger.yXi() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassOmAssoc, collision.posZ(), collision.centFT0M(), weightTrigg * weightAssoc);
879887
}
880888
}
881889
if (trigger.isSelected() >= 2 && std::abs(trigger.yOmega()) < maxRapidity) { // trigger Omega
@@ -885,12 +893,12 @@ struct CascadeCorrelations {
885893
if (doEfficiencyCorrection)
886894
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffXiMin, assoc.pt()) : getEfficiency(hEffXiPlus, assoc.pt());
887895
// if Omega-Xi, fill the Xi-Omega histogram (flip the trigger/assoc and dphy,dy signs)
888-
registry.fill(HIST("hXiOm"), RecoDecay::constrainAngle(assoc.phi() - trigger.phi(), -PIHalf), -(trigger.yOmega() - assoc.yXi()), assoc.sign(), trigger.sign(), assoc.pt(), trigger.pt(), invMassXiAssoc, invMassOmTrigg, collision.posZ(), collision.multFT0M(), weightTrigg * weightAssoc);
896+
registry.fill(HIST("hXiOm"), RecoDecay::constrainAngle(assoc.phi() - trigger.phi(), -PIHalf), -(trigger.yOmega() - assoc.yXi()), assoc.sign(), trigger.sign(), assoc.pt(), trigger.pt(), invMassXiAssoc, invMassOmTrigg, collision.posZ(), collision.centFT0M(), weightTrigg * weightAssoc);
889897
}
890898
if (assoc.isSelected() >= 2 && std::abs(assoc.yOmega()) < maxRapidity) { // assoc Omega
891899
if (doEfficiencyCorrection)
892900
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffOmegaMin, assoc.pt()) : getEfficiency(hEffOmegaPlus, assoc.pt());
893-
registry.fill(HIST("hOmOm"), dphi, trigger.yOmega() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassOmTrigg, invMassOmAssoc, collision.posZ(), collision.multFT0M(), weightTrigg * weightAssoc);
901+
registry.fill(HIST("hOmOm"), dphi, trigger.yOmega() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassOmTrigg, invMassOmAssoc, collision.posZ(), collision.centFT0M(), weightTrigg * weightAssoc);
894902
}
895903
}
896904

@@ -956,12 +964,12 @@ struct CascadeCorrelations {
956964
if (assoc.isSelected() <= 2 && std::abs(assoc.yXi()) < maxRapidity) { // assoc Xi
957965
if (doEfficiencyCorrection)
958966
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffXiMin, assoc.pt()) : getEfficiency(hEffXiPlus, assoc.pt());
959-
registry.fill(HIST("MixedEvents/hMEXiXi"), dphi, trigger.yXi() - assoc.yXi(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassXiAssoc, col1.posZ(), col1.multFT0M(), weightTrigg * weightAssoc);
967+
registry.fill(HIST("MixedEvents/hMEXiXi"), dphi, trigger.yXi() - assoc.yXi(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassXiAssoc, col1.posZ(), col1.centFT0M(), weightTrigg * weightAssoc);
960968
}
961969
if (assoc.isSelected() >= 2 && std::abs(assoc.yOmega()) < maxRapidity) { // assoc Omega
962970
if (doEfficiencyCorrection)
963971
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffOmegaMin, assoc.pt()) : getEfficiency(hEffOmegaPlus, assoc.pt());
964-
registry.fill(HIST("MixedEvents/hMEXiOm"), dphi, trigger.yXi() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassOmAssoc, col1.posZ(), col1.multFT0M(), weightTrigg * weightAssoc);
972+
registry.fill(HIST("MixedEvents/hMEXiOm"), dphi, trigger.yXi() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassXiTrigg, invMassOmAssoc, col1.posZ(), col1.centFT0M(), weightTrigg * weightAssoc);
965973
}
966974
}
967975
if (trigger.isSelected() >= 2 && std::abs(trigger.yOmega()) < maxRapidity) { // trigger Omega
@@ -971,12 +979,12 @@ struct CascadeCorrelations {
971979
if (doEfficiencyCorrection)
972980
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffXiMin, assoc.pt()) : getEfficiency(hEffXiPlus, assoc.pt());
973981
// if Omega-Xi, fill the Xi-Omega histogram (flip the trigger/assoc and dphy,dy signs)
974-
registry.fill(HIST("MixedEvents/hMEXiOm"), RecoDecay::constrainAngle(assoc.phi() - trigger.phi(), -PIHalf), -(trigger.yOmega() - assoc.yXi()), assoc.sign(), trigger.sign(), assoc.pt(), trigger.pt(), invMassXiAssoc, invMassOmTrigg, col1.posZ(), col1.multFT0M(), weightTrigg * weightAssoc);
982+
registry.fill(HIST("MixedEvents/hMEXiOm"), RecoDecay::constrainAngle(assoc.phi() - trigger.phi(), -PIHalf), -(trigger.yOmega() - assoc.yXi()), assoc.sign(), trigger.sign(), assoc.pt(), trigger.pt(), invMassXiAssoc, invMassOmTrigg, col1.posZ(), col1.centFT0M(), weightTrigg * weightAssoc);
975983
}
976984
if (assoc.isSelected() >= 2 && std::abs(assoc.yOmega()) < maxRapidity) { // assoc Omega
977985
if (doEfficiencyCorrection)
978986
weightAssoc = assoc.sign() < 0 ? getEfficiency(hEffOmegaMin, assoc.pt()) : getEfficiency(hEffOmegaPlus, assoc.pt());
979-
registry.fill(HIST("MixedEvents/hMEOmOm"), dphi, trigger.yOmega() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassOmTrigg, invMassOmAssoc, col1.posZ(), col1.multFT0M(), weightTrigg * weightAssoc);
987+
registry.fill(HIST("MixedEvents/hMEOmOm"), dphi, trigger.yOmega() - assoc.yOmega(), trigger.sign(), assoc.sign(), trigger.pt(), assoc.pt(), invMassOmTrigg, invMassOmAssoc, col1.posZ(), col1.centFT0M(), weightTrigg * weightAssoc);
980988
}
981989
}
982990

@@ -1006,7 +1014,7 @@ struct CascadeCorrelations {
10061014
registry.fill(HIST("MC/hSplitEvents"), 1);
10071015
registry.fill(HIST("MC/hGenMultOneReco"), mCounter.countFT0A(mcParticles) + mCounter.countFT0C(mcParticles));
10081016
for (auto const& collision : collisions) { // not really a loop, as there is only one collision
1009-
FT0mult = collision.multFT0M();
1017+
FT0mult = collision.centFT0M();
10101018
vtxz = collision.posZ();
10111019
}
10121020
} else if (collisions.size() > 1) {

0 commit comments

Comments
 (0)