From 79eb21aaa7eb80192f9305d6d06c79d82d3a92a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Jacazio?= Date: Mon, 8 Apr 2024 08:13:04 +0200 Subject: [PATCH] [PWG-LF] spectra TOF add mismatched info - fix multiplicity for MC --- PWGLF/DataModel/spectraTOF.h | 24 +++++++ PWGLF/Tasks/Nuspex/spectraTOF.cxx | 109 ++++++++++++++++++++++++++---- 2 files changed, 121 insertions(+), 12 deletions(-) diff --git a/PWGLF/DataModel/spectraTOF.h b/PWGLF/DataModel/spectraTOF.h index 10d7c17038d..96e78fd6688 100644 --- a/PWGLF/DataModel/spectraTOF.h +++ b/PWGLF/DataModel/spectraTOF.h @@ -100,6 +100,30 @@ static constexpr std::string_view hdcaxyphi[NpCharge] = {"dcaxyphi/pos/el", "dca "dcaxyphi/neg/ka", "dcaxyphi/neg/pr", "dcaxyphi/neg/de", "dcaxyphi/neg/tr", "dcaxyphi/neg/he", "dcaxyphi/neg/al"}; // MC +static constexpr std::string_view hpt_mism_its_prm[NpCharge] = {"MC/el/pos/prm/pt/mismITS", "MC/mu/pos/prm/pt/mismITS", "MC/pi/pos/prm/pt/mismITS", + "MC/ka/pos/prm/pt/mismITS", "MC/pr/pos/prm/pt/mismITS", "MC/de/pos/prm/pt/mismITS", + "MC/tr/pos/prm/pt/mismITS", "MC/he/pos/prm/pt/mismITS", "MC/al/pos/prm/pt/mismITS", + "MC/el/neg/prm/pt/mismITS", "MC/mu/neg/prm/pt/mismITS", "MC/pi/neg/prm/pt/mismITS", + "MC/ka/neg/prm/pt/mismITS", "MC/pr/neg/prm/pt/mismITS", "MC/de/neg/prm/pt/mismITS", + "MC/tr/neg/prm/pt/mismITS", "MC/he/neg/prm/pt/mismITS", "MC/al/neg/prm/pt/mismITS"}; +static constexpr std::string_view hpt_mism_tpc_prm[NpCharge] = {"MC/el/pos/prm/pt/mismTPC", "MC/mu/pos/prm/pt/mismTPC", "MC/pi/pos/prm/pt/mismTPC", + "MC/ka/pos/prm/pt/mismTPC", "MC/pr/pos/prm/pt/mismTPC", "MC/de/pos/prm/pt/mismTPC", + "MC/tr/pos/prm/pt/mismTPC", "MC/he/pos/prm/pt/mismTPC", "MC/al/pos/prm/pt/mismTPC", + "MC/el/neg/prm/pt/mismTPC", "MC/mu/neg/prm/pt/mismTPC", "MC/pi/neg/prm/pt/mismTPC", + "MC/ka/neg/prm/pt/mismTPC", "MC/pr/neg/prm/pt/mismTPC", "MC/de/neg/prm/pt/mismTPC", + "MC/tr/neg/prm/pt/mismTPC", "MC/he/neg/prm/pt/mismTPC", "MC/al/neg/prm/pt/mismTPC"}; +static constexpr std::string_view hpt_mism_trd_prm[NpCharge] = {"MC/el/pos/prm/pt/mismTRD", "MC/mu/pos/prm/pt/mismTRD", "MC/pi/pos/prm/pt/mismTRD", + "MC/ka/pos/prm/pt/mismTRD", "MC/pr/pos/prm/pt/mismTRD", "MC/de/pos/prm/pt/mismTRD", + "MC/tr/pos/prm/pt/mismTRD", "MC/he/pos/prm/pt/mismTRD", "MC/al/pos/prm/pt/mismTRD", + "MC/el/neg/prm/pt/mismTRD", "MC/mu/neg/prm/pt/mismTRD", "MC/pi/neg/prm/pt/mismTRD", + "MC/ka/neg/prm/pt/mismTRD", "MC/pr/neg/prm/pt/mismTRD", "MC/de/neg/prm/pt/mismTRD", + "MC/tr/neg/prm/pt/mismTRD", "MC/he/neg/prm/pt/mismTRD", "MC/al/neg/prm/pt/mismTRD"}; +static constexpr std::string_view hpt_mism_tof_prm[NpCharge] = {"MC/el/pos/prm/pt/mismTOF", "MC/mu/pos/prm/pt/mismTOF", "MC/pi/pos/prm/pt/mismTOF", + "MC/ka/pos/prm/pt/mismTOF", "MC/pr/pos/prm/pt/mismTOF", "MC/de/pos/prm/pt/mismTOF", + "MC/tr/pos/prm/pt/mismTOF", "MC/he/pos/prm/pt/mismTOF", "MC/al/pos/prm/pt/mismTOF", + "MC/el/neg/prm/pt/mismTOF", "MC/mu/neg/prm/pt/mismTOF", "MC/pi/neg/prm/pt/mismTOF", + "MC/ka/neg/prm/pt/mismTOF", "MC/pr/neg/prm/pt/mismTOF", "MC/de/neg/prm/pt/mismTOF", + "MC/tr/neg/prm/pt/mismTOF", "MC/he/neg/prm/pt/mismTOF", "MC/al/neg/prm/pt/mismTOF"}; static constexpr std::string_view hpt_num_prm[NpCharge] = {"MC/el/pos/prm/pt/num", "MC/mu/pos/prm/pt/num", "MC/pi/pos/prm/pt/num", "MC/ka/pos/prm/pt/num", "MC/pr/pos/prm/pt/num", "MC/de/pos/prm/pt/num", "MC/tr/pos/prm/pt/num", "MC/he/pos/prm/pt/num", "MC/al/pos/prm/pt/num", diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index dc0390564ac..450b848a2d0 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -27,6 +27,7 @@ #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Centrality.h" #include "Common/DataModel/Multiplicity.h" +#include "Common/DataModel/McCollisionExtra.h" #include "Common/Core/TrackSelection.h" #include "Framework/StaticFor.h" #include "Common/Core/TrackSelectionDefaults.h" @@ -487,24 +488,31 @@ struct tofSpectra { histos.add(hpt_den_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); histos.add(hpt_den_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); + histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); + histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); + histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); + histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); + histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, etaAxis}); //*************************************************************************************** } else { histos.add(hpt_num_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_num_str[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_num_mat[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTH1D, {ptAxis}); histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTH1D, {ptAxis}); - histos.add(hpt_num_str[i].data(), pTCharge[i], kTH1D, {ptAxis}); - histos.add(hpt_num_mat[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_den_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); histos.add(hpt_den_str[i].data(), pTCharge[i], kTH1D, {ptAxis}); histos.add(hpt_den_mat[i].data(), pTCharge[i], kTH1D, {ptAxis}); - } - histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis}); - histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis}); - histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis}); - histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis}); - histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis}); + } histos.add(hdcaxyprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis}); histos.add(hdcazprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis}); @@ -516,6 +524,12 @@ struct tofSpectra { histos.add(hdcaxyprmgoodevs[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis}); histos.add(hdcazprmgoodevs[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis}); } + + // Mismatched info + histos.add(hpt_mism_its_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_mism_tpc_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_mism_trd_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); + histos.add(hpt_mism_tof_prm[i].data(), pTCharge[i], kTH1D, {ptAxis}); } } // Print output histograms statistics @@ -1017,6 +1031,46 @@ struct tofSpectra { return true; } + template + bool isMismatchedTrack(const ParticleType& track, const int detector) + { + switch (detector) { + case 0: // ITS + for (int i = 0; i < 7; i++) { + if (track.mcMask() & 1 << i) { + return true; + } + } + return false; + break; + case 1: // TPC + for (int i = 7; i < 10; i++) { + if (track.mcMask() & 1 << i) { + return true; + } + } + break; + case 2: // TRD + if (track.mcMask() & 1 << 10) { + return true; + } + return false; + break; + case 3: // TOF + if (track.mcMask() & 1 << 11) { + return true; + } + return false; + break; + default: // All + if (track.mcMask() & 1 << 15) { + return true; + } + return false; + } + return false; + } + using CollisionCandidate = soa::Join; using TrackCandidates = soa::Join; @@ -1295,6 +1349,20 @@ struct tofSpectra { histos.fill(HIST(hpt_numtof_prm[i]), track.pt()); } } + + // Filling mismatched info for primary tracks + if (isMismatchedTrack(track, 0)) { + histos.fill(HIST(hpt_mism_its_prm[i]), track.pt()); + } + if (isMismatchedTrack(track, 1)) { + histos.fill(HIST(hpt_mism_tpc_prm[i]), track.pt()); + } + if (isMismatchedTrack(track, 2)) { + histos.fill(HIST(hpt_mism_trd_prm[i]), track.pt()); + } + if (isMismatchedTrack(track, 3)) { + histos.fill(HIST(hpt_mism_tof_prm[i]), track.pt()); + } } } @@ -1363,7 +1431,7 @@ struct tofSpectra { return; } - const float multiplicity = collision.centFT0C(); + const float multiplicity = getMultiplicity(collision); if (!mcParticle.isPhysicalPrimary()) { if (mcParticle.getProcess() == 4) { if (makeTHnSparseChoice) { @@ -1452,15 +1520,29 @@ struct tofSpectra { return; } + const float multiplicity = getMultiplicity(collision); + if (mcParticle.isPhysicalPrimary()) { if (collision.sel8()) { if (abs(collision.posZ()) < cfgCutVertex) { - histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt()); + if (makeTHnSparseChoice) { + histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt(), multiplicity, mcParticle.eta()); + } else { + histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt()); + } } else { - histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt()); + if (makeTHnSparseChoice) { + histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt(), multiplicity, mcParticle.eta()); + } else { + histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt()); + } } } else { - histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt()); + if (makeTHnSparseChoice) { + histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt(), multiplicity, mcParticle.eta()); + } else { + histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt()); + } } } } @@ -1565,6 +1647,9 @@ struct tofSpectra { if (!track.collision_as().sel8()) { continue; } + if (removeTFBorder && !track.collision_as().selection_bit(aod::evsel::kNoTimeFrameBorder)) { + continue; + } if (!passesCutWoDCA(track)) { continue; }