From 995d51a83fda714d99a82e79590a54bce89641ca Mon Sep 17 00:00:00 2001 From: Rohaan Deb <67634136+RD0407@users.noreply.github.com> Date: Sun, 26 Jan 2025 11:02:17 +0100 Subject: [PATCH 1/8] Update spectraTOF.cxx --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 481 +++++++++++++++--------------- 1 file changed, 241 insertions(+), 240 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 805156b78db..738fe019cf5 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -137,7 +137,8 @@ struct tofSpectra { // o2-linter: disable=name/struct Configurable minTPCNClsFound{"minTPCNClsFound", 100.f, "Additional cut on the minimum value of the number of found clusters in the TPC"}; Configurable makeTHnSparseChoice{"makeTHnSparseChoice", false, "choose if produce thnsparse"}; // RD Configurable enableTPCTOFvsEtaHistograms{"enableTPCTOFvsEtaHistograms", false, "choose if produce TPC tof vs Eta"}; - Configurable includeCentralityMC{"includeCentralityMC", true, "choose if include Centrality to MC"}; + Configurable includeCentralityMC{"includeCentralityMC", false, "choose if include Centrality to MC"}; + Configurable isImpactParam{"isImpactParam", false, "choose if include impactparam to MC"}; Configurable enableTPCTOFVsMult{"enableTPCTOFVsMult", false, "Produce TPC-TOF plots vs multiplicity"}; Configurable includeCentralityToTracks{"includeCentralityToTracks", false, "choose if include Centrality to tracks"}; @@ -460,17 +461,17 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.add("MC/no_collision/pos", "No collision pos track", kTH1D, {ptAxis}); histos.add("MC/no_collision/neg", "No collision neg track", kTH1D, {ptAxis}); histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); if (doprocessMCgen) { histos.add("MC/test/pi/pos/prm/pt/den", "generated MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/test/pi/neg/prm/pt/den", "generated MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); @@ -1122,7 +1123,7 @@ struct tofSpectra { // o2-linter: disable=name/struct return false; } } - return (std::abs(track.dcaXY()) <= (maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)))); // o2-linter: disable=std-prefix + return (std::abs(track.dcaXY()) <= (maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f))));// o2-linter: disable=std-prefix } return track.isGlobalTrack(); } @@ -1358,7 +1359,7 @@ struct tofSpectra { // o2-linter: disable=name/struct soa::Join const& tracks) - { +{ // Event selection criteria /*if (!collision.sel8() || std::abs(collision.posZ()) > 10 || !collision.selection_bit(aod::evsel::kNoITSROFrameBorder) || !collision.selection_bit(aod::evsel::kNoTimeFrameBorder) || @@ -1379,83 +1380,82 @@ struct tofSpectra { // o2-linter: disable=name/struct int tpcCount = 0, tofCount = 0; for (const auto& track : tracks) { - // Track selection criteria - /* if (track.tpcNClsCrossedRows() < minNCrossedRowsTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || - track.itsChi2NCl() > maxChi2PerClusterITS || std::abs(track.dcaXY()) > maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)) || std::abs(track.dcaZ()) > maxDcaZ.value || track.eta() < trkselOptions.cfgCutEtaMin || track.eta() > trkselOptions.cfgCutEtaMax || track.tpcCrossedRowsOverFindableCls() < minNCrossedRowsOverFindableClustersTPC || track.tpcNClsFound() < minTPCNClsFound || - !(o2::aod::track::ITSrefit) || !(o2::aod::track::TPCrefit)) { - continue; - }*/ - if (!isTrackSelected(track, collision)) { - continue; - } - const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); - ; - const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); - const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); + // Track selection criteria + /* if (track.tpcNClsCrossedRows() < minNCrossedRowsTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || + track.itsChi2NCl() > maxChi2PerClusterITS || std::abs(track.dcaXY()) > maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)) || std::abs(track.dcaZ()) > maxDcaZ.value || track.eta() < trkselOptions.cfgCutEtaMin || track.eta() > trkselOptions.cfgCutEtaMax || track.tpcCrossedRowsOverFindableCls() < minNCrossedRowsOverFindableClustersTPC || track.tpcNClsFound() < minTPCNClsFound || + !(o2::aod::track::ITSrefit) || !(o2::aod::track::TPCrefit)) { + continue; + }*/ + if (!isTrackSelected(track, collision)) { + continue; + } + const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track);; + const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); + const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); - bool isTPCPion = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; - bool isTPCKaon = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; - bool isTPCProton = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; + bool isTPCPion = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; + bool isTPCKaon = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; + bool isTPCProton = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; - const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); - const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); - const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); + const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); + const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); + const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); - bool isTOFPion = track.hasTOF() && std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; - bool isTOFKaon = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; - bool isTOFProton = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; + bool isTOFPion = track.hasTOF() && std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; + bool isTOFKaon = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; + bool isTOFProton = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; - // Apply rapidity cut for identified particles - if (isTPCPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { - tpcCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatpc/test_occupancy/pos/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatpc/test_occupancy/neg/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); - } - } else if (isTPCKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { - tpcCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatpc/test_occupancy/pos/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatpc/test_occupancy/neg/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); - } - } else if (isTPCProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { - tpcCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatpc/test_occupancy/pos/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatpc/test_occupancy/neg/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); + // Apply rapidity cut for identified particles + if (isTPCPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { + tpcCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatpc/test_occupancy/pos/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatpc/test_occupancy/neg/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); + } + } else if (isTPCKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { + tpcCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatpc/test_occupancy/pos/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatpc/test_occupancy/neg/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); + } + } else if (isTPCProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { + tpcCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatpc/test_occupancy/pos/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatpc/test_occupancy/neg/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); + } } - } - // TOF PID histograms - if (isTOFPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { - tofCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatof/test_occupancy/pos/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatof/test_occupancy/neg/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); - } - } else if (isTOFKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { - tofCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatof/test_occupancy/pos/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatof/test_occupancy/neg/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); - } - } else if (isTOFProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { - tofCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatof/test_occupancy/pos/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatof/test_occupancy/neg/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); + // TOF PID histograms + if (isTOFPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { + tofCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatof/test_occupancy/pos/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatof/test_occupancy/neg/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); + } + } else if (isTOFKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { + tofCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatof/test_occupancy/pos/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatof/test_occupancy/neg/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); + } + } else if (isTOFProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { + tofCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatof/test_occupancy/pos/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatof/test_occupancy/neg/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); + } } - } } histos.fill(HIST("test_occupancy/tpcCount"), tpcCount); histos.fill(HIST("test_occupancy/tofCount"), tofCount); - } // process function +} // process function PROCESS_SWITCH(tofSpectra, processOccupancy, "check for occupancy plots", true); void processStandard(CollisionCandidates::iterator const& collision, @@ -1496,21 +1496,21 @@ struct tofSpectra { // o2-linter: disable=name/struct PROCESS_SWITCH(tofSpectra, processDerived, "Derived data processor", false); #define makeProcessFunction(processorName, inputPid, particleId, isFull, tofTable, tpcTable) /* o2-linter: disable=name/macro */ \ - void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ - soa::Join const& tracks) \ - { \ - if (!isEventSelected(collision)) { \ - return; \ - } \ - for (const auto& track : tracks) { \ - if (!isTrackSelected(track, collision)) { \ - continue; \ - } \ - fillParticleHistos(track, collision); \ - } \ - } \ + void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ + soa::Join const& tracks) \ + { \ + if (!isEventSelected(collision)) { \ + return; \ + } \ + for (const auto& track : tracks) { \ + if (!isTrackSelected(track, collision)) { \ + continue; \ + } \ + fillParticleHistos(track, collision); \ + } \ + } \ PROCESS_SWITCH(tofSpectra, process##processorName##inputPid, Form("Process for the %s hypothesis from %s tables", #particleId, #processorName), false); // Full tables @@ -1528,7 +1528,7 @@ struct tofSpectra { // o2-linter: disable=name/struct #undef makeProcessFunctionFull // Full LF tables -#define makeProcessFunctionFull(inputPid, particleId) makeProcessFunction(LfFull, inputPid, particleId, true, TOFFull, TPCLfFull) // o2-linter: disable=name/macro +#define makeProcessFunctionFull(inputPid, particleId) makeProcessFunction(LfFull, inputPid, particleId, true, TOFFull, TPCLfFull)// o2-linter: disable=name/macro makeProcessFunctionFull(El, Electron); makeProcessFunctionFull(Mu, Muon); @@ -1679,7 +1679,7 @@ struct tofSpectra { // o2-linter: disable=name/struct float multiplicity = getMultiplicityMC(mcCollision); int occupancy = collision.trackOccupancyInTimeRange(); //************************************RD************************************************** - if (includeCentralityMC) { + if (isImpactParam) { multiplicity = mcCollision.impactParameter(); } //************************************RD************************************************** @@ -1742,10 +1742,10 @@ struct tofSpectra { // o2-linter: disable=name/struct } if (enableDCAvsmotherHistograms) { - bool IsD0Mother = false; // o2-linter: disable=name/function-variable - bool IsCharmMother = false; // o2-linter: disable=name/function-variable + bool IsD0Mother = false; // o2-linter: disable=name/function-variable + bool IsCharmMother = false; // o2-linter: disable=name/function-variable bool IsBeautyMother = false; // o2-linter: disable=name/function-variable - bool IsNotHFMother = false; // o2-linter: disable=name/function-variable + bool IsNotHFMother = false; // o2-linter: disable=name/function-variable if (mcParticle.has_mothers()) { const int charmOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, false); for (const auto& mother : mcParticle.template mothers_as()) { @@ -1823,27 +1823,29 @@ struct tofSpectra { // o2-linter: disable=name/struct if (!passesDCAxyCut(track)) { // Skipping tracks that don't pass the standard cuts return; } - int pdgCode = mcParticle.pdgCode(); - const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); - const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); - const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); + int pdgCode = mcParticle.pdgCode(); + const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); + const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); + const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); - bool isPionTPC = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; - bool isKaonTPC = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; - bool isProtonTPC = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; + bool isPionTPC = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; + bool isKaonTPC = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; + bool isProtonTPC = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; - const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); - const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); - const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); + const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); + const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); + const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); - bool isPionTOF = std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; - bool isKaonTOF = std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; - bool isProtonTOF = std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; + bool isPionTOF = std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; + bool isKaonTOF = std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; + bool isProtonTOF = std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; if (!mcParticle.isPhysicalPrimary()) { if (mcParticle.getProcess() == 4) { if (includeCentralityMC) { - histos.fill(HIST(hpt_num_str[i]), track.pt(), multiplicity, track.dcaXY()); + if (includeCentralityMC) { + histos.fill(HIST(hpt_num_str[i]), track.pt(), multiplicity, track.dcaXY()); + } } else { histos.fill(HIST(hpt_num_str[i]), track.pt(), multiplicity); } @@ -1874,20 +1876,20 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity); } if (isPionTPC || isKaonTPC || isProtonTPC) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); - } - } + if (pdgCode == 2212) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); + } + } if (track.hasTRD() && trkselOptions.lastRequiredTrdCluster > 0) { int lastLayer = 0; for (int l = 7; l >= 0; l--) { @@ -1901,21 +1903,21 @@ struct tofSpectra { // o2-linter: disable=name/struct } } if (track.hasTOF()) { - if (isPionTOF || isKaonTOF || isProtonTOF) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); - } - } + if (isPionTOF || isKaonTOF || isProtonTOF) { + if (pdgCode == 2212) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } if (includeCentralityMC) { histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); } else { @@ -1964,10 +1966,10 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.fill(HIST(hpt_den_mat[i]), mcParticle.pt(), multiplicity); } } else { - if (includeCentralityMC) { - histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); + if (includeCentralityMC){ + histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); } else { - histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); + histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); } } } @@ -2106,11 +2108,11 @@ struct tofSpectra { // o2-linter: disable=name/struct const auto& mcCollision = collision.mcCollision_as(); const auto& particlesInCollision = mcParticles.sliceByCached(aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); float multiplicity = getMultiplicity(collision); - //************************************RD************************************************** - if (includeCentralityMC) { - multiplicity = mcCollision.impactParameter(); - } - //************************************RD************************************************** + //************************************RD************************************************** + if (isImpactParam) { + multiplicity = mcCollision.impactParameter(); + } + //************************************RD************************************************** for (const auto& mcParticle : particlesInCollision) { @@ -2224,72 +2226,71 @@ struct tofSpectra { // o2-linter: disable=name/struct continue; } - if (pdgCode == 2212) { - histos.fill(HIST("MC/test/pr/pos/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/test/pr/neg/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/test/pi/pos/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/test/pi/neg/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/test/ka/pos/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/test/ka/neg/prm/pt/den"), pt, multiplicity); + if (pdgCode == 2212) { + histos.fill(HIST("MC/test/pr/pos/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/test/pr/neg/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/test/pi/pos/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/test/pi/neg/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/test/ka/pos/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/test/ka/neg/prm/pt/den"), pt, multiplicity); } } } PROCESS_SWITCH(tofSpectra, processMCgen, "process generated MC", false); void processMCgen_RecoEvs(soa::Join const& tracks, - aod::McTrackLabels const& mcTrackLabels, - GenMCCollisions const&, - RecoMCCollisions const& collisions, - aod::McParticles const& mcParticles) - { + aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, + aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr> const& tracks, + aod::McTrackLabels const& mcTrackLabels, + GenMCCollisions const&, + RecoMCCollisions const& collisions, + aod::McParticles const& mcParticles) +{ for (const auto& collision : collisions) { - if (!collision.has_mcCollision()) { - continue; - } - - const auto& mcCollision = collision.mcCollision_as(); - histos.fill(HIST("Vertex/RecoEvs/histGenVtxMC"), mcCollision.posZ()); - histos.fill(HIST("Centrality/RecoEvs/ImpParm"), mcCollision.impactParameter()); - const float multiplicity = mcCollision.impactParameter(); - - for (const auto& track : tracks) { - if (track.tpcNClsCrossedRows() < 70 || - track.tpcChi2NCl() > 4 || - track.tpcChi2NCl() < 0.5 || - track.itsChi2NCl() > 36 || - std::abs(track.dcaXY()) > 0.05 || - std::abs(track.dcaZ()) > 2.0 || - std::abs(track.eta()) > 0.8 || - track.tpcCrossedRowsOverFindableCls() < 0.8 || - track.tpcNClsFound() < 100 || - !(o2::aod::track::TPCrefit) || - !(o2::aod::track::ITSrefit)) { - continue; - } - const auto& mcLabel = mcTrackLabels.iteratorAt(track.globalIndex()); - if (mcLabel.mcParticleId() < 0 || mcLabel.mcParticleId() >= mcParticles.size()) { - continue; - } - const auto& mcParticle = mcParticles.iteratorAt(mcLabel.mcParticleId()); - if (!mcParticle.isPhysicalPrimary()) { - continue; + if (!collision.has_mcCollision()) { + continue; } - int pdgCode = mcParticle.pdgCode(); - float pt = mcParticle.pt(); - float absY = std::abs(mcParticle.y()); - if (absY > trkselOptions.cfgCutY) { - continue; - } + const auto& mcCollision = collision.mcCollision_as(); + histos.fill(HIST("Vertex/RecoEvs/histGenVtxMC"), mcCollision.posZ()); + histos.fill(HIST("Centrality/RecoEvs/ImpParm"), mcCollision.impactParameter()); + const float multiplicity = mcCollision.impactParameter(); + + for (const auto& track : tracks) { + if (track.tpcNClsCrossedRows() < 70 || + track.tpcChi2NCl() > 4 || + track.tpcChi2NCl() < 0.5 || + track.itsChi2NCl() > 36 || + std::abs(track.dcaXY()) > 0.05 || + std::abs(track.dcaZ()) > 2.0 || + std::abs(track.eta()) > 0.8 || + track.tpcCrossedRowsOverFindableCls() < 0.8 || + track.tpcNClsFound() < 100 || + !(o2::aod::track::TPCrefit) || + !(o2::aod::track::ITSrefit)) { + continue; + } + const auto& mcLabel = mcTrackLabels.iteratorAt(track.globalIndex()); + if (mcLabel.mcParticleId() < 0 || mcLabel.mcParticleId() >= mcParticles.size()) { + continue; + } + const auto& mcParticle = mcParticles.iteratorAt(mcLabel.mcParticleId()); + if (!mcParticle.isPhysicalPrimary()) { + continue; + } - const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); - ; + int pdgCode = mcParticle.pdgCode(); + float pt = mcParticle.pt(); + float absY = std::abs(mcParticle.y()); + if (absY > trkselOptions.cfgCutY) { + continue; + } + + const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track);; const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); @@ -2305,40 +2306,40 @@ struct tofSpectra { // o2-linter: disable=name/struct bool isKaonTOF = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; bool isProtonTOF = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; - if (isPionTPC || isKaonTPC || isProtonTPC) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/num"), pt, multiplicity); - } - } + if (isPionTPC || isKaonTPC || isProtonTPC) { + if (pdgCode == 2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/num"), pt, multiplicity); + } + } - if (isPionTOF || isKaonTOF || isProtonTOF) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/numtof"), pt, multiplicity); - } + if (isPionTOF || isKaonTOF || isProtonTOF) { + if (pdgCode == 2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/numtof"), pt, multiplicity); + } + } } - } } - } +} PROCESS_SWITCH(tofSpectra, processMCgen_RecoEvs, "process generated MC (reconstructed events)", false); }; // end of spectra task From 3cf3822a30528b98b590cf4cadca323fc3fcbddd Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Sun, 26 Jan 2025 10:09:00 +0000 Subject: [PATCH 2/8] Please consider the following formatting changes --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 476 +++++++++++++++--------------- 1 file changed, 239 insertions(+), 237 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 738fe019cf5..9cdb891c9a6 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -461,17 +461,17 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.add("MC/no_collision/pos", "No collision pos track", kTH1D, {ptAxis}); histos.add("MC/no_collision/neg", "No collision neg track", kTH1D, {ptAxis}); histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); if (doprocessMCgen) { histos.add("MC/test/pi/pos/prm/pt/den", "generated MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/test/pi/neg/prm/pt/den", "generated MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); @@ -1123,7 +1123,7 @@ struct tofSpectra { // o2-linter: disable=name/struct return false; } } - return (std::abs(track.dcaXY()) <= (maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f))));// o2-linter: disable=std-prefix + return (std::abs(track.dcaXY()) <= (maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)))); // o2-linter: disable=std-prefix } return track.isGlobalTrack(); } @@ -1359,7 +1359,7 @@ struct tofSpectra { // o2-linter: disable=name/struct soa::Join const& tracks) -{ + { // Event selection criteria /*if (!collision.sel8() || std::abs(collision.posZ()) > 10 || !collision.selection_bit(aod::evsel::kNoITSROFrameBorder) || !collision.selection_bit(aod::evsel::kNoTimeFrameBorder) || @@ -1380,82 +1380,83 @@ struct tofSpectra { // o2-linter: disable=name/struct int tpcCount = 0, tofCount = 0; for (const auto& track : tracks) { - // Track selection criteria - /* if (track.tpcNClsCrossedRows() < minNCrossedRowsTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || - track.itsChi2NCl() > maxChi2PerClusterITS || std::abs(track.dcaXY()) > maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)) || std::abs(track.dcaZ()) > maxDcaZ.value || track.eta() < trkselOptions.cfgCutEtaMin || track.eta() > trkselOptions.cfgCutEtaMax || track.tpcCrossedRowsOverFindableCls() < minNCrossedRowsOverFindableClustersTPC || track.tpcNClsFound() < minTPCNClsFound || - !(o2::aod::track::ITSrefit) || !(o2::aod::track::TPCrefit)) { - continue; - }*/ - if (!isTrackSelected(track, collision)) { - continue; - } - const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track);; - const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); - const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); + // Track selection criteria + /* if (track.tpcNClsCrossedRows() < minNCrossedRowsTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || track.tpcChi2NCl() > maxChi2PerClusterTPC || + track.itsChi2NCl() > maxChi2PerClusterITS || std::abs(track.dcaXY()) > maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)) || std::abs(track.dcaZ()) > maxDcaZ.value || track.eta() < trkselOptions.cfgCutEtaMin || track.eta() > trkselOptions.cfgCutEtaMax || track.tpcCrossedRowsOverFindableCls() < minNCrossedRowsOverFindableClustersTPC || track.tpcNClsFound() < minTPCNClsFound || + !(o2::aod::track::ITSrefit) || !(o2::aod::track::TPCrefit)) { + continue; + }*/ + if (!isTrackSelected(track, collision)) { + continue; + } + const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); + ; + const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); + const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); - bool isTPCPion = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; - bool isTPCKaon = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; - bool isTPCProton = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; + bool isTPCPion = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; + bool isTPCKaon = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; + bool isTPCProton = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; - const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); - const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); - const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); + const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); + const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); + const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); - bool isTOFPion = track.hasTOF() && std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; - bool isTOFKaon = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; - bool isTOFProton = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; + bool isTOFPion = track.hasTOF() && std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; + bool isTOFKaon = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; + bool isTOFProton = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; - // Apply rapidity cut for identified particles - if (isTPCPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { - tpcCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatpc/test_occupancy/pos/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatpc/test_occupancy/neg/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); - } - } else if (isTPCKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { - tpcCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatpc/test_occupancy/pos/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatpc/test_occupancy/neg/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); - } - } else if (isTPCProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { - tpcCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatpc/test_occupancy/pos/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatpc/test_occupancy/neg/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); - } + // Apply rapidity cut for identified particles + if (isTPCPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { + tpcCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatpc/test_occupancy/pos/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatpc/test_occupancy/neg/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy); + } + } else if (isTPCKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { + tpcCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatpc/test_occupancy/pos/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatpc/test_occupancy/neg/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy); + } + } else if (isTPCProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { + tpcCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatpc/test_occupancy/pos/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatpc/test_occupancy/neg/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy); } + } - // TOF PID histograms - if (isTOFPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { - tofCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatof/test_occupancy/pos/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatof/test_occupancy/neg/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); - } - } else if (isTOFKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { - tofCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatof/test_occupancy/pos/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatof/test_occupancy/neg/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); - } - } else if (isTOFProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { - tofCount++; - if (track.sign() > 0) { - histos.fill(HIST("nsigmatof/test_occupancy/pos/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); - } else { - histos.fill(HIST("nsigmatof/test_occupancy/neg/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); - } + // TOF PID histograms + if (isTOFPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) { + tofCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatof/test_occupancy/pos/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatof/test_occupancy/neg/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy); } + } else if (isTOFKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) { + tofCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatof/test_occupancy/pos/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatof/test_occupancy/neg/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy); + } + } else if (isTOFProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) { + tofCount++; + if (track.sign() > 0) { + histos.fill(HIST("nsigmatof/test_occupancy/pos/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); + } else { + histos.fill(HIST("nsigmatof/test_occupancy/neg/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy); + } + } } histos.fill(HIST("test_occupancy/tpcCount"), tpcCount); histos.fill(HIST("test_occupancy/tofCount"), tofCount); -} // process function + } // process function PROCESS_SWITCH(tofSpectra, processOccupancy, "check for occupancy plots", true); void processStandard(CollisionCandidates::iterator const& collision, @@ -1496,21 +1497,21 @@ struct tofSpectra { // o2-linter: disable=name/struct PROCESS_SWITCH(tofSpectra, processDerived, "Derived data processor", false); #define makeProcessFunction(processorName, inputPid, particleId, isFull, tofTable, tpcTable) /* o2-linter: disable=name/macro */ \ - void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ - soa::Join const& tracks) \ - { \ - if (!isEventSelected(collision)) { \ - return; \ - } \ - for (const auto& track : tracks) { \ - if (!isTrackSelected(track, collision)) { \ - continue; \ - } \ - fillParticleHistos(track, collision); \ - } \ - } \ + void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ + soa::Join const& tracks) \ + { \ + if (!isEventSelected(collision)) { \ + return; \ + } \ + for (const auto& track : tracks) { \ + if (!isTrackSelected(track, collision)) { \ + continue; \ + } \ + fillParticleHistos(track, collision); \ + } \ + } \ PROCESS_SWITCH(tofSpectra, process##processorName##inputPid, Form("Process for the %s hypothesis from %s tables", #particleId, #processorName), false); // Full tables @@ -1528,7 +1529,7 @@ struct tofSpectra { // o2-linter: disable=name/struct #undef makeProcessFunctionFull // Full LF tables -#define makeProcessFunctionFull(inputPid, particleId) makeProcessFunction(LfFull, inputPid, particleId, true, TOFFull, TPCLfFull)// o2-linter: disable=name/macro +#define makeProcessFunctionFull(inputPid, particleId) makeProcessFunction(LfFull, inputPid, particleId, true, TOFFull, TPCLfFull) // o2-linter: disable=name/macro makeProcessFunctionFull(El, Electron); makeProcessFunctionFull(Mu, Muon); @@ -1742,10 +1743,10 @@ struct tofSpectra { // o2-linter: disable=name/struct } if (enableDCAvsmotherHistograms) { - bool IsD0Mother = false; // o2-linter: disable=name/function-variable - bool IsCharmMother = false; // o2-linter: disable=name/function-variable + bool IsD0Mother = false; // o2-linter: disable=name/function-variable + bool IsCharmMother = false; // o2-linter: disable=name/function-variable bool IsBeautyMother = false; // o2-linter: disable=name/function-variable - bool IsNotHFMother = false; // o2-linter: disable=name/function-variable + bool IsNotHFMother = false; // o2-linter: disable=name/function-variable if (mcParticle.has_mothers()) { const int charmOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, false); for (const auto& mother : mcParticle.template mothers_as()) { @@ -1823,28 +1824,28 @@ struct tofSpectra { // o2-linter: disable=name/struct if (!passesDCAxyCut(track)) { // Skipping tracks that don't pass the standard cuts return; } - int pdgCode = mcParticle.pdgCode(); - const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); - const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); - const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); + int pdgCode = mcParticle.pdgCode(); + const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); + const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); + const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); - bool isPionTPC = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; - bool isKaonTPC = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; - bool isProtonTPC = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; + bool isPionTPC = std::abs(nsigmaTPCPi) < trkselOptions.cfgCutNsigma; + bool isKaonTPC = std::abs(nsigmaTPCKa) < trkselOptions.cfgCutNsigma; + bool isProtonTPC = std::abs(nsigmaTPCPr) < trkselOptions.cfgCutNsigma; - const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); - const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); - const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); + const auto& nsigmaTOFPi = o2::aod::pidutils::tofNSigma<2>(track); + const auto& nsigmaTOFKa = o2::aod::pidutils::tofNSigma<3>(track); + const auto& nsigmaTOFPr = o2::aod::pidutils::tofNSigma<4>(track); - bool isPionTOF = std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; - bool isKaonTOF = std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; - bool isProtonTOF = std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; + bool isPionTOF = std::abs(nsigmaTOFPi) < trkselOptions.cfgCutNsigma; + bool isKaonTOF = std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; + bool isProtonTOF = std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; if (!mcParticle.isPhysicalPrimary()) { if (mcParticle.getProcess() == 4) { if (includeCentralityMC) { - if (includeCentralityMC) { - histos.fill(HIST(hpt_num_str[i]), track.pt(), multiplicity, track.dcaXY()); + if (includeCentralityMC) { + histos.fill(HIST(hpt_num_str[i]), track.pt(), multiplicity, track.dcaXY()); } } else { histos.fill(HIST(hpt_num_str[i]), track.pt(), multiplicity); @@ -1876,20 +1877,20 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity); } if (isPionTPC || isKaonTPC || isProtonTPC) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); - } - } + if (pdgCode == 2212) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); + } + } if (track.hasTRD() && trkselOptions.lastRequiredTrdCluster > 0) { int lastLayer = 0; for (int l = 7; l >= 0; l--) { @@ -1903,21 +1904,21 @@ struct tofSpectra { // o2-linter: disable=name/struct } } if (track.hasTOF()) { - if (isPionTOF || isKaonTOF || isProtonTOF) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); - } - } + if (isPionTOF || isKaonTOF || isProtonTOF) { + if (pdgCode == 2212) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } if (includeCentralityMC) { histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); } else { @@ -1966,10 +1967,10 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.fill(HIST(hpt_den_mat[i]), mcParticle.pt(), multiplicity); } } else { - if (includeCentralityMC){ - histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); + if (includeCentralityMC) { + histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); } else { - histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); + histos.fill(HIST(hpt_den_prm[i]), mcParticle.pt(), multiplicity); } } } @@ -2108,11 +2109,11 @@ struct tofSpectra { // o2-linter: disable=name/struct const auto& mcCollision = collision.mcCollision_as(); const auto& particlesInCollision = mcParticles.sliceByCached(aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); float multiplicity = getMultiplicity(collision); - //************************************RD************************************************** - if (isImpactParam) { - multiplicity = mcCollision.impactParameter(); - } - //************************************RD************************************************** + //************************************RD************************************************** + if (isImpactParam) { + multiplicity = mcCollision.impactParameter(); + } + //************************************RD************************************************** for (const auto& mcParticle : particlesInCollision) { @@ -2226,71 +2227,72 @@ struct tofSpectra { // o2-linter: disable=name/struct continue; } - if (pdgCode == 2212) { - histos.fill(HIST("MC/test/pr/pos/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/test/pr/neg/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/test/pi/pos/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/test/pi/neg/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/test/ka/pos/prm/pt/den"), pt, multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/test/ka/neg/prm/pt/den"), pt, multiplicity); + if (pdgCode == 2212) { + histos.fill(HIST("MC/test/pr/pos/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/test/pr/neg/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/test/pi/pos/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/test/pi/neg/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/test/ka/pos/prm/pt/den"), pt, multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/test/ka/neg/prm/pt/den"), pt, multiplicity); } } } PROCESS_SWITCH(tofSpectra, processMCgen, "process generated MC", false); void processMCgen_RecoEvs(soa::Join const& tracks, - aod::McTrackLabels const& mcTrackLabels, - GenMCCollisions const&, - RecoMCCollisions const& collisions, - aod::McParticles const& mcParticles) -{ + aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, + aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr> const& tracks, + aod::McTrackLabels const& mcTrackLabels, + GenMCCollisions const&, + RecoMCCollisions const& collisions, + aod::McParticles const& mcParticles) + { for (const auto& collision : collisions) { - if (!collision.has_mcCollision()) { - continue; - } + if (!collision.has_mcCollision()) { + continue; + } - const auto& mcCollision = collision.mcCollision_as(); - histos.fill(HIST("Vertex/RecoEvs/histGenVtxMC"), mcCollision.posZ()); - histos.fill(HIST("Centrality/RecoEvs/ImpParm"), mcCollision.impactParameter()); - const float multiplicity = mcCollision.impactParameter(); - - for (const auto& track : tracks) { - if (track.tpcNClsCrossedRows() < 70 || - track.tpcChi2NCl() > 4 || - track.tpcChi2NCl() < 0.5 || - track.itsChi2NCl() > 36 || - std::abs(track.dcaXY()) > 0.05 || - std::abs(track.dcaZ()) > 2.0 || - std::abs(track.eta()) > 0.8 || - track.tpcCrossedRowsOverFindableCls() < 0.8 || - track.tpcNClsFound() < 100 || - !(o2::aod::track::TPCrefit) || - !(o2::aod::track::ITSrefit)) { - continue; - } - const auto& mcLabel = mcTrackLabels.iteratorAt(track.globalIndex()); - if (mcLabel.mcParticleId() < 0 || mcLabel.mcParticleId() >= mcParticles.size()) { - continue; - } - const auto& mcParticle = mcParticles.iteratorAt(mcLabel.mcParticleId()); - if (!mcParticle.isPhysicalPrimary()) { - continue; - } + const auto& mcCollision = collision.mcCollision_as(); + histos.fill(HIST("Vertex/RecoEvs/histGenVtxMC"), mcCollision.posZ()); + histos.fill(HIST("Centrality/RecoEvs/ImpParm"), mcCollision.impactParameter()); + const float multiplicity = mcCollision.impactParameter(); + + for (const auto& track : tracks) { + if (track.tpcNClsCrossedRows() < 70 || + track.tpcChi2NCl() > 4 || + track.tpcChi2NCl() < 0.5 || + track.itsChi2NCl() > 36 || + std::abs(track.dcaXY()) > 0.05 || + std::abs(track.dcaZ()) > 2.0 || + std::abs(track.eta()) > 0.8 || + track.tpcCrossedRowsOverFindableCls() < 0.8 || + track.tpcNClsFound() < 100 || + !(o2::aod::track::TPCrefit) || + !(o2::aod::track::ITSrefit)) { + continue; + } + const auto& mcLabel = mcTrackLabels.iteratorAt(track.globalIndex()); + if (mcLabel.mcParticleId() < 0 || mcLabel.mcParticleId() >= mcParticles.size()) { + continue; + } + const auto& mcParticle = mcParticles.iteratorAt(mcLabel.mcParticleId()); + if (!mcParticle.isPhysicalPrimary()) { + continue; + } - int pdgCode = mcParticle.pdgCode(); - float pt = mcParticle.pt(); - float absY = std::abs(mcParticle.y()); - if (absY > trkselOptions.cfgCutY) { - continue; - } + int pdgCode = mcParticle.pdgCode(); + float pt = mcParticle.pt(); + float absY = std::abs(mcParticle.y()); + if (absY > trkselOptions.cfgCutY) { + continue; + } - const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track);; + const auto& nsigmaTPCPi = o2::aod::pidutils::tpcNSigma<2>(track); + ; const auto& nsigmaTPCKa = o2::aod::pidutils::tpcNSigma<3>(track); const auto& nsigmaTPCPr = o2::aod::pidutils::tpcNSigma<4>(track); @@ -2306,40 +2308,40 @@ struct tofSpectra { // o2-linter: disable=name/struct bool isKaonTOF = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma; bool isProtonTOF = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma; - if (isPionTPC || isKaonTPC || isProtonTPC) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/num"), pt, multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/num"), pt, multiplicity); - } - } + if (isPionTPC || isKaonTPC || isProtonTPC) { + if (pdgCode == 2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/num"), pt, multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/num"), pt, multiplicity); + } + } - if (isPionTOF || isKaonTOF || isProtonTOF) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/numtof"), pt, multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/numtof"), pt, multiplicity); - } - } + if (isPionTOF || isKaonTOF || isProtonTOF) { + if (pdgCode == 2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/pos/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == -2212) { + histos.fill(HIST("MC/test/RecoEvs/pr/neg/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == 211) { + histos.fill(HIST("MC/test/RecoEvs/pi/pos/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == -211) { + histos.fill(HIST("MC/test/RecoEvs/pi/neg/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == 321) { + histos.fill(HIST("MC/test/RecoEvs/ka/pos/prm/pt/numtof"), pt, multiplicity); + } else if (pdgCode == -321) { + histos.fill(HIST("MC/test/RecoEvs/ka/neg/prm/pt/numtof"), pt, multiplicity); + } } + } } -} + } PROCESS_SWITCH(tofSpectra, processMCgen_RecoEvs, "process generated MC (reconstructed events)", false); }; // end of spectra task From 48c0472fa2dd4d9ba890fc163933341539ad73de Mon Sep 17 00:00:00 2001 From: Rohaan Deb <67634136+RD0407@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:13:24 +0100 Subject: [PATCH 3/8] Update spectraTOF.cxx --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 9cdb891c9a6..49ee0bc76bb 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -626,11 +626,11 @@ struct tofSpectra { // o2-linter: disable=name/struct if (includeCentralityMC) { //*************************************RD********************************************** - histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); - histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); From f454ff36767469d9669f83badc121e62291ccc67 Mon Sep 17 00:00:00 2001 From: Rohaan Deb <67634136+RD0407@users.noreply.github.com> Date: Thu, 30 Jan 2025 07:44:26 +0100 Subject: [PATCH 4/8] Update spectraTOF.cxx --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 314 +++++++++++++++++++++++------- 1 file changed, 247 insertions(+), 67 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index da7bf8a4439..1184c2baa94 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -69,9 +69,8 @@ std::array, NpCharge> hDecayLengthMCCharm; // Decay Length std::array, NpCharge> hDecayLengthMCBeauty; // Decay Length in the MC for particles from charm std::array, NpCharge> hDecayLengthMCNotHF; // Decay Length in the MC for particles from not a HF -// Spectra task -// o2-linter: disable=name/workflow-file -struct tofSpectra { // o2-linter: disable=name/struct +// Spectra tas +struct tofSpectra { struct : ConfigurableGroup { Configurable cfgCutVertex{"cfgCutVertex", 10.0f, "Accepted z-vertex range"}; Configurable cfgINELCut{"cfgINELCut", 0, "INEL event selection: 0 no sel, 1 INEL>0, 2 INEL>1"}; @@ -460,18 +459,57 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.add("MC/fake/neg", "Fake negative tracks", kTH1D, {ptAxis}); histos.add("MC/no_collision/pos", "No collision pos track", kTH1D, {ptAxis}); histos.add("MC/no_collision/neg", "No collision neg track", kTH1D, {ptAxis}); - histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); - histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + if(isImpactParam){ + histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/num_str", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num_str", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num_str", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num_str", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num_str", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num_str", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/num_mat", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num_mat", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num_mat", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num_mat", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num_mat", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num_mat", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); + } else { + histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num", "recons. MC K^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num", "recons. MC p", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/num_str", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num_str", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num_str", "recons. MC K^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num_str", "recons. MC K^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num_str", "recons. MC p", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num_str", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/num_mat", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/num_mat", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/num_mat", "recons. MC K^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/num_mat", "recons. MC K^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/num_mat", "recons. MC p", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/num_mat", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/pos/prm/pt/numtof", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pi/neg/prm/pt/numtof", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/pos/prm/pt/numtof", "recons. MC K^{+}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, multAxis}); + histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, multAxis}); + } if (doprocessMCgen) { histos.add("MC/test/pi/pos/prm/pt/den", "generated MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/test/pi/neg/prm/pt/den", "generated MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); @@ -626,6 +664,15 @@ struct tofSpectra { // o2-linter: disable=name/struct if (includeCentralityMC) { //*************************************RD********************************************** + if (isImpactParam){ + histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis, occupancyAxis}); + histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + + histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis, occupancyAxis}); + histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + } else { histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); @@ -633,6 +680,7 @@ struct tofSpectra { // o2-linter: disable=name/struct histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + } histos.add(hpt_numtofgoodmatch_prm[i].data(), pTCharge[i], kTH3D, {ptAxis, multAxis, etaAxis}); @@ -1123,7 +1171,7 @@ struct tofSpectra { // o2-linter: disable=name/struct return false; } } - return (std::abs(track.dcaXY()) <= (maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)))); // o2-linter: disable=std-prefix + return (std::abs(track.dcaXY()) <= (maxDcaXYFactor.value * (0.0105f + 0.0350f / pow(track.pt(), 1.1f)))); } return track.isGlobalTrack(); } @@ -1496,7 +1544,7 @@ struct tofSpectra { // o2-linter: disable=name/struct } // end of the process function PROCESS_SWITCH(tofSpectra, processDerived, "Derived data processor", false); -#define makeProcessFunction(processorName, inputPid, particleId, isFull, tofTable, tpcTable) /* o2-linter: disable=name/macro */ \ +#define makeProcessFunction(processorName, inputPid, particleId, isFull, tofTable, tpcTable) \ void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ soa::Join; // RD template - void fillTrackHistograms_MC(TrackType const& track, // o2-linter: disable=name/function-variable + void fillTrackHistograms_MC(TrackType const& track, ParticleType::iterator const& mcParticle, RecoMCCollisions::iterator const& collision, ParticleType const& mcParticles) @@ -1677,12 +1725,10 @@ struct tofSpectra { // o2-linter: disable=name/struct } const auto& mcCollision = collision.mcCollision_as(); - float multiplicity = getMultiplicityMC(mcCollision); + const float multiplicity = getMultiplicityMC(mcCollision); int occupancy = collision.trackOccupancyInTimeRange(); //************************************RD************************************************** - if (isImpactParam) { - multiplicity = mcCollision.impactParameter(); - } + const float impParam = mcCollision.impactParameter(); //************************************RD************************************************** if (mcParticle.pdgCode() != PDGs[i]) { @@ -1759,10 +1805,10 @@ struct tofSpectra { // o2-linter: disable=name/struct } if (enableDCAvsmotherHistograms) { - bool IsD0Mother = false; // o2-linter: disable=name/function-variable - bool IsCharmMother = false; // o2-linter: disable=name/function-variable - bool IsBeautyMother = false; // o2-linter: disable=name/function-variable - bool IsNotHFMother = false; // o2-linter: disable=name/function-variable + bool IsD0Mother = false; + bool IsCharmMother = false; + bool IsBeautyMother = false; + bool IsNotHFMother = false; if (mcParticle.has_mothers()) { const int charmOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, false); for (const auto& mother : mcParticle.template mothers_as()) { @@ -1882,25 +1928,137 @@ struct tofSpectra { // o2-linter: disable=name/struct } } else { if (includeCentralityMC) { + if (isImpactParam) { + histos.fill(HIST(hpt_num_prm[i]), track.pt(), impParam, track.dcaXY(), occupancy); + } else { histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); + } } else { histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity); } if (isPionTPC || isKaonTPC || isProtonTPC) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); - } - } + if (pdgCode == 2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == -2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == 211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == -211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == 321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == -321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } + } if (track.hasTRD() && trkselOptions.lastRequiredTrdCluster > 0) { int lastLayer = 0; for (int l = 7; l >= 0; l--) { @@ -1915,22 +2073,50 @@ struct tofSpectra { // o2-linter: disable=name/struct } if (track.hasTOF()) { if (isPionTOF || isKaonTOF || isProtonTOF) { - if (pdgCode == 2212) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -2212) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == 211) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -211) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == 321) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); - } else if (pdgCode == -321) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); - } - } + if (pdgCode == 2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == -2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == 211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == -211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == 321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == -321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } + } if (includeCentralityMC) { + if (isImpactParam) { + histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), impParam, track.dcaXY(), occupancy); + } else { histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); + } } else { histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity); } @@ -1960,7 +2146,7 @@ struct tofSpectra { // o2-linter: disable=name/struct } template - void fillParticleHistograms_MC(const float multiplicity, ParticleType const& mcParticle) // o2-linter: disable=name/function-variable + void fillParticleHistograms_MC(const float multiplicity, ParticleType const& mcParticle) { if (!isParticleEnabled()) { // Check if the particle is enabled return; @@ -1986,7 +2172,7 @@ struct tofSpectra { // o2-linter: disable=name/struct } template - void fillParticleHistograms_MCRecoEvs(ParticleType const& mcParticle, RecoMCCollisions::iterator const& collision) // o2-linter: disable=name/function-variable + void fillParticleHistograms_MCRecoEvs(ParticleType const& mcParticle, RecoMCCollisions::iterator const& collision) { if (!isParticleEnabled()) { // Check if the particle is enabled return; @@ -2044,7 +2230,7 @@ struct tofSpectra { // o2-linter: disable=name/struct } template - void fillParticleHistograms_MCGenEvs(ParticleType const& mcParticle, GenMCCollisions::iterator const& mcCollision) // o2-linter: disable=name/function-variable + void fillParticleHistograms_MCGenEvs(ParticleType const& mcParticle, GenMCCollisions::iterator const& mcCollision) { if (!isParticleEnabled()) { // Check if the particle is enabled @@ -2118,13 +2304,7 @@ struct tofSpectra { // o2-linter: disable=name/struct } const auto& mcCollision = collision.mcCollision_as(); const auto& particlesInCollision = mcParticles.sliceByCached(aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache); - float multiplicity = getMultiplicity(collision); - //************************************RD************************************************** - if (isImpactParam) { - multiplicity = mcCollision.impactParameter(); - } - //************************************RD************************************************** - + const float multiplicity = getMultiplicity(collision); for (const auto& mcParticle : particlesInCollision) { if (std::abs(mcParticle.y()) > trkselOptions.cfgCutY) { @@ -2253,7 +2433,7 @@ struct tofSpectra { // o2-linter: disable=name/struct } } PROCESS_SWITCH(tofSpectra, processMCgen, "process generated MC", false); - void processMCgen_RecoEvs(soa::Join const& tracks, aod::McTrackLabels const& mcTrackLabels, From 4e48f26f1fc8b5706e267f1fd566e29a5e221752 Mon Sep 17 00:00:00 2001 From: Rohaan Deb <67634136+RD0407@users.noreply.github.com> Date: Thu, 30 Jan 2025 07:53:32 +0100 Subject: [PATCH 5/8] Update spectraTOF.cxx --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 1184c2baa94..121f4349355 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -1944,7 +1944,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), impParam); } else { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), impParam); + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), impParam); } } } else { @@ -1953,7 +1953,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), multiplicity); } else { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), multiplicity); + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), multiplicity); } } } @@ -1964,7 +1964,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), impParam); } else { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), impParam); + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), impParam); } } } else { @@ -1973,7 +1973,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), multiplicity); } else { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), multiplicity); + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), multiplicity); } } } @@ -1984,7 +1984,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), impParam); } else { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), impParam); + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), impParam); } } } else { @@ -1993,7 +1993,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), multiplicity); } else { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), multiplicity); + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), multiplicity); } } } @@ -2004,7 +2004,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), impParam); } else { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), impParam); + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), impParam); } } } else { @@ -2013,7 +2013,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), multiplicity); } else { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), multiplicity); + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), multiplicity); } } } @@ -2024,7 +2024,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), impParam); } else { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), impParam); + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), impParam); } } } else { @@ -2033,7 +2033,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), multiplicity); } else { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), multiplicity); + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), multiplicity); } } } @@ -2044,7 +2044,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), impParam); } else { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), impParam); + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), impParam); } } } else { @@ -2053,7 +2053,7 @@ struct tofSpectra { if (mcParticle.getProcess() == 4) { histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), multiplicity); } else { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), multiplicity); + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), multiplicity); } } } From 5bf0cf324d690f6d0aab2236adbd7318c785de3c Mon Sep 17 00:00:00 2001 From: Rohaan Deb <67634136+RD0407@users.noreply.github.com> Date: Thu, 30 Jan 2025 08:00:06 +0100 Subject: [PATCH 6/8] Update spectraTOF.cxx --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 121f4349355..076c65dd8f9 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -459,7 +459,7 @@ struct tofSpectra { histos.add("MC/fake/neg", "Fake negative tracks", kTH1D, {ptAxis}); histos.add("MC/no_collision/pos", "No collision pos track", kTH1D, {ptAxis}); histos.add("MC/no_collision/neg", "No collision neg track", kTH1D, {ptAxis}); - if(isImpactParam){ + if(isImpactParam){ histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); From 149cc4d6e7dc4ec683dbcc8f108782210622bb4a Mon Sep 17 00:00:00 2001 From: Rohaan Deb <67634136+RD0407@users.noreply.github.com> Date: Thu, 30 Jan 2025 08:08:52 +0100 Subject: [PATCH 7/8] Update spectraTOF.cxx --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 076c65dd8f9..8863d171d0b 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -459,7 +459,7 @@ struct tofSpectra { histos.add("MC/fake/neg", "Fake negative tracks", kTH1D, {ptAxis}); histos.add("MC/no_collision/pos", "No collision pos track", kTH1D, {ptAxis}); histos.add("MC/no_collision/neg", "No collision neg track", kTH1D, {ptAxis}); - if(isImpactParam){ + if (isImpactParam){ histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); From a75ab8e125acd87fcf13a974f921df20027d93a6 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 30 Jan 2025 07:14:48 +0000 Subject: [PATCH 8/8] Please consider the following formatting changes --- PWGLF/Tasks/Nuspex/spectraTOF.cxx | 392 +++++++++++++++--------------- 1 file changed, 196 insertions(+), 196 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/spectraTOF.cxx b/PWGLF/Tasks/Nuspex/spectraTOF.cxx index 8863d171d0b..8d1621fa0e2 100644 --- a/PWGLF/Tasks/Nuspex/spectraTOF.cxx +++ b/PWGLF/Tasks/Nuspex/spectraTOF.cxx @@ -459,7 +459,7 @@ struct tofSpectra { histos.add("MC/fake/neg", "Fake negative tracks", kTH1D, {ptAxis}); histos.add("MC/no_collision/pos", "No collision pos track", kTH1D, {ptAxis}); histos.add("MC/no_collision/neg", "No collision neg track", kTH1D, {ptAxis}); - if (isImpactParam){ + if (isImpactParam) { histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, impParamAxis}); @@ -484,7 +484,7 @@ struct tofSpectra { histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, impParamAxis}); - } else { + } else { histos.add("MC/withPID/pi/pos/prm/pt/num", "recons. MC #pi^{+}", kTHnSparseD, {ptAxis, multAxis}); histos.add("MC/withPID/pi/neg/prm/pt/num", "recons. MC #pi^{-}", kTHnSparseD, {ptAxis, multAxis}); histos.add("MC/withPID/ka/pos/prm/pt/num", "recons. MC K^{+}", kTHnSparseD, {ptAxis, multAxis}); @@ -509,7 +509,7 @@ struct tofSpectra { histos.add("MC/withPID/ka/neg/prm/pt/numtof", "recons. MC K^{-}", kTHnSparseD, {ptAxis, multAxis}); histos.add("MC/withPID/pr/pos/prm/pt/numtof", "recons. MC p", kTHnSparseD, {ptAxis, multAxis}); histos.add("MC/withPID/pr/neg/prm/pt/numtof", "recons. MC #bar{p}", kTHnSparseD, {ptAxis, multAxis}); - } + } if (doprocessMCgen) { histos.add("MC/test/pi/pos/prm/pt/den", "generated MC #pi^{+}", kTHnSparseD, {ptAxis, impParamAxis}); histos.add("MC/test/pi/neg/prm/pt/den", "generated MC #pi^{-}", kTHnSparseD, {ptAxis, impParamAxis}); @@ -664,22 +664,22 @@ struct tofSpectra { if (includeCentralityMC) { //*************************************RD********************************************** - if (isImpactParam){ - histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis, occupancyAxis}); - histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); - histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + if (isImpactParam) { + histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis, occupancyAxis}); + histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); - histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis, occupancyAxis}); - histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); - histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis, occupancyAxis}); + histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); + histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, impParamAxis, dcaXyAxis}); } else { - histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); - histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); - histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + histos.add(hpt_num_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); + histos.add(hpt_num_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + histos.add(hpt_num_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); - histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); - histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); - histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + histos.add(hpt_numtof_prm[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis, occupancyAxis}); + histos.add(hpt_numtof_str[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); + histos.add(hpt_numtof_mat[i].data(), pTCharge[i], kTHnSparseD, {ptAxis, multAxis, dcaXyAxis}); } histos.add(hpt_numtofgoodmatch_prm[i].data(), pTCharge[i], kTH3D, {ptAxis, multAxis, etaAxis}); @@ -1544,22 +1544,22 @@ struct tofSpectra { } // end of the process function PROCESS_SWITCH(tofSpectra, processDerived, "Derived data processor", false); -#define makeProcessFunction(processorName, inputPid, particleId, isFull, tofTable, tpcTable) \ - void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ - soa::Join const& tracks) \ - { \ - if (!isEventSelected(collision)) { \ - return; \ - } \ - for (const auto& track : tracks) { \ - if (!isTrackSelected(track, collision)) { \ - continue; \ - } \ - fillParticleHistos(track, collision); \ - } \ - } \ +#define makeProcessFunction(processorName, inputPid, particleId, isFull, tofTable, tpcTable) \ + void process##processorName##inputPid(CollisionCandidates::iterator const& collision, \ + soa::Join const& tracks) \ + { \ + if (!isEventSelected(collision)) { \ + return; \ + } \ + for (const auto& track : tracks) { \ + if (!isTrackSelected(track, collision)) { \ + continue; \ + } \ + fillParticleHistos(track, collision); \ + } \ + } \ PROCESS_SWITCH(tofSpectra, process##processorName##inputPid, Form("Process for the %s hypothesis from %s tables", #particleId, #processorName), false); // Full tables @@ -1929,136 +1929,136 @@ struct tofSpectra { } else { if (includeCentralityMC) { if (isImpactParam) { - histos.fill(HIST(hpt_num_prm[i]), track.pt(), impParam, track.dcaXY(), occupancy); - } else { - histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); + histos.fill(HIST(hpt_num_prm[i]), track.pt(), impParam, track.dcaXY(), occupancy); + } else { + histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); } } else { histos.fill(HIST(hpt_num_prm[i]), track.pt(), multiplicity); } if (isPionTPC || isKaonTPC || isProtonTPC) { - if (pdgCode == 2212) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), impParam); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), impParam); - } - } - } else { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), multiplicity); - } else { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), multiplicity); - } - } - } - } else if (pdgCode == -2212) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), impParam); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), impParam); - } - } - } else { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), multiplicity); - } else { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), multiplicity); - } - } - } - } else if (pdgCode == 211) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), impParam); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), impParam); - } - } - } else { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), multiplicity); - } else { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), multiplicity); - } - } - } - } else if (pdgCode == -211) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), impParam); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), impParam); - } - } - } else { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), multiplicity); - } else { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), multiplicity); - } - } - } - } else if (pdgCode == 321) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), impParam); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), impParam); - } - } - } else { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), multiplicity); - } else { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), multiplicity); - } - } - } - } else if (pdgCode == -321) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), impParam); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), impParam); - } - } - } else { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); - if (!mcParticle.isPhysicalPrimary()) { - if (mcParticle.getProcess() == 4) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), multiplicity); - } else { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), multiplicity); - } - } - } - } + if (pdgCode == 2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == -2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == 211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == -211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), impParam); + } } + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == 321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } else if (pdgCode == -321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), impParam); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), impParam); + } + } + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num"), track.pt(), multiplicity); + if (!mcParticle.isPhysicalPrimary()) { + if (mcParticle.getProcess() == 4) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_str"), track.pt(), multiplicity); + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/num_mat"), track.pt(), multiplicity); + } + } + } + } + } if (track.hasTRD() && trkselOptions.lastRequiredTrdCluster > 0) { int lastLayer = 0; for (int l = 7; l >= 0; l--) { @@ -2073,49 +2073,49 @@ struct tofSpectra { } if (track.hasTOF()) { if (isPionTOF || isKaonTOF || isProtonTOF) { - if (pdgCode == 2212) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); - } - } else if (pdgCode == -2212) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); - } - } else if (pdgCode == 211) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); - } - } else if (pdgCode == -211) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); - } - } else if (pdgCode == 321) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); - } - } else if (pdgCode == -321) { - if (isImpactParam) { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), impParam); - } else { - histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); - } - } + if (pdgCode == 2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/pos/prm/pt/numtof"), track.pt(), multiplicity); } + } else if (pdgCode == -2212) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pr/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == 211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/pos/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == -211) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/pi/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == 321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/pos/prm/pt/numtof"), track.pt(), multiplicity); + } + } else if (pdgCode == -321) { + if (isImpactParam) { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), impParam); + } else { + histos.fill(HIST("MC/withPID/ka/neg/prm/pt/numtof"), track.pt(), multiplicity); + } + } + } if (includeCentralityMC) { if (isImpactParam) { - histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), impParam, track.dcaXY(), occupancy); - } else { - histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); + histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), impParam, track.dcaXY(), occupancy); + } else { + histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity, track.dcaXY(), occupancy); } } else { histos.fill(HIST(hpt_numtof_prm[i]), track.pt(), multiplicity);