diff --git a/DPG/Tasks/qaPIDTOF.h b/DPG/Tasks/qaPIDTOF.h index 341e3b830eb..62f944631fe 100644 --- a/DPG/Tasks/qaPIDTOF.h +++ b/DPG/Tasks/qaPIDTOF.h @@ -36,6 +36,12 @@ struct tofPidQa { static constexpr std::string_view hexpected_diff[Np] = {"expected_diff/El", "expected_diff/Mu", "expected_diff/Pi", "expected_diff/Ka", "expected_diff/Pr", "expected_diff/De", "expected_diff/Tr", "expected_diff/He", "expected_diff/Al"}; + static constexpr std::string_view hexpected_diffptpos[Np] = {"expected_diffptpos/El", "expected_diffptpos/Mu", "expected_diffptpos/Pi", + "expected_diffptpos/Ka", "expected_diffptpos/Pr", "expected_diffptpos/De", + "expected_diffptpos/Tr", "expected_diffptpos/He", "expected_diffptpos/Al"}; + static constexpr std::string_view hexpected_diffptneg[Np] = {"expected_diffptneg/El", "expected_diffptneg/Mu", "expected_diffptneg/Pi", + "expected_diffptneg/Ka", "expected_diffptneg/Pr", "expected_diffptneg/De", + "expected_diffptneg/Tr", "expected_diffptneg/He", "expected_diffptneg/Al"}; static constexpr std::string_view hexpsigma[Np] = {"expsigma/El", "expsigma/Mu", "expsigma/Pi", "expsigma/Ka", "expsigma/Pr", "expsigma/De", "expsigma/Tr", "expsigma/He", "expsigma/Al"}; @@ -76,12 +82,21 @@ struct tofPidQa { void initPerParticle(const AxisSpec& pAxis, const AxisSpec& ptAxis) { static_assert(id >= 0 && id <= PID::Alpha && "Particle index outside limits"); + bool enableFullHistos = false; + int enabledProcesses = 0; switch (id) { // Skipping disabled particles #define particleCase(particleId) \ case PID::particleId: \ if (!doprocess##particleId && !doprocessFull##particleId) { \ return; \ } \ + if (!doprocess##particleId) { \ + enabledProcesses++; \ + } \ + if (!doprocessFull##particleId) { \ + enableFullHistos = true; \ + enabledProcesses++; \ + } \ LOGF(info, "Enabled TOF QA for %s %s", #particleId, pT[id]); \ break; @@ -96,6 +111,9 @@ struct tofPidQa { particleCase(Alpha); #undef particleCase } + if (enabledProcesses != 1) { + LOG(fatal) << "Cannot enable more than one process function per particle, check and retry!"; + } auto addHistogram = [&](const auto& name, const auto& title, const auto& xAxis, const auto& yAxis) { if (!enableEvTimeSplitting) { @@ -110,6 +128,18 @@ struct tofPidQa { histo->GetZaxis()->SetBinLabel(4, "FT0+TOF"); }; + // NSigma + const char* axisTitle = Form("N_{#sigma}^{TOF}(%s)", pT[id]); + const AxisSpec nSigmaAxis{nBinsNSigma, minNSigma, maxNSigma, axisTitle}; + addHistogram(hnsigma[id], axisTitle, pAxis, nSigmaAxis); + addHistogram(hnsigmapt[id], axisTitle, ptAxis, nSigmaAxis); + addHistogram(hnsigmapospt[id], axisTitle, ptAxis, nSigmaAxis); + addHistogram(hnsigmanegpt[id], axisTitle, ptAxis, nSigmaAxis); + + if (!enableFullHistos) { // Enabling only NSigma for tiny tables + return; + } + // Exp signal const AxisSpec expAxis{1000, 0, 2e6, Form("t_{exp}(%s) (ps)", pT[id])}; histos.add(hexpected[id].data(), "", kTH2F, {pAxis, expAxis}); @@ -121,21 +151,12 @@ struct tofPidQa { // Exp Sigma const AxisSpec expSigmaAxis{nBinsExpSigma, minExpSigma, maxExpSigma, Form("Exp_{#sigma}^{TOF}(%s) (ps)", pT[id])}; histos.add(hexpsigma[id].data(), "", kTH2F, {pAxis, expSigmaAxis}); - - // NSigma - const char* axisTitle = Form("N_{#sigma}^{TOF}(%s)", pT[id]); - const AxisSpec nSigmaAxis{nBinsNSigma, minNSigma, maxNSigma, axisTitle}; - addHistogram(hnsigma[id], axisTitle, pAxis, nSigmaAxis); - addHistogram(hnsigmapt[id], axisTitle, ptAxis, nSigmaAxis); - addHistogram(hnsigmapospt[id], axisTitle, ptAxis, nSigmaAxis); - addHistogram(hnsigmanegpt[id], axisTitle, ptAxis, nSigmaAxis); } void init(o2::framework::InitContext&) { const AxisSpec multAxis{100, 0, 100, "TOF multiplicity"}; const AxisSpec vtxZAxis{100, -20, 20, "Vtx_{z} (cm)"}; - const AxisSpec tofAxis{10000, 0, 2e6, "TOF Signal (ps)"}; const AxisSpec etaAxis{100, -1, 1, "#it{#eta}"}; const AxisSpec phiAxis{100, 0, TMath::TwoPi(), "#it{#phi}"}; const AxisSpec colTimeAxis{100, -2000, 2000, "Collision time (ps)"}; @@ -150,6 +171,7 @@ struct tofPidQa { pAxis.makeLogaritmic(); pExpAxis.makeLogaritmic(); } + const AxisSpec tofAxis{10000, 0, 2e6, "TOF Signal (ps)"}; // Event properties auto h = histos.add("event/evsel", "", kTH1F, {{10, 0.5, 10.5, "Ev. Sel."}}); @@ -347,7 +369,9 @@ struct tofPidQa { using CollisionCandidate = soa::Join::iterator; void process(CollisionCandidate const& collision, - soa::Join const& tracks) + soa::Join const& tracks) { isEventSelected(collision, tracks); for (auto t : tracks) { @@ -355,7 +379,8 @@ struct tofPidQa { } } - template + template void processSingleParticle(CollisionCandidate const& collision, TrackType const& tracks) { @@ -418,13 +443,14 @@ struct tofPidQa { } // QA of nsigma only tables -#define makeProcessFunction(inputPid, particleId) \ - void process##particleId(CollisionCandidate const& collision, \ - soa::Join const& tracks) \ - { \ - processSingleParticle(collision, tracks); \ - } \ +#define makeProcessFunction(inputPid, particleId) \ + void process##particleId(CollisionCandidate const& collision, \ + soa::Join const& tracks) \ + { \ + processSingleParticle(collision, tracks); \ + } \ PROCESS_SWITCH(tofPidQa, process##particleId, Form("Process for the %s hypothesis for TOF NSigma QA", #particleId), false); makeProcessFunction(aod::pidTOFEl, Electron); @@ -439,13 +465,14 @@ struct tofPidQa { #undef makeProcessFunction // QA of full tables -#define makeProcessFunction(inputPid, particleId) \ - void processFull##particleId(CollisionCandidate const& collision, \ - soa::Join const& tracks) \ - { \ - processSingleParticle(collision, tracks); \ - } \ +#define makeProcessFunction(inputPid, particleId) \ + void processFull##particleId(CollisionCandidate const& collision, \ + soa::Join const& tracks) \ + { \ + processSingleParticle(collision, tracks); \ + } \ PROCESS_SWITCH(tofPidQa, processFull##particleId, Form("Process for the %s hypothesis for full TOF PID QA", #particleId), false); makeProcessFunction(aod::pidTOFFullEl, Electron); diff --git a/DPG/Tasks/qaPIDTPC.h b/DPG/Tasks/qaPIDTPC.h index 05205bd9992..bdab8d251b5 100644 --- a/DPG/Tasks/qaPIDTPC.h +++ b/DPG/Tasks/qaPIDTPC.h @@ -42,14 +42,6 @@ struct tpcPidQa { static constexpr std::string_view hexpected_diffptneg[Np] = {"expected_diffptneg/El", "expected_diffptneg/Mu", "expected_diffptneg/Pi", "expected_diffptneg/Ka", "expected_diffptneg/Pr", "expected_diffptneg/De", "expected_diffptneg/Tr", "expected_diffptneg/He", "expected_diffptneg/Al"}; - // With TOF - static constexpr std::string_view hexpectedwtof[Np] = {"expectedwtof/El", "expectedwtof/Mu", "expectedwtof/Pi", - "expectedwtof/Ka", "expectedwtof/Pr", "expectedwtof/De", - "expectedwtof/Tr", "expectedwtof/He", "expectedwtof/Al"}; - static constexpr std::string_view hexpected_diffwtof[Np] = {"expected_diffwtof/El", "expected_diffwtof/Mu", "expected_diffwtof/Pi", - "expected_diffwtof/Ka", "expected_diffwtof/Pr", "expected_diffwtof/De", - "expected_diffwtof/Tr", "expected_diffwtof/He", "expected_diffwtof/Al"}; - static constexpr std::string_view hexpsigma[Np] = {"expsigma/El", "expsigma/Mu", "expsigma/Pi", "expsigma/Ka", "expsigma/Pr", "expsigma/De", "expsigma/Tr", "expsigma/He", "expsigma/Al"}; @@ -65,24 +57,38 @@ struct tpcPidQa { static constexpr std::string_view hnsigmanegpt[Np] = {"nsigmanegpt/El", "nsigmanegpt/Mu", "nsigmanegpt/Pi", "nsigmanegpt/Ka", "nsigmanegpt/Pr", "nsigmanegpt/De", "nsigmanegpt/Tr", "nsigmanegpt/He", "nsigmanegpt/Al"}; + // With TOF - static constexpr std::string_view hexpsigmawtof[Np] = {"expsigmawtof/El", "expsigmawtof/Mu", "expsigmawtof/Pi", - "expsigmawtof/Ka", "expsigmawtof/Pr", "expsigmawtof/De", - "expsigmawtof/Tr", "expsigmawtof/He", "expsigmawtof/Al"}; - static constexpr std::string_view hnsigmawtof[Np] = {"nsigmawtof/El", "nsigmawtof/Mu", "nsigmawtof/Pi", - "nsigmawtof/Ka", "nsigmawtof/Pr", "nsigmawtof/De", - "nsigmawtof/Tr", "nsigmawtof/He", "nsigmawtof/Al"}; - static constexpr std::string_view hnsigmaptwtof[Np] = {"nsigmaptwtof/El", "nsigmaptwtof/Mu", "nsigmaptwtof/Pi", - "nsigmaptwtof/Ka", "nsigmaptwtof/Pr", "nsigmaptwtof/De", - "nsigmaptwtof/Tr", "nsigmaptwtof/He", "nsigmaptwtof/Al"}; - - static constexpr std::string_view hsignal[Np] = {"signal/El", "signal/Mu", "signal/Pi", - "signal/Ka", "signal/Pr", "signal/De", - "signal/Tr", "signal/He", "signal/Al"}; - // With TOF - static constexpr std::string_view hsignalwtof[Np] = {"signalwtof/El", "signalwtof/Mu", "signalwtof/Pi", - "signalwtof/Ka", "signalwtof/Pr", "signalwtof/De", - "signalwtof/Tr", "signalwtof/He", "signalwtof/Al"}; + static constexpr std::string_view hexpectedWithTOF[Np] = {"wTOF/expected/El", "wTOF/expected/Mu", "wTOF/expected/Pi", + "wTOF/expected/Ka", "wTOF/expected/Pr", "wTOF/expected/De", + "wTOF/expected/Tr", "wTOF/expected/He", "wTOF/expected/Al"}; + static constexpr std::string_view hexpected_diffWithTOF[Np] = {"wTOF/expected_diff/El", "wTOF/expected_diff/Mu", "wTOF/expected_diff/Pi", + "wTOF/expected_diff/Ka", "wTOF/expected_diff/Pr", "wTOF/expected_diff/De", + "wTOF/expected_diff/Tr", "wTOF/expected_diff/He", "wTOF/expected_diff/Al"}; + static constexpr std::string_view hexpected_diffptposWithTOF[Np] = {"wTOF/expected_diffptpos/El", "wTOF/expected_diffptpos/Mu", "wTOF/expected_diffptpos/Pi", + "wTOF/expected_diffptpos/Ka", "wTOF/expected_diffptpos/Pr", "wTOF/expected_diffptpos/De", + "wTOF/expected_diffptpos/Tr", "wTOF/expected_diffptpos/He", "wTOF/expected_diffptpos/Al"}; + static constexpr std::string_view hexpected_diffptnegWithTOF[Np] = {"wTOF/expected_diffptneg/El", "wTOF/expected_diffptneg/Mu", "wTOF/expected_diffptneg/Pi", + "wTOF/expected_diffptneg/Ka", "wTOF/expected_diffptneg/Pr", "wTOF/expected_diffptneg/De", + "wTOF/expected_diffptneg/Tr", "wTOF/expected_diffptneg/He", "wTOF/expected_diffptneg/Al"}; + static constexpr std::string_view hexpsigmaWithTOF[Np] = {"wTOF/expsigma/El", "wTOF/expsigma/Mu", "wTOF/expsigma/Pi", + "wTOF/expsigma/Ka", "wTOF/expsigma/Pr", "wTOF/expsigma/De", + "wTOF/expsigma/Tr", "wTOF/expsigma/He", "wTOF/expsigma/Al"}; + static constexpr std::string_view hnsigmaWithTOF[Np] = {"wTOF/nsigma/El", "wTOF/nsigma/Mu", "wTOF/nsigma/Pi", + "wTOF/nsigma/Ka", "wTOF/nsigma/Pr", "wTOF/nsigma/De", + "wTOF/nsigma/Tr", "wTOF/nsigma/He", "wTOF/nsigma/Al"}; + static constexpr std::string_view hnsigmaptWithTOF[Np] = {"wTOF/nsigmapt/El", "wTOF/nsigmapt/Mu", "wTOF/nsigmapt/Pi", + "wTOF/nsigmapt/Ka", "wTOF/nsigmapt/Pr", "wTOF/nsigmapt/De", + "wTOF/nsigmapt/Tr", "wTOF/nsigmapt/He", "wTOF/nsigmapt/Al"}; + static constexpr std::string_view hnsigmaposptWithTOF[Np] = {"wTOF/nsigmapospt/El", "wTOF/nsigmapospt/Mu", "wTOF/nsigmapospt/Pi", + "wTOF/nsigmapospt/Ka", "wTOF/nsigmapospt/Pr", "wTOF/nsigmapospt/De", + "wTOF/nsigmapospt/Tr", "wTOF/nsigmapospt/He", "wTOF/nsigmapospt/Al"}; + static constexpr std::string_view hnsigmanegptWithTOF[Np] = {"wTOF/nsigmanegpt/El", "wTOF/nsigmanegpt/Mu", "wTOF/nsigmanegpt/Pi", + "wTOF/nsigmanegpt/Ka", "wTOF/nsigmanegpt/Pr", "wTOF/nsigmanegpt/De", + "wTOF/nsigmanegpt/Tr", "wTOF/nsigmanegpt/He", "wTOF/nsigmanegpt/Al"}; + static constexpr std::string_view hsignalWithTOF[Np] = {"wTOF/signal/El", "wTOF/signal/Mu", "wTOF/signal/Pi", + "wTOF/signal/Ka", "wTOF/signal/Pr", "wTOF/signal/De", + "wTOF/signal/Tr", "wTOF/signal/He", "wTOF/signal/Al"}; HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -104,15 +110,30 @@ struct tpcPidQa { Configurable applyRapidityCut{"applyRapidityCut", false, "Flag to apply rapidity cut"}; template - void addParticleHistos(const AxisSpec& pAxis, const AxisSpec& ptAxis) + void initPerParticle(const AxisSpec& pAxis, const AxisSpec& ptAxis) { static_assert(id >= 0 && id <= PID::Alpha && "Particle index outside limits"); + bool enableTOFHistos = false; + bool enableFullHistos = false; + int enabledProcesses = 0; switch (id) { // Skipping disabled particles #define particleCase(particleId) \ case PID::particleId: \ if (!doprocess##particleId && !doprocessFull##particleId && !doprocessFullWithTOF##particleId) { \ return; \ } \ + if (!doprocess##particleId) { \ + enabledProcesses++; \ + } \ + if (!doprocessFull##particleId) { \ + enableFullHistos = true; \ + enabledProcesses++; \ + } \ + if (!doprocessFullWithTOF##particleId) { \ + enableFullHistos = true; \ + enableTOFHistos = true; \ + enabledProcesses++; \ + } \ LOGF(info, "Enabled TPC QA for %s %s", #particleId, pT[id]); \ break; @@ -127,6 +148,22 @@ struct tpcPidQa { particleCase(Alpha); #undef particleCase } + if (enabledProcesses != 1) { + LOG(fatal) << "Cannot enable more than one process function per particle, check and retry!"; + } + + // NSigma + const char* axisTitle = Form("N_{#sigma}^{TPC}(%s)", pT[id]); + const AxisSpec nSigmaAxis{nBinsNSigma, minNSigma, maxNSigma, axisTitle}; + histos.add(hnsigma[id].data(), axisTitle, kTH2F, {pAxis, nSigmaAxis}); + histos.add(hnsigmapt[id].data(), axisTitle, kTH2F, {ptAxis, nSigmaAxis}); + histos.add(hnsigmapospt[id].data(), axisTitle, kTH2F, {ptAxis, nSigmaAxis}); + histos.add(hnsigmanegpt[id].data(), axisTitle, kTH2F, {ptAxis, nSigmaAxis}); + + if (!enableFullHistos) { // Enabling only NSigma for tiny tables + return; + } + // Exp signal const AxisSpec expAxis{1000, 0, 1000, Form("d#it{E}/d#it{x}_(%s) A.U.", pT[id])}; histos.add(hexpected[id].data(), "", kTH2F, {pAxis, expAxis}); @@ -141,22 +178,26 @@ struct tpcPidQa { const AxisSpec expSigmaAxis{nBinsExpSigma, minExpSigma, maxExpSigma, Form("Exp_{#sigma}^{TPC}(%s)", pT[id])}; histos.add(hexpsigma[id].data(), "", kTH2F, {pAxis, expSigmaAxis}); - // NSigma - const char* axisTitle = Form("N_{#sigma}^{TPC}(%s)", pT[id]); - const AxisSpec nSigmaAxis{nBinsNSigma, minNSigma, maxNSigma, axisTitle}; - histos.add(hnsigma[id].data(), axisTitle, kTH2F, {pAxis, nSigmaAxis}); - histos.add(hnsigmapt[id].data(), axisTitle, kTH2F, {ptAxis, nSigmaAxis}); - histos.add(hnsigmapospt[id].data(), axisTitle, kTH2F, {ptAxis, nSigmaAxis}); - histos.add(hnsigmanegpt[id].data(), axisTitle, kTH2F, {ptAxis, nSigmaAxis}); + if (!enableTOFHistos) { // Returning if the plots with TOF are not requested + return; + } + + histos.add(hexpectedWithTOF[id].data(), "With TOF", kTH2F, {pAxis, expAxis}); + histos.add(hexpected_diffWithTOF[id].data(), "With TOF", kTH2F, {pAxis, deltaAxis}); + histos.add(hexpected_diffptposWithTOF[id].data(), "With TOF Positive", kTH2F, {pAxis, deltaAxis}); + histos.add(hexpected_diffptnegWithTOF[id].data(), "With TOF Negative", kTH2F, {pAxis, deltaAxis}); + histos.add(hexpsigmaWithTOF[id].data(), "With TOF", kTH2F, {pAxis, expSigmaAxis}); + histos.add(hnsigmaWithTOF[id].data(), Form("With TOF %s", axisTitle), kTH2F, {pAxis, nSigmaAxis}); + histos.add(hnsigmaptWithTOF[id].data(), Form("With TOF %s", axisTitle), kTH2F, {ptAxis, nSigmaAxis}); + histos.add(hnsigmaposptWithTOF[id].data(), Form("With TOF %s", axisTitle), kTH2F, {ptAxis, nSigmaAxis}); + histos.add(hnsigmanegptWithTOF[id].data(), Form("With TOF %s", axisTitle), kTH2F, {ptAxis, nSigmaAxis}); - // Signal with TOF preselection const AxisSpec dedxAxis{1000, 0, 1000, "d#it{E}/d#it{x} A.U."}; - histos.add(hsignal[id].data(), "", kTH2F, {pAxis, dedxAxis}); + histos.add(hsignalWithTOF[id].data(), "With TOF", kTH2F, {pAxis, dedxAxis}); } void init(o2::framework::InitContext&) { - const AxisSpec multAxis{1000, 0.f, 1000.f, "Track multiplicity"}; const AxisSpec vtxZAxis{100, -20, 20, "Vtx_{z} (cm)"}; const AxisSpec etaAxis{100, -2, 2, "#it{#eta}"}; @@ -203,7 +244,7 @@ struct tpcPidQa { histos.add("event/p", "", kTH1F, {pAxis}); static_for<0, 8>([&](auto i) { - addParticleHistos(pAxis, ptAxis); + initPerParticle(pAxis, ptAxis); }); } @@ -211,7 +252,9 @@ struct tpcPidQa { bool isEventSelected(const CollisionType& collision, const TrackType& tracks) { - histos.fill(HIST("event/evsel"), 1); + if constexpr (fillHistograms) { + histos.fill(HIST("event/evsel"), 1); + } if (applyEvSel == 1) { if (!collision.sel7()) { return false; @@ -222,21 +265,24 @@ struct tpcPidQa { } } - histos.fill(HIST("event/evsel"), 2); + if constexpr (fillHistograms) { + histos.fill(HIST("event/evsel"), 2); + } // Computing Multiplicity first - float ntracks = 0; - for (auto t : tracks) { - if (applyTrackCut && !t.isGlobalTrack()) { - continue; + int ntracks = 0; + if constexpr (fillHistograms) { + for (auto t : tracks) { + if (applyTrackCut && !t.isGlobalTrack()) { + continue; + } + ntracks += 1; } - ntracks += 1; + histos.fill(HIST("event/evsel"), 3); } - histos.fill(HIST("event/evsel"), 3); if (abs(collision.posZ()) > 10.f) { return false; } - if constexpr (fillHistograms) { histos.fill(HIST("event/evsel"), 4); histos.fill(HIST("event/vertexz"), collision.posZ()); @@ -286,7 +332,8 @@ struct tpcPidQa { using CollisionCandidate = soa::Join::iterator; void process(CollisionCandidate const& collision, - soa::Join const& tracks) + soa::Join const& tracks) { isEventSelected(collision, tracks); for (auto t : tracks) { @@ -294,7 +341,9 @@ struct tpcPidQa { } } - template + template void processSingleParticle(CollisionCandidate const& collision, TrackType const& tracks) { @@ -313,7 +362,7 @@ struct tpcPidQa { } } - const auto& nsigma = o2::aod::pidutils::tpcNSigma(t); + const auto nsigma = o2::aod::pidutils::tpcNSigma(t); histos.fill(HIST(hnsigma[id]), t.p(), nsigma); histos.fill(HIST(hnsigmapt[id]), t.pt(), nsigma); if (t.sign() > 0) { @@ -335,18 +384,18 @@ struct tpcPidQa { histos.fill(HIST(hexpsigma[id]), t.tpcInnerParam(), o2::aod::pidutils::tpcExpSigma(t)); if constexpr (fillWithTOFHistograms) { if (std::abs(o2::aod::pidutils::tofNSigma(t)) < 3.f) { - histos.fill(HIST(hexpectedwtof[id]), t.tpcInnerParam(), t.tpcSignal() - diff); - histos.fill(HIST(hexpected_diffwtof[id]), t.tpcInnerParam(), diff); - histos.fill(HIST(hexpsigmawtof[id]), t.p(), o2::aod::pidutils::tpcExpSigma(t)); + histos.fill(HIST(hexpectedWithTOF[id]), t.tpcInnerParam(), t.tpcSignal() - diff); + histos.fill(HIST(hexpected_diffWithTOF[id]), t.tpcInnerParam(), diff); + histos.fill(HIST(hexpsigmaWithTOF[id]), t.p(), o2::aod::pidutils::tpcExpSigma(t)); } } } - if constexpr (fillWithTOFHistograms) { + if constexpr (fillWithTOFHistograms) { // Filling nsigma (common to full and tiny) const auto& nsigmatof = o2::aod::pidutils::tofNSigma(t); if (std::abs(nsigmatof) < 3.f) { - histos.fill(HIST(hnsigmawtof[id]), t.p(), nsigma); - histos.fill(HIST(hnsigmaptwtof[id]), t.pt(), nsigma); - histos.fill(HIST(hsignalwtof[id]), t.tpcInnerParam(), t.tpcSignal()); + histos.fill(HIST(hnsigmaWithTOF[id]), t.p(), nsigma); + histos.fill(HIST(hnsigmaptWithTOF[id]), t.pt(), nsigma); + histos.fill(HIST(hsignalWithTOF[id]), t.tpcInnerParam(), t.tpcSignal()); // histos.fill(HIST("event/signedtpcsignal"), t.tpcInnerParam() * t.sign(), t.tpcSignal()); } }