|
15 | 15 | /// \brief Implementation for QA tasks of the TOF PID quantities |
16 | 16 | /// |
17 | 17 |
|
18 | | -#include "Framework/AnalysisTask.h" |
19 | | -#include "Framework/runDataProcessing.h" |
20 | | -#include "Framework/HistogramRegistry.h" |
21 | | -#include "Framework/StaticFor.h" |
22 | | -#include "Common/DataModel/TrackSelectionTables.h" |
23 | 18 | #include "Common/DataModel/EventSelection.h" |
24 | | -#include "Common/DataModel/PIDResponse.h" |
25 | 19 | #include "Common/DataModel/FT0Corrected.h" |
| 20 | +#include "Common/DataModel/PIDResponse.h" |
| 21 | +#include "Common/DataModel/TrackSelectionTables.h" |
26 | 22 | #include "Common/TableProducer/PID/pidTOFBase.h" |
27 | 23 |
|
| 24 | +#include "Framework/AnalysisTask.h" |
| 25 | +#include "Framework/HistogramRegistry.h" |
| 26 | +#include "Framework/StaticFor.h" |
| 27 | +#include "Framework/runDataProcessing.h" |
| 28 | + |
28 | 29 | using namespace o2; |
29 | 30 | using namespace o2::framework; |
30 | 31 | using namespace o2::framework::expressions; |
@@ -135,7 +136,7 @@ struct tofPidQa { |
135 | 136 | Configurable<float> ptDeltaTEtaPhiMapMin{"ptDeltaTEtaPhiMapMin", 1.45f, "Threshold in pT to build the map of the delta time as a function of eta and phi"}; |
136 | 137 | Configurable<float> ptDeltaTEtaPhiMapMax{"ptDeltaTEtaPhiMapMax", 1.55f, "Threshold in pT to build the map of the delta time as a function of eta and phi"}; |
137 | 138 | Configurable<bool> splitSignalPerCharge{"splitSignalPerCharge", true, "Split the signal per charge (reduces memory footprint if off)"}; |
138 | | - Configurable<bool> enableVsMomentumHistograms{"enableVsMomentumHistograms", false, "Enables plots vs momentum instead of just pT (reduces memory footprint if off)"}; |
| 139 | + Configurable<int> enableVsMomentumHistograms{"enableVsMomentumHistograms", 0, "1: Enables plots vs momentum instead of just pT 2: Enables plots vs momentum vs eta instead of just pT (reduces memory footprint if off)"}; |
139 | 140 | Configurable<bool> requireGoodMatchTracks{"requireGoodMatchTracks", false, "Require good match tracks"}; |
140 | 141 | Configurable<float> pvContributorsMin{"pvContributorsMin", -10, "Minimum pvContributors"}; |
141 | 142 | Configurable<float> pvContributorsMax{"pvContributorsMax", 10000, "Maximum pvContributors"}; |
@@ -238,11 +239,16 @@ struct tofPidQa { |
238 | 239 | return; |
239 | 240 | } |
240 | 241 |
|
241 | | - if (enableVsMomentumHistograms) { |
| 242 | + if (enableVsMomentumHistograms == 1) { |
242 | 243 | histos.add(hdelta_evtime_fill[id].data(), axisTitle, kTH2F, {pAxis, deltaAxis}); |
243 | 244 | histos.add(hdelta_evtime_tof[id].data(), axisTitle, kTH2F, {pAxis, deltaAxis}); |
244 | 245 | histos.add(hdelta_evtime_ft0[id].data(), axisTitle, kTH2F, {pAxis, deltaAxis}); |
245 | 246 | histos.add(hdelta_evtime_tofft0[id].data(), axisTitle, kTH2F, {pAxis, deltaAxis}); |
| 247 | + } else if (enableVsMomentumHistograms == 2) { |
| 248 | + histos.add(hdelta_evtime_fill[id].data(), axisTitle, kTH3F, {pAxis, etaAxis, deltaAxis}); |
| 249 | + histos.add(hdelta_evtime_tof[id].data(), axisTitle, kTH3F, {pAxis, etaAxis, deltaAxis}); |
| 250 | + histos.add(hdelta_evtime_ft0[id].data(), axisTitle, kTH3F, {pAxis, etaAxis, deltaAxis}); |
| 251 | + histos.add(hdelta_evtime_tofft0[id].data(), axisTitle, kTH3F, {pAxis, etaAxis, deltaAxis}); |
246 | 252 | } |
247 | 253 |
|
248 | 254 | if (splitSignalPerCharge) { |
@@ -598,35 +604,43 @@ struct tofPidQa { |
598 | 604 | // Filling info split per ev. time |
599 | 605 | if (enableEvTimeSplitting) { |
600 | 606 | if (t.isEvTimeTOF() && t.isEvTimeT0AC()) { // TOF + FT0 Ev. Time |
601 | | - if (enableVsMomentumHistograms) { |
| 607 | + if (enableVsMomentumHistograms == 1) { |
602 | 608 | histos.fill(HIST(hdelta_evtime_tofft0[id]), t.p(), diff); |
| 609 | + } else if (enableVsMomentumHistograms == 2) { |
| 610 | + histos.fill(HIST(hdelta_evtime_tofft0[id]), t.p(), t.eta(), diff); |
603 | 611 | } |
604 | 612 | if (splitSignalPerCharge) { |
605 | 613 | histos.fill(HIST(hdelta_pt_evtime_tofft0[id]), t.pt(), diff, t.sign()); |
606 | 614 | } else { |
607 | 615 | histos.fill(HIST(hdelta_pt_evtime_tofft0[id]), t.pt(), diff); |
608 | 616 | } |
609 | 617 | } else if (t.isEvTimeT0AC()) { // FT0 Ev. Time |
610 | | - if (enableVsMomentumHistograms) { |
| 618 | + if (enableVsMomentumHistograms == 1) { |
611 | 619 | histos.fill(HIST(hdelta_evtime_ft0[id]), t.p(), diff); |
| 620 | + } else if (enableVsMomentumHistograms == 2) { |
| 621 | + histos.fill(HIST(hdelta_evtime_ft0[id]), t.p(), t.eta(), diff); |
612 | 622 | } |
613 | 623 | if (splitSignalPerCharge) { |
614 | 624 | histos.fill(HIST(hdelta_pt_evtime_ft0[id]), t.pt(), diff, t.sign()); |
615 | 625 | } else { |
616 | 626 | histos.fill(HIST(hdelta_pt_evtime_ft0[id]), t.pt(), diff); |
617 | 627 | } |
618 | 628 | } else if (t.isEvTimeTOF()) { // TOF Ev. Time |
619 | | - if (enableVsMomentumHistograms) { |
| 629 | + if (enableVsMomentumHistograms == 1) { |
620 | 630 | histos.fill(HIST(hdelta_evtime_tof[id]), t.p(), diff); |
| 631 | + } else if (enableVsMomentumHistograms == 2) { |
| 632 | + histos.fill(HIST(hdelta_evtime_tof[id]), t.p(), t.eta(), diff); |
621 | 633 | } |
622 | 634 | if (splitSignalPerCharge) { |
623 | 635 | histos.fill(HIST(hdelta_pt_evtime_tof[id]), t.pt(), diff, t.sign()); |
624 | 636 | } else { |
625 | 637 | histos.fill(HIST(hdelta_pt_evtime_tof[id]), t.pt(), diff); |
626 | 638 | } |
627 | 639 | } else { // No Ev. Time -> Fill Ev. Time |
628 | | - if (enableVsMomentumHistograms) { |
| 640 | + if (enableVsMomentumHistograms == 1) { |
629 | 641 | histos.fill(HIST(hdelta_evtime_fill[id]), t.p(), diff); |
| 642 | + } else if (enableVsMomentumHistograms == 2) { |
| 643 | + histos.fill(HIST(hdelta_evtime_fill[id]), t.p(), t.eta(), diff); |
630 | 644 | } |
631 | 645 | if (splitSignalPerCharge) { |
632 | 646 | histos.fill(HIST(hdelta_pt_evtime_fill[id]), t.pt(), diff, t.sign()); |
|
0 commit comments