File indexing completed on 2025-07-12 07:52:23
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "ActsExamples/Validation/TrackSummaryPlotTool.hpp"
0010
0011 #include "Acts/Utilities/VectorHelpers.hpp"
0012
0013 #include <TProfile.h>
0014
0015 namespace ActsExamples {
0016
0017 TrackSummaryPlotTool::TrackSummaryPlotTool(
0018 const TrackSummaryPlotTool::Config& cfg, Acts::Logging::Level lvl)
0019 : m_cfg(cfg),
0020 m_logger(Acts::getDefaultLogger("TrackSummaryPlotTool", lvl)) {}
0021
0022 void TrackSummaryPlotTool::book(Cache& cache, const std::string& prefix) const {
0023 PlotHelpers::Binning bEta = m_cfg.varBinning.at("Eta");
0024 PlotHelpers::Binning bPt = m_cfg.varBinning.at("Pt");
0025 PlotHelpers::Binning bNum = m_cfg.varBinning.at("Num");
0026 ACTS_DEBUG("Initialize the histograms for track info plots, use prefix '"
0027 << prefix << "'");
0028 auto addPrefix = [&](const std::string& name) {
0029 return prefix.empty() ? name : prefix + "_" + name;
0030 };
0031
0032 cache.nStates_vs_eta =
0033 PlotHelpers::bookProf(addPrefix("nStates_vs_eta").c_str(),
0034 "Number of total states vs. #eta", bEta, bNum);
0035
0036 cache.nMeasurements_vs_eta =
0037 PlotHelpers::bookProf(addPrefix("nMeasurements_vs_eta").c_str(),
0038 "Number of measurements vs. #eta", bEta, bNum);
0039
0040 cache.nHoles_vs_eta =
0041 PlotHelpers::bookProf(addPrefix("nHoles_vs_eta").c_str(),
0042 "Number of holes vs. #eta", bEta, bNum);
0043
0044 cache.nOutliers_vs_eta =
0045 PlotHelpers::bookProf(addPrefix("nOutliers_vs_eta").c_str(),
0046 "Number of outliers vs. #eta", bEta, bNum);
0047
0048 cache.nSharedHits_vs_eta =
0049 PlotHelpers::bookProf(addPrefix("nSharedHits_vs_eta").c_str(),
0050 "Number of Shared Hits vs. #eta", bEta, bNum);
0051
0052 cache.nStates_vs_pt =
0053 PlotHelpers::bookProf(addPrefix("nStates_vs_pT").c_str(),
0054 "Number of total states vs. pT", bPt, bNum);
0055
0056 cache.nMeasurements_vs_pt =
0057 PlotHelpers::bookProf(addPrefix("nMeasurements_vs_pT").c_str(),
0058 "Number of measurements vs. pT", bPt, bNum);
0059
0060 cache.nHoles_vs_pt = PlotHelpers::bookProf(
0061 addPrefix("nHoles_vs_pT").c_str(), "Number of holes vs. pT", bPt, bNum);
0062
0063 cache.nOutliers_vs_pt =
0064 PlotHelpers::bookProf(addPrefix("nOutliers_vs_pT").c_str(),
0065 "Number of outliers vs. pT", bPt, bNum);
0066
0067 cache.nSharedHits_vs_pt =
0068 PlotHelpers::bookProf(addPrefix("nSharedHits_vs_pT").c_str(),
0069 "Number of Shared Hits vs. pT", bPt, bNum);
0070 }
0071
0072 void TrackSummaryPlotTool::clear(Cache& cache) const {
0073 delete cache.nStates_vs_eta;
0074 delete cache.nMeasurements_vs_eta;
0075 delete cache.nOutliers_vs_eta;
0076 delete cache.nHoles_vs_eta;
0077 delete cache.nSharedHits_vs_eta;
0078 delete cache.nStates_vs_pt;
0079 delete cache.nMeasurements_vs_pt;
0080 delete cache.nOutliers_vs_pt;
0081 delete cache.nHoles_vs_pt;
0082 delete cache.nSharedHits_vs_pt;
0083 }
0084
0085 void TrackSummaryPlotTool::write(const Cache& cache) const {
0086 ACTS_DEBUG("Write the plots to output file.");
0087 cache.nStates_vs_eta->Write();
0088 cache.nMeasurements_vs_eta->Write();
0089 cache.nOutliers_vs_eta->Write();
0090 cache.nHoles_vs_eta->Write();
0091 cache.nSharedHits_vs_eta->Write();
0092 cache.nStates_vs_pt->Write();
0093 cache.nMeasurements_vs_pt->Write();
0094 cache.nOutliers_vs_pt->Write();
0095 cache.nHoles_vs_pt->Write();
0096 cache.nSharedHits_vs_pt->Write();
0097 }
0098
0099 void TrackSummaryPlotTool::fill(
0100 Cache& cache, const Acts::BoundTrackParameters& fittedParameters,
0101 std::size_t nStates, std::size_t nMeasurements, std::size_t nOutliers,
0102 std::size_t nHoles, std::size_t nSharedHits) const {
0103 using Acts::VectorHelpers::eta;
0104 using Acts::VectorHelpers::perp;
0105 const auto momentum = fittedParameters.momentum();
0106 const double fit_eta = eta(momentum);
0107 const double fit_pT = perp(momentum);
0108
0109 PlotHelpers::fillProf(cache.nStates_vs_eta, fit_eta, nStates);
0110 PlotHelpers::fillProf(cache.nMeasurements_vs_eta, fit_eta, nMeasurements);
0111 PlotHelpers::fillProf(cache.nOutliers_vs_eta, fit_eta, nOutliers);
0112 PlotHelpers::fillProf(cache.nHoles_vs_eta, fit_eta, nHoles);
0113 PlotHelpers::fillProf(cache.nSharedHits_vs_eta, fit_eta, nSharedHits);
0114
0115 PlotHelpers::fillProf(cache.nStates_vs_pt, fit_pT, nStates);
0116 PlotHelpers::fillProf(cache.nMeasurements_vs_pt, fit_pT, nMeasurements);
0117 PlotHelpers::fillProf(cache.nOutliers_vs_pt, fit_pT, nOutliers);
0118 PlotHelpers::fillProf(cache.nHoles_vs_pt, fit_pT, nHoles);
0119 PlotHelpers::fillProf(cache.nSharedHits_vs_pt, fit_pT, nSharedHits);
0120 }
0121
0122 }