Skip to content

Commit b4fd3f9

Browse files
ddobrigkalibuild
andauthored
Updates to efficiency calculation (AliceO2Group#3462)
* Updates to efficiency calculation * Please consider the following formatting changes (AliceO2Group#169) * Add eta and Y versions of efficiency numerators --------- Co-authored-by: David Dobrigkeit Chinellato <david.dobrigkeit.chinellato.cern.ch> Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent 65fe23a commit b4fd3f9

File tree

2 files changed

+120
-5
lines changed

2 files changed

+120
-5
lines changed

PWGLF/DataModel/LFStrangenessTables.h

+18
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,14 @@ DECLARE_SOA_DYNAMIC_COLUMN(YHypertriton, yHypertriton, //! V0 y with hypertriton
162162
[](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) -> float { return RecoDecay::y(std::array{2.0f * pxpos + pxneg, 2.0f * pypos + pyneg, 2.0f * pzpos + pzneg}, o2::constants::physics::MassHyperTriton); });
163163
DECLARE_SOA_DYNAMIC_COLUMN(YAntiHypertriton, yAntiHypertriton, //! V0 y with antihypertriton hypothesis
164164
[](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) -> float { return RecoDecay::y(std::array{pxpos + 2.0f * pxneg, pypos + 2.0f * pyneg, pzpos + 2.0f * pzneg}, o2::constants::physics::MassHyperTriton); });
165+
DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! rapidity (0:K0, 1:L, 2:Lbar)
166+
[](float Px, float Py, float Pz, int value) -> float {
167+
if (value == 0)
168+
return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassKaonNeutral);
169+
if (value == 1 || value == 2)
170+
return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassLambda);
171+
return 0.0f;
172+
});
165173
DECLARE_SOA_DYNAMIC_COLUMN(Eta, eta, //! V0 eta
166174
[](float Px, float Py, float Pz) -> float { return RecoDecay::eta(std::array{Px, Py, Pz}); });
167175
DECLARE_SOA_DYNAMIC_COLUMN(Phi, phi, //! V0 phi
@@ -225,6 +233,7 @@ DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA", //!
225233
v0data::YLambda<v0data::Px, v0data::Py, v0data::Pz>,
226234
v0data::YHypertriton<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
227235
v0data::YAntiHypertriton<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
236+
v0data::Rapidity<v0data::Px, v0data::Py, v0data::Pz>,
228237
v0data::Eta<v0data::Px, v0data::Py, v0data::Pz>,
229238
v0data::Phi<v0data::Px, v0data::Py>,
230239
v0data::NegativePt<v0data::PxNeg, v0data::PyNeg>,
@@ -399,6 +408,14 @@ DECLARE_SOA_DYNAMIC_COLUMN(YXi, yXi, //!
399408
[](float Px, float Py, float Pz) -> float { return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassXiMinus); });
400409
DECLARE_SOA_DYNAMIC_COLUMN(YOmega, yOmega, //!
401410
[](float Px, float Py, float Pz) -> float { return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassOmegaMinus); });
411+
DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! rapidity (0, 1: Xi; 2, 3: Omega)
412+
[](float Px, float Py, float Pz, int value) -> float {
413+
if (value == 0 || value == 1)
414+
return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassXiMinus);
415+
if (value == 2 || value == 3)
416+
return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassOmegaMinus);
417+
return 0.0f;
418+
});
402419
DECLARE_SOA_DYNAMIC_COLUMN(Eta, eta, //!
403420
[](float Px, float Py, float Pz) -> float { return RecoDecay::eta(std::array{Px, Py, Pz}); });
404421
DECLARE_SOA_DYNAMIC_COLUMN(Phi, phi, //! cascade phi
@@ -443,6 +460,7 @@ DECLARE_SOA_TABLE(StoredCascDatas, "AOD", "CASCDATA", //!
443460
// Longitudinal
444461
cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
445462
cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
463+
cascdata::Rapidity<cascdata::Px, cascdata::Py, cascdata::Pz>,
446464
cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
447465
cascdata::Phi<cascdata::Px, cascdata::Py>);
448466

PWGLF/Tasks/hStrangeCorrelation.cxx

+102-5
Original file line numberDiff line numberDiff line change
@@ -427,24 +427,28 @@ struct correlateStrangeness {
427427

428428
if (bitcheck(doCorrelation, 0)) {
429429
histos.add("h3dK0ShortSpectrum", "h3dK0ShortSpectrum", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
430+
histos.add("h3dK0ShortSpectrumY", "h3dK0ShortSpectrumY", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
430431
histos.add("hK0ShortEtaVsPtVsPhi", "hK0ShortEtaVsPtVsPhi", kTH3F, {axisPtQA, axisEta, axisPhi});
431432
histos.add("hK0ShortEtaVsPtVsPhiBg", "hK0ShortEtaVsPtVsPhiBg", kTH3F, {axisPtQA, axisEta, axisPhi});
432433
histos.add("sameEvent/Signal/K0Short", "K0Short", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
433434
}
434435
if (bitcheck(doCorrelation, 1)) {
435436
histos.add("h3dLambdaSpectrum", "h3dLambdaSpectrum", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
437+
histos.add("h3dLambdaSpectrumY", "h3dLambdaSpectrumY", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
436438
histos.add("hLambdaEtaVsPtVsPhi", "hLambdaEtaVsPtVsPhi", kTH3F, {axisPtQA, axisEta, axisPhi});
437439
histos.add("hLambdaEtaVsPtVsPhiBg", "hLambdaEtaVsPtVsPhiBg", kTH3F, {axisPtQA, axisEta, axisPhi});
438440
histos.add("sameEvent/Signal/Lambda", "Lambda", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
439441
}
440442
if (bitcheck(doCorrelation, 2)) {
441443
histos.add("h3dAntiLambdaSpectrum", "h3dAntiLambdaSpectrum", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
444+
histos.add("h3dAntiLambdaSpectrumY", "h3dAntiLambdaSpectrumY", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
442445
histos.add("hAntiLambdaEtaVsPtVsPhi", "hAntiLambdaEtaVsPtVsPhi", kTH3F, {axisPtQA, axisEta, axisPhi});
443446
histos.add("hAntiLambdaEtaVsPtVsPhiBg", "hAntiLambdaEtaVsPtVsPhiBg", kTH3F, {axisPtQA, axisEta, axisPhi});
444447
histos.add("sameEvent/Signal/AntiLambda", "AntiLambda", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
445448
}
446449
if (bitcheck(doCorrelation, 3)) {
447450
histos.add("h3dXiMinusSpectrum", "h3dXiMinusSpectrum", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
451+
histos.add("h3dXiMinusSpectrumY", "h3dXiMinusSpectrumY", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
448452
histos.add("hXiMinusEtaVsPtVsPhi", "hXiMinusEtaVsPtVsPhi", kTH3F, {axisPtQA, axisEta, axisPhi});
449453
histos.add("hXiMinusEtaVsPtVsPhiBg", "hXiMinusEtaVsPtVsPhiBg", kTH3F, {axisPtQA, axisEta, axisPhi});
450454
histos.add("sameEvent/Signal/XiMinus", "XiMinus", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
@@ -457,12 +461,14 @@ struct correlateStrangeness {
457461
}
458462
if (bitcheck(doCorrelation, 5)) {
459463
histos.add("h3dOmegaMinusSpectrum", "h3dOmegaMinusSpectrum", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
464+
histos.add("h3dOmegaMinusSpectrumY", "h3dOmegaMinusSpectrumY", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
460465
histos.add("hOmegaMinusEtaVsPtVsPhi", "hOmegaMinusEtaVsPtVsPhi", kTH3F, {axisPtQA, axisEta, axisPhi});
461466
histos.add("hOmegaMinusEtaVsPtVsPhiBg", "hOmegaMinusEtaVsPtVsPhiBg", kTH3F, {axisPtQA, axisEta, axisPhi});
462467
histos.add("sameEvent/Signal/OmegaMinus", "OmegaMinus", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
463468
}
464469
if (bitcheck(doCorrelation, 6)) {
465470
histos.add("h3dOmegaPlusSpectrum", "h3dOmegaPlusSpectrum", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
471+
histos.add("h3dOmegaPlusSpectrumY", "h3dOmegaPlusSpectrumY", kTH3F, {axisPtQA, axisMult, {3, 0.5f, 3.5f}});
466472
histos.add("hOmegaPlusEtaVsPtVsPhi", "hOmegaPlusEtaVsPtVsPhi", kTH3F, {axisPtQA, axisEta, axisPhi});
467473
histos.add("hOmegaPlusEtaVsPtVsPhiBg", "hOmegaPlusEtaVsPtVsPhiBg", kTH3F, {axisPtQA, axisEta, axisPhi});
468474
histos.add("sameEvent/Signal/OmegaPlus", "OmegaPlus", kTHnF, {axisDeltaPhiNDim, axisDeltaEtaNDim, axisPtAssocNDim, axisPtTriggerNDim, axisVtxZNDim, axisMultNDim});
@@ -513,6 +519,25 @@ struct correlateStrangeness {
513519
histos.add("Generated/hOmegaPlus", "", kTH2F, {axisPtQA, axisEta});
514520

515521
histos.addClone("Generated/", "GeneratedWithPV/");
522+
523+
// histograms within |y|<0.5, vs multiplicity
524+
histos.add("GeneratedWithPV/hPion_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
525+
histos.add("GeneratedWithPV/hK0Short_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
526+
histos.add("GeneratedWithPV/hLambda_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
527+
histos.add("GeneratedWithPV/hAntiLambda_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
528+
histos.add("GeneratedWithPV/hXiMinus_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
529+
histos.add("GeneratedWithPV/hXiPlus_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
530+
histos.add("GeneratedWithPV/hOmegaMinus_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
531+
histos.add("GeneratedWithPV/hOmegaPlus_MidYVsMult", "", kTH2F, {axisPtQA, axisMult});
532+
533+
histos.add("GeneratedWithPV/hPion_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
534+
histos.add("GeneratedWithPV/hK0Short_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
535+
histos.add("GeneratedWithPV/hLambda_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
536+
histos.add("GeneratedWithPV/hAntiLambda_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
537+
histos.add("GeneratedWithPV/hXiMinus_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
538+
histos.add("GeneratedWithPV/hXiPlus_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
539+
histos.add("GeneratedWithPV/hOmegaMinus_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
540+
histos.add("GeneratedWithPV/hOmegaPlus_MidYVsMult_TwoPVsOrMore", "", kTH2F, {axisPtQA, axisMult});
516541
}
517542
}
518543

@@ -544,6 +569,9 @@ struct correlateStrangeness {
544569
constexpr int index = i.value;
545570
if (v0.compatible(index) && (!doMCassociation || v0.mcTrue(index)) && bitcheck(doCorrelation, index)) {
546571
histos.fill(HIST("h3d") + HIST(v0names[index]) + HIST("Spectrum"), v0Data.pt(), collision.centFT0M(), v0.invMassRegion(index));
572+
if (std::abs(v0Data.rapidity(index)) < 0.5) {
573+
histos.fill(HIST("h3d") + HIST(v0names[index]) + HIST("SpectrumY"), v0Data.pt(), collision.centFT0M(), v0.invMassRegion(index));
574+
}
547575
if (v0.invMassRegionCheck(index, 2))
548576
histos.fill(HIST("h") + HIST(v0names[index]) + HIST("EtaVsPtVsPhi"), v0Data.pt(), v0Data.eta(), v0Data.phi());
549577
if (v0.invMassRegionCheck(index, 1) || v0.invMassRegionCheck(index, 3))
@@ -589,6 +617,9 @@ struct correlateStrangeness {
589617
constexpr int index = i.value;
590618
if (casc.compatible(index) && (!doMCassociation || casc.mcTrue(index)) && bitcheck(doCorrelation, index + 3)) {
591619
histos.fill(HIST("h3d") + HIST(cascadenames[index]) + HIST("Spectrum"), cascData.pt(), collision.centFT0M(), casc.invMassRegion(index));
620+
if (std::abs(cascData.rapidity(index)) < 0.5) {
621+
histos.fill(HIST("h3d") + HIST(cascadenames[index]) + HIST("SpectrumY"), cascData.pt(), collision.centFT0M(), casc.invMassRegion(index));
622+
}
592623
if (casc.invMassRegionCheck(index, 2))
593624
histos.fill(HIST("h") + HIST(cascadenames[index]) + HIST("EtaVsPtVsPhi"), cascData.pt(), cascData.eta(), cascData.phi());
594625
if (casc.invMassRegionCheck(index, 1) || casc.invMassRegionCheck(index, 3))
@@ -739,7 +770,7 @@ struct correlateStrangeness {
739770
fillCorrelationsPion(slicedTriggerTracks, slicedAssocPions, true, collision1.posZ(), collision1.centFT0M());
740771
}
741772
}
742-
void processMCGenerated(aod::McCollision const& mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions>> const& collisions, aod::McParticles const& mcParticles)
773+
void processMCGenerated(aod::McCollision const& mcCollision, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::CentFT0Ms>> const& collisions, aod::McParticles const& mcParticles)
743774
{
744775
for (auto const& mcParticle : mcParticles) {
745776
if (!mcParticle.isPhysicalPrimary())
@@ -757,14 +788,61 @@ struct correlateStrangeness {
757788
if (mcParticle.pdgCode() == -3312)
758789
histos.fill(HIST("Generated/hXiPlus"), mcParticle.pt(), mcParticle.eta());
759790
if (mcParticle.pdgCode() == 3334)
760-
histos.fill(HIST("Generated/hXiMinus"), mcParticle.pt(), mcParticle.eta());
791+
histos.fill(HIST("Generated/hOmegaMinus"), mcParticle.pt(), mcParticle.eta());
761792
if (mcParticle.pdgCode() == -3334)
762-
histos.fill(HIST("Generated/hXiPlus"), mcParticle.pt(), mcParticle.eta());
793+
histos.fill(HIST("Generated/hOmegaPlus"), mcParticle.pt(), mcParticle.eta());
763794
}
764795

765796
if (collisions.size() < 1)
766797
return;
767798

799+
// determine best collision properties
800+
int biggestNContribs = -1;
801+
int bestCollisionFT0Mpercentile = -1;
802+
float bestCollisionVtxZ = 0.0f;
803+
bool bestCollisionSel8 = false;
804+
for (auto& collision : collisions) {
805+
if (biggestNContribs < collision.numContrib()) {
806+
biggestNContribs = collision.numContrib();
807+
bestCollisionFT0Mpercentile = collision.centFT0M();
808+
bestCollisionSel8 = collision.sel8();
809+
bestCollisionVtxZ = collision.posZ();
810+
}
811+
}
812+
813+
if (collisions.size() > 1) {
814+
for (auto const& mcParticle : mcParticles) {
815+
if (!mcParticle.isPhysicalPrimary())
816+
continue;
817+
if (abs(mcParticle.y()) < 0.5) {
818+
if (abs(mcParticle.pdgCode()) == 211)
819+
histos.fill(HIST("GeneratedWithPV/hPion_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
820+
if (abs(mcParticle.pdgCode()) == 310)
821+
histos.fill(HIST("GeneratedWithPV/hK0Short_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
822+
if (mcParticle.pdgCode() == 3122)
823+
histos.fill(HIST("GeneratedWithPV/hLambda_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
824+
if (mcParticle.pdgCode() == -3122)
825+
histos.fill(HIST("GeneratedWithPV/hAntiLambda_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
826+
if (mcParticle.pdgCode() == 3312)
827+
histos.fill(HIST("GeneratedWithPV/hXiMinus_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
828+
if (mcParticle.pdgCode() == -3312)
829+
histos.fill(HIST("GeneratedWithPV/hXiPlus_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
830+
if (mcParticle.pdgCode() == 3334)
831+
histos.fill(HIST("GeneratedWithPV/hOmegaMinus_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
832+
if (mcParticle.pdgCode() == -3334)
833+
histos.fill(HIST("GeneratedWithPV/hOmegaPlus_MidYVsMult_TwoPVsOrMore"), mcParticle.pt(), bestCollisionFT0Mpercentile);
834+
}
835+
}
836+
}
837+
838+
// do selections on best collision
839+
// WARNING: if 2 PV case large, this will not necessarily be fine!
840+
// caution advised!
841+
if (!bestCollisionSel8)
842+
return;
843+
if (std::abs(bestCollisionVtxZ) > 10.0f)
844+
return;
845+
768846
for (auto const& mcParticle : mcParticles) {
769847
if (!mcParticle.isPhysicalPrimary())
770848
continue;
@@ -781,9 +859,28 @@ struct correlateStrangeness {
781859
if (mcParticle.pdgCode() == -3312)
782860
histos.fill(HIST("GeneratedWithPV/hXiPlus"), mcParticle.pt(), mcParticle.eta());
783861
if (mcParticle.pdgCode() == 3334)
784-
histos.fill(HIST("GeneratedWithPV/hXiMinus"), mcParticle.pt(), mcParticle.eta());
862+
histos.fill(HIST("GeneratedWithPV/hOmegaMinus"), mcParticle.pt(), mcParticle.eta());
785863
if (mcParticle.pdgCode() == -3334)
786-
histos.fill(HIST("GeneratedWithPV/hXiPlus"), mcParticle.pt(), mcParticle.eta());
864+
histos.fill(HIST("GeneratedWithPV/hOmegaPlus"), mcParticle.pt(), mcParticle.eta());
865+
866+
if (abs(mcParticle.y()) < 0.5) {
867+
if (abs(mcParticle.pdgCode()) == 211)
868+
histos.fill(HIST("Generated/hPion_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
869+
if (abs(mcParticle.pdgCode()) == 310)
870+
histos.fill(HIST("Generated/hK0Short_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
871+
if (mcParticle.pdgCode() == 3122)
872+
histos.fill(HIST("Generated/hLambda_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
873+
if (mcParticle.pdgCode() == -3122)
874+
histos.fill(HIST("Generated/hAntiLambda_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
875+
if (mcParticle.pdgCode() == 3312)
876+
histos.fill(HIST("Generated/hXiMinus_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
877+
if (mcParticle.pdgCode() == -3312)
878+
histos.fill(HIST("Generated/hXiPlus_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
879+
if (mcParticle.pdgCode() == 3334)
880+
histos.fill(HIST("Generated/hOmegaMinus_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
881+
if (mcParticle.pdgCode() == -3334)
882+
histos.fill(HIST("Generated/hOmegaPlus_MidYVsMult"), mcParticle.pt(), bestCollisionFT0Mpercentile);
883+
}
787884
}
788885
}
789886

0 commit comments

Comments
 (0)