From 94505836b35c54c29708b069e6c37069435ce84d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Jacazio?= Date: Wed, 1 Oct 2025 11:06:13 +0200 Subject: [PATCH] Enhance histogram registration for reconstructed particles Updated the registration of reconstructed histograms to include additional parameters for K and K0s particles. --- PWGLF/Tasks/QC/systematicsMapping.cxx | 42 +++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/PWGLF/Tasks/QC/systematicsMapping.cxx b/PWGLF/Tasks/QC/systematicsMapping.cxx index 13330e97042..1b26b3b525a 100644 --- a/PWGLF/Tasks/QC/systematicsMapping.cxx +++ b/PWGLF/Tasks/QC/systematicsMapping.cxx @@ -98,9 +98,9 @@ struct SystematicsMapping { registry.add("K/GeneratedPositive", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis}); registry.add("K/GeneratedNegative", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis}); registry.add("K0s/Generated", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis}); - registry.add("K/ReconstructedPositive", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis}); - registry.add("K/ReconstructedNegative", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis}); - registry.add("K0s/Reconstructed", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis}); + registry.add("K/ReconstructedPositive", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis}); + registry.add("K/ReconstructedNegative", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis}); + registry.add("K0s/Reconstructed", "", HistType::kTHnSparseF, {ptAxis, etaAxis, phiAxis, invariantMassBins, nsigmaAxisTPC, nsigmaAxisTOF, tpcCrossedRowsAxis, itsClustersAxis, dcaXYAxis, dcaZAxis, chi2TPCAxis, chi2ITSAxis}); } } @@ -165,6 +165,7 @@ struct SystematicsMapping { void processMc(soa::Join const& collisions, soa::Join const& tracks, + soa::Join const& v0s, aod::McParticles const& particles, aod::McCollisions const&) { @@ -187,16 +188,47 @@ struct SystematicsMapping { continue; switch (mcParticle.pdgCode()) { case 321: // K+ - registry.fill(HIST("K/ReconstructedPositive"), track.pt(), track.eta(), track.phi()); + registry.fill(HIST("K/ReconstructedPositive"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.tpcNClsCrossedRows(), track.itsNCls(), track.dcaXY(), track.dcaZ(), track.tpcChi2NCl(), track.itsChi2NCl()); break; case -321: // K- - registry.fill(HIST("K/ReconstructedNegative"), track.pt(), track.eta(), track.phi()); + registry.fill(HIST("K/ReconstructedNegative"), track.pt(), track.eta(), track.phi(), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.tpcNClsCrossedRows(), track.itsNCls(), track.dcaXY(), track.dcaZ(), track.tpcChi2NCl(), track.itsChi2NCl()); break; default: break; } } + for (const auto& v0 : v0s) { + if (v0.collisionId() != collision.globalIndex()) + continue; + if (!v0.has_mcParticle()) + continue; + const auto& mcParticle = v0.mcParticle(); + if (mcParticle.mcCollisionId() != mcCollision.globalIndex()) + continue; + if (!mcParticle.isPhysicalPrimary()) + continue; + if (std::abs(mcParticle.pdgCode()) != 310) + continue; + const auto& posTrack = v0.posTrack_as(); + const auto& negTrack = v0.negTrack_as(); + if (v0.v0radius() < v0radius || + v0.v0cosPA() < v0cospa || + std::abs(posTrack.eta()) > etadau || + std::abs(negTrack.eta()) > etadau) + continue; + + registry.fill(HIST("K0s/Reconstructed"), v0.pt(), v0.eta(), v0.phi(), v0.mK0Short() - constants::physics::MassK0Short, + std::max(posTrack.tpcNSigmaPi(), negTrack.tpcNSigmaPi()), + std::max(posTrack.tofNSigmaPi(), negTrack.tofNSigmaPi()), + std::min(posTrack.tpcNClsCrossedRows(), negTrack.tpcNClsCrossedRows()), + std::min(posTrack.itsNCls(), negTrack.itsNCls()), + std::min(posTrack.dcaXY(), negTrack.dcaXY()), + std::min(posTrack.dcaZ(), negTrack.dcaZ()), + std::min(posTrack.tpcChi2NCl(), negTrack.tpcChi2NCl()), + std::min(posTrack.itsChi2NCl(), negTrack.itsChi2NCl())); + } + for (const auto& particle : particles) { if (particle.mcCollisionId() != mcCollision.globalIndex()) continue;