@@ -2042,7 +2042,8 @@ struct Lambdastarproxy {
20422042 {
20432043 AxisSpec massAxis{200 , 1.4 , 1.9 , " M_{pK} (GeV/c^{2})" };
20442044 AxisSpec ptAxis{100 , 0 ., 10 ., " p_{T} (GeV/c)" };
2045- AxisSpec nsAxis{100 , -10 ., 10 ., " n#sigma" };
2045+ AxisSpec nsAxis{500 , -50 ., 50 ., " n#sigma" };
2046+ AxisSpec tofMatchAxis{2 , -0.5 , 1.5 , " has TOF match" };
20462047 AxisSpec pAxis{100 , 0 ., 10 ., " p (GeV/c)" };
20472048 AxisSpec etaAxis{80 , -2 ., 2 ., " #eta" };
20482049 AxisSpec phiAxis{64 , 0 ., o2::constants::math::TwoPI, " #varphi" };
@@ -2119,6 +2120,14 @@ struct Lambdastarproxy {
21192120 " TOF #beta vs p;p (GeV/c);#beta_{TOF};Counts" ,
21202121 HistType::kTH2F , {pAxis, betaAxis});
21212122
2123+ histos.add (" hHasTOFVsP" ,
2124+ " TOF matching flag vs p;p (GeV/c);has TOF match;Counts" ,
2125+ HistType::kTH2F , {pAxis, tofMatchAxis});
2126+
2127+ histos.add (" hHasTOFVsPt" ,
2128+ " TOF matching flag vs p_{T};p_{T} (GeV/c);has TOF match;Counts" ,
2129+ HistType::kTH2F , {ptAxis, tofMatchAxis});
2130+
21222131 // --- Per-species inclusive PID QA before final candidate PID cuts ---
21232132 // Species tagging here uses classifyPidSpecies() and is meant only for QA.
21242133 histos.add (" hTPCdEdxVsP_Pi" ,
@@ -2147,6 +2156,36 @@ struct Lambdastarproxy {
21472156 " TOF #beta vs p (tagged d);p (GeV/c);#beta_{TOF};Counts" ,
21482157 HistType::kTH2F , {pAxis, betaAxis});
21492158
2159+ // Inclusive tagged nSigma QA before final candidate PID cuts: after track-quality cuts only.
2160+ // These are separate from the final-candidate PID QA histograms.
2161+ histos.add (" hNsigmaTPCPionTaggedVsP" ,
2162+ " TPC n#sigma_{#pi} vs p for tagged #pi;p (GeV/c);n#sigma^{TPC}_{#pi};Counts" ,
2163+ HistType::kTH2F , {pAxis, nsAxis});
2164+ histos.add (" hNsigmaTOFPionTaggedVsP" ,
2165+ " TOF n#sigma_{#pi} vs p for tagged #pi;p (GeV/c);n#sigma^{TOF}_{#pi};Counts" ,
2166+ HistType::kTH2F , {pAxis, nsAxis});
2167+
2168+ histos.add (" hNsigmaTPCKaonTaggedVsP" ,
2169+ " TPC n#sigma_{K} vs p for tagged K;p (GeV/c);n#sigma^{TPC}_{K};Counts" ,
2170+ HistType::kTH2F , {pAxis, nsAxis});
2171+ histos.add (" hNsigmaTOFKaonTaggedVsP" ,
2172+ " TOF n#sigma_{K} vs p for tagged K;p (GeV/c);n#sigma^{TOF}_{K};Counts" ,
2173+ HistType::kTH2F , {pAxis, nsAxis});
2174+
2175+ histos.add (" hNsigmaTPCProtonTaggedVsP" ,
2176+ " TPC n#sigma_{p} vs p for tagged p;p (GeV/c);n#sigma^{TPC}_{p};Counts" ,
2177+ HistType::kTH2F , {pAxis, nsAxis});
2178+ histos.add (" hNsigmaTOFProtonTaggedVsP" ,
2179+ " TOF n#sigma_{p} vs p for tagged p;p (GeV/c);n#sigma^{TOF}_{p};Counts" ,
2180+ HistType::kTH2F , {pAxis, nsAxis});
2181+
2182+ histos.add (" hNsigmaTPCDeuteronTaggedVsP" ,
2183+ " TPC n#sigma_{d} vs p for tagged d;p (GeV/c);n#sigma^{TPC}_{d};Counts" ,
2184+ HistType::kTH2F , {pAxis, nsAxis});
2185+ histos.add (" hNsigmaTOFDeuteronTaggedVsP" ,
2186+ " TOF n#sigma_{d} vs p for tagged d;p (GeV/c);n#sigma^{TOF}_{d};Counts" ,
2187+ HistType::kTH2F , {pAxis, nsAxis});
2188+
21502189 // --- MC QA (AO2D-MC mode) ---
21512190 histos.add (" hMcPrimariesPtEta" ,
21522191 " MC charged physical primaries; p_{T} (GeV/c); #eta; Counts" ,
@@ -2615,10 +2654,18 @@ struct Lambdastarproxy {
26152654 fillTPCdEdxVsPIfAvailable (trk);
26162655 fillTOFBetaVsPIfAvailable (trk);
26172656
2657+ const double pForPidQA = static_cast <double >(trk.pt ()) * std::cosh (static_cast <double >(trk.eta ()));
2658+ const bool hasTofForPidQA = hasTOFMatch (trk);
2659+
2660+ histos.fill (HIST (" hHasTOFVsP" ), pForPidQA, hasTofForPidQA ? 1.0 : 0.0 );
2661+ histos.fill (HIST (" hHasTOFVsPt" ), trk.pt (), hasTofForPidQA ? 1.0 : 0.0 );
2662+
26182663 // Per-species PID-QA (tagged) histograms
26192664 const int sp = classifyPidSpecies (trk);
26202665 switch (sp) {
26212666 case 0 : { // pion
2667+ histos.fill (HIST (" hNsigmaTPCPionTaggedVsP" ), pForPidQA, trk.tpcNSigmaPi ());
2668+ histos.fill (HIST (" hNsigmaTOFPionTaggedVsP" ), pForPidQA, trk.tofNSigmaPi ());
26222669 if constexpr (requires { trk.tpcSignal (); }) {
26232670 histos.fill (HIST (" hTPCdEdxVsP_Pi" ), trk.p (), trk.tpcSignal ());
26242671 }
@@ -2632,6 +2679,8 @@ struct Lambdastarproxy {
26322679 break ;
26332680 }
26342681 case 1 : { // kaon
2682+ histos.fill (HIST (" hNsigmaTPCKaonTaggedVsP" ), pForPidQA, trk.tpcNSigmaKa ());
2683+ histos.fill (HIST (" hNsigmaTOFKaonTaggedVsP" ), pForPidQA, trk.tofNSigmaKa ());
26352684 if constexpr (requires { trk.tpcSignal (); }) {
26362685 histos.fill (HIST (" hTPCdEdxVsP_K" ), trk.p (), trk.tpcSignal ());
26372686 }
@@ -2645,6 +2694,8 @@ struct Lambdastarproxy {
26452694 break ;
26462695 }
26472696 case 2 : { // proton
2697+ histos.fill (HIST (" hNsigmaTPCProtonTaggedVsP" ), pForPidQA, trk.tpcNSigmaPr ());
2698+ histos.fill (HIST (" hNsigmaTOFProtonTaggedVsP" ), pForPidQA, trk.tofNSigmaPr ());
26482699 if constexpr (requires { trk.tpcSignal (); }) {
26492700 histos.fill (HIST (" hTPCdEdxVsP_P" ), trk.p (), trk.tpcSignal ());
26502701 }
@@ -2658,6 +2709,8 @@ struct Lambdastarproxy {
26582709 break ;
26592710 }
26602711 case 3 : { // deuteron
2712+ histos.fill (HIST (" hNsigmaTPCDeuteronTaggedVsP" ), pForPidQA, trk.tpcNSigmaDe ());
2713+ histos.fill (HIST (" hNsigmaTOFDeuteronTaggedVsP" ), pForPidQA, trk.tofNSigmaDe ());
26612714 if constexpr (requires { trk.tpcSignal (); }) {
26622715 histos.fill (HIST (" hTPCdEdxVsP_D" ), trk.p (), trk.tpcSignal ());
26632716 }
0 commit comments