File indexing completed on 2025-12-16 09:23:46
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/EventData/TrackParameters.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 #include "Acts/Utilities/Logger.hpp"
0014 #include "ActsExamples/EventData/SimParticle.hpp"
0015 #include "ActsExamples/Utilities/Helpers.hpp"
0016
0017 #include <map>
0018 #include <memory>
0019 #include <string>
0020 #include <vector>
0021
0022 class TH1F;
0023 class TH2F;
0024
0025 namespace ActsExamples {
0026
0027
0028
0029
0030
0031 class ResPlotTool {
0032 public:
0033
0034 struct Config {
0035
0036 std::vector<std::string> paramNames = {"d0", "z0", "phi",
0037 "theta", "qop", "t"};
0038
0039
0040 std::map<std::string, PlotHelpers::Binning> varBinning = {
0041 {"Eta", PlotHelpers::Binning::Uniform("#eta", 40, -4, 4)},
0042 {"Pt", PlotHelpers::Binning::Uniform("pT [GeV/c]", 40, 0, 100)},
0043 {"Pull", PlotHelpers::Binning::Uniform("pull", 100, -5, 5)},
0044 {"Residual_d0",
0045 PlotHelpers::Binning::Uniform("r_{d0} [mm]", 100, -0.5, 0.5)},
0046 {"Residual_z0",
0047 PlotHelpers::Binning::Uniform("r_{z0} [mm]", 100, -0.5, 0.5)},
0048 {"Residual_phi",
0049 PlotHelpers::Binning::Uniform("r_{#phi} [rad]", 100, -0.01, 0.01)},
0050 {"Residual_theta",
0051 PlotHelpers::Binning::Uniform("r_{#theta} [rad]", 100, -0.01, 0.01)},
0052 {"Residual_qop",
0053 PlotHelpers::Binning::Uniform("r_{q/p} [c/GeV]", 100, -0.1, 0.1)},
0054 {"Residual_t",
0055 PlotHelpers::Binning::Uniform("r_{t} [s]", 100, -1000, 1000)}};
0056 };
0057
0058
0059 struct Cache {
0060
0061 std::map<std::string, TH1F*> res;
0062
0063 std::map<std::string, TH2F*> res_vs_eta;
0064
0065 std::map<std::string, TH1F*> resMean_vs_eta;
0066
0067 std::map<std::string, TH1F*> resWidth_vs_eta;
0068
0069 std::map<std::string, TH2F*> res_vs_pT;
0070
0071 std::map<std::string, TH1F*> resMean_vs_pT;
0072
0073 std::map<std::string, TH1F*> resWidth_vs_pT;
0074
0075
0076 std::map<std::string, TH1F*> pull;
0077
0078 std::map<std::string, TH2F*> pull_vs_eta;
0079
0080 std::map<std::string, TH1F*> pullMean_vs_eta;
0081
0082 std::map<std::string, TH1F*> pullWidth_vs_eta;
0083
0084 std::map<std::string, TH2F*> pull_vs_pT;
0085
0086 std::map<std::string, TH1F*> pullMean_vs_pT;
0087
0088 std::map<std::string, TH1F*> pullWidth_vs_pT;
0089 };
0090
0091
0092
0093
0094
0095 ResPlotTool(const Config& cfg, Acts::Logging::Level lvl);
0096
0097
0098
0099
0100 void book(Cache& cache) const;
0101
0102
0103
0104
0105
0106
0107
0108 void fill(Cache& cache, const Acts::GeometryContext& gctx,
0109 const SimParticleState& truthParticle,
0110 const Acts::BoundTrackParameters& fittedParamters) const;
0111
0112
0113
0114
0115
0116 void refinement(Cache& cache) const;
0117
0118
0119
0120
0121 void write(const Cache& cache) const;
0122
0123
0124
0125
0126 void clear(Cache& cache) const;
0127
0128 private:
0129
0130 Config m_cfg;
0131
0132 std::unique_ptr<const Acts::Logger> m_logger;
0133
0134
0135 const Acts::Logger& logger() const { return *m_logger; }
0136 };
0137
0138 }