Skip to content

Commit 72237e7

Browse files
authored
[PWGLF] Add new process to produce feed down matrix (#10741)
1 parent 928aa0d commit 72237e7

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ using namespace o2::framework::expressions;
4747

4848
using TracksComplete = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>;
4949
using V0DatasWithoutTrackX = soa::Join<aod::V0Indices, aod::V0Cores>;
50+
using V0DatasWithoutTrackXMC = soa::Join<aod::V0Indices, aod::V0Cores, aod::McV0Labels>;
5051

5152
struct HStrangeCorrelation {
5253
// for efficiency corrections if requested
@@ -654,6 +655,8 @@ struct HStrangeCorrelation {
654655
const AxisSpec preAxisPtTrigger{axisPtTrigger, "#it{p}_{T}^{trigger} (GeV/c)"};
655656
const AxisSpec preAxisVtxZ{axisVtxZ, "vertex Z (cm)"};
656657
const AxisSpec preAxisMult{axisMult, "mult percentile"};
658+
const AxisSpec axisPtLambda{axisPtAssoc, "#it{p}_{T}^{#Lambda} (GeV/c)"};
659+
const AxisSpec axisPtCascade{axisPtAssoc, "#it{p}_{T}^{Mother} (GeV/c)"};
657660

658661
// store the original axes in specific TH1Cs for completeness
659662
histos.add("axes/hDeltaPhiAxis", "", kTH1C, {preAxisDeltaPhi});
@@ -882,6 +885,14 @@ struct HStrangeCorrelation {
882885
}
883886
histos.add("ClosureTest/hTrigger", "Trigger Tracks", kTH3F, {axisPtQA, axisEta, axisMult});
884887
}
888+
if (doprocessFeedDown) {
889+
histos.add("hLambdaXiMinusFeeddownMatrix", "hLambdaXiMinusFeeddownMatrix", kTH2F, {axisPtLambda, axisPtCascade});
890+
histos.add("hLambdaXiZeroFeeddownMatrix", "hLambdaXiZeroFeeddownMatrix", kTH2F, {axisPtLambda, axisPtCascade});
891+
histos.add("hLambdaOmegaFeeddownMatrix", "hLambdaOmegaFeeddownMatrix", kTH2F, {axisPtLambda, axisPtCascade});
892+
histos.add("hAntiLambdaXiPlusFeeddownMatrix", "hAntiLambdaXiPlusFeeddownMatrix", kTH2F, {axisPtLambda, axisPtCascade});
893+
histos.add("hAntiLambdaXiZeroFeeddownMatrix", "hAntiLambdaXiZeroFeeddownMatrix", kTH2F, {axisPtLambda, axisPtCascade});
894+
histos.add("hAntiLambdaOmegaFeeddownMatrix", "hAntiLambdaOmegaFeeddownMatrix", kTH2F, {axisPtLambda, axisPtCascade});
895+
}
885896

886897
// visual inspection of sizes
887898
histos.print();
@@ -1780,6 +1791,72 @@ struct HStrangeCorrelation {
17801791
}
17811792
}
17821793

1794+
void processFeedDown(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::PVMults>::iterator const& collision, aod::AssocV0s const& associatedV0s, aod::McParticles const&, V0DatasWithoutTrackXMC const&, TracksComplete const&, aod::BCsWithTimestamps const&)
1795+
{
1796+
1797+
// ________________________________________________
1798+
// Perform basic event selection
1799+
if (!isCollisionSelected(collision)) {
1800+
return;
1801+
}
1802+
1803+
for (auto const& v0 : associatedV0s) {
1804+
auto v0Data = v0.v0Core_as<V0DatasWithoutTrackXMC>();
1805+
1806+
//---] track quality check [---
1807+
auto postrack = v0Data.posTrack_as<TracksComplete>();
1808+
auto negtrack = v0Data.negTrack_as<TracksComplete>();
1809+
if (postrack.tpcNClsCrossedRows() < systCuts.minTPCNCrossedRowsAssociated || negtrack.tpcNClsCrossedRows() < systCuts.minTPCNCrossedRowsAssociated)
1810+
continue;
1811+
1812+
//---] syst cuts [---
1813+
if (v0Data.v0radius() < systCuts.v0RadiusMin || v0Data.v0radius() > systCuts.v0RadiusMax ||
1814+
std::abs(v0Data.dcapostopv()) < systCuts.dcapostopv || std::abs(v0Data.dcanegtopv()) < systCuts.dcanegtopv ||
1815+
v0Data.v0cosPA() < systCuts.v0cospa || v0Data.dcaV0daughters() > systCuts.dcaV0dau)
1816+
continue;
1817+
1818+
if (v0Data.has_mcParticle()) {
1819+
auto v0mcParticle = v0Data.mcParticle_as<aod::McParticles>();
1820+
int mcParticlePdg = v0mcParticle.pdgCode();
1821+
if (mcParticlePdg == 3122 && !v0mcParticle.isPhysicalPrimary()) {
1822+
auto v0mothers = v0mcParticle.mothers_as<aod::McParticles>();
1823+
if (!v0mothers.empty()) {
1824+
auto& v0mcParticleMother = v0mothers.front(); // First mother
1825+
if (v0mcParticleMother.pdgCode() == 3312) // Xi Minus Mother Matched
1826+
{
1827+
histos.fill(HIST("hLambdaXiMinusFeeddownMatrix"), v0mcParticle.pt(), v0mcParticleMother.pt());
1828+
}
1829+
if (v0mcParticleMother.pdgCode() == 3322) // Xi Zero Mother Matched
1830+
{
1831+
histos.fill(HIST("hLambdaXiZeroFeeddownMatrix"), v0mcParticle.pt(), v0mcParticleMother.pt());
1832+
}
1833+
if (v0mcParticleMother.pdgCode() == 3334) // Omega Mother Matched
1834+
{
1835+
histos.fill(HIST("hLambdaOmegaFeeddownMatrix"), v0mcParticle.pt(), v0mcParticleMother.pt());
1836+
}
1837+
}
1838+
}
1839+
if (mcParticlePdg == -3122 && !v0mcParticle.isPhysicalPrimary()) {
1840+
auto v0mothers = v0mcParticle.mothers_as<aod::McParticles>();
1841+
if (!v0mothers.empty()) {
1842+
auto& v0mcParticleMother = v0mothers.front(); // First mother
1843+
if (v0mcParticleMother.pdgCode() == -3312) // Xi Plus Mother Matched
1844+
{
1845+
histos.fill(HIST("hAntiLambdaXiPlusFeeddownMatrix"), v0mcParticle.pt(), v0mcParticleMother.pt());
1846+
}
1847+
if (v0mcParticleMother.pdgCode() == -3322) // Anti Xi Zero Mother Matched
1848+
{
1849+
histos.fill(HIST("hAntiLambdaXiZeroFeeddownMatrix"), v0mcParticle.pt(), v0mcParticleMother.pt());
1850+
}
1851+
if (v0mcParticleMother.pdgCode() == -3334) // Omega Mother Matched
1852+
{
1853+
histos.fill(HIST("hAntiLambdaOmegaFeeddownMatrix"), v0mcParticle.pt(), v0mcParticleMother.pt());
1854+
}
1855+
}
1856+
}
1857+
}
1858+
}
1859+
}
17831860
PROCESS_SWITCH(HStrangeCorrelation, processSelectEventWithTrigger, "Select events with trigger only", true);
17841861
PROCESS_SWITCH(HStrangeCorrelation, processSameEventHV0s, "Process same events, h-V0s", true);
17851862
PROCESS_SWITCH(HStrangeCorrelation, processSameEventHCascades, "Process same events, h-Cascades", true);
@@ -1793,6 +1870,7 @@ struct HStrangeCorrelation {
17931870

17941871
PROCESS_SWITCH(HStrangeCorrelation, processMCGenerated, "Process MC generated", false);
17951872
PROCESS_SWITCH(HStrangeCorrelation, processClosureTest, "Process Closure Test", false);
1873+
PROCESS_SWITCH(HStrangeCorrelation, processFeedDown, "process Feed Down", false);
17961874
};
17971875

17981876
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)