ATLAS Offline Software
TrackVisualizationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONTRACKFINDINGTEST_TRACKVISUALIZATIONTOOL_H
5 #define MUONTRACKFINDINGTEST_TRACKVISUALIZATIONTOOL_H
6 
9 
10 #include "Acts/Utilities/RangeXD.hpp"
11 
12 #include "TCanvas.h"
13 #include "TFile.h"
14 #include "TLegend.h"
15 
16 namespace MuonR4{
17  class MsTrackSeeder;
18 }
19 
20 namespace MuonValR4{
21  class TrackVisualizationTool : public extends<AthAlgTool, ITrackVisualizationTool> {
22  public:
24  using base_class::base_class;
26  virtual ~TrackVisualizationTool() = default;
27 
28  virtual StatusCode initialize() override final;
29  virtual StatusCode finalize() override final;
30 
39  virtual void displaySeeds(const EventContext& ctx,
40  const MuonR4::MsTrackSeeder& seederObj,
41  const xAOD::MuonSegmentContainer& segments,
43  const std::string& extraLabel) const override final;
52  virtual void displaySeeds(const EventContext& ctx,
53  const MuonR4::MsTrackSeeder& seederObj,
54  const xAOD::MuonSegmentContainer& segments,
56  const std::string& extraLabel,
57  PrimitivesVec_t && extPrimitives) const override final;
58  private:
60  struct PlotLegend {
66  PlotLegend(const double xLow, const double yLow,
67  const double xHigh, const double yHigh):
68  legend{std::make_unique<TLegend>(xLow, yLow, xHigh, yHigh)}{}
72  void addColor(const int color, const std::string& label);
76  void addMarker(const int marker, const std::string& label);
77  std::unique_ptr<TLegend> legend{};
78  using LegendEntry_t = std::unordered_map<int, PrimitivePtr_t>;
81  };
82 
86  using BoundBox_t = Acts::RangeXD<2, double>;
88  static BoundBox_t emptyBounds();
90  using AxisLabels_t = std::tuple<std::string, std::string>;
95  std::unique_ptr<TCanvas> makeCanvas(const EventContext& ctx,
96  const BoundBox_t& bounds,
97  const AxisLabels_t& axisLabels) const;
99  void closeSummaryCanvas() const;
101  enum class DisplayView{RZ, XY};
110  void displaySeeds(const EventContext& ctx,
111  const MuonR4::MsTrackSeeder& seederObj,
112  const DisplayView view,
113  const xAOD::MuonSegmentContainer& segments,
114  const MuonR4::MsTrackSeedContainer& seeds,
115  const std::string& extraLabel,
116  PrimitivesVec_t& extPrimitives) const;
117 
118 
125  void fillTruthSeedPoints(const EventContext& ctx,
126  const MuonR4::MsTrackSeeder& seeder,
127  const DisplayView view,
128  PlotLegend& legend,
129  PrimitivesVec_t& drawPrim) const;
135  static Amg::Vector2D viewVector(const double phi,
136  const Amg::Vector2D& posOnCylinder,
137  const DisplayView view);
139  SG::ReadHandleKey<xAOD::MuonSegmentContainer> m_truthSegKey{this, "TruthSegkey", "TruthSegmentsR4"};
141  Gaudi::Property<unsigned> m_canvasLimit{this, "CanvasLimit", 5000};
143  Gaudi::Property<bool> m_saveSinglePDFs{this, "saveSinglePDFs", true};
146  Gaudi::Property<bool> m_saveSummaryPDF{this, "saveSummaryPDF", false};
148  Gaudi::Property<std::string> m_allCanName{this, "AllCanvasName", "AllMsTrackPlots"};
150  Gaudi::Property<std::string> m_canvasPrefix{this, "CanvasPreFix", "MsTrackValid"};
152  Gaudi::Property<unsigned> m_canvasWidth{this, "CanvasWidth", 800};
153  Gaudi::Property<unsigned> m_canvasHeight{this, "CanvasHeight", 600};
155  Gaudi::Property<std::string> m_AtlasLabel{this, "AtlasLabel", "Internal"};
157  Gaudi::Property<std::string> m_sqrtSLabel{this, "SqrtSLabel", "14"};
159  Gaudi::Property<std::string> m_lumiLabel{this, "LumiLabel", ""};
163  mutable std::unique_ptr<TCanvas> m_summaryCan ATLAS_THREAD_SAFE{};
164  mutable std::unique_ptr<TFile> m_outFile ATLAS_THREAD_SAFE{};
165  mutable std::atomic<unsigned int> m_canvCounter ATLAS_THREAD_SAFE{0};
166 
167  };
168 }
169 
170 #endif
MuonValR4::TrackVisualizationTool::PlotLegend
Helper struct to administer the markers & colors that are added to the legend.
Definition: TrackVisualizationTool.h:60
color
Definition: jFexInputByteStreamTool.cxx:25
MuonValR4::TrackVisualizationTool::~TrackVisualizationTool
virtual ~TrackVisualizationTool()=default
Destructor.
MuonValR4::TrackVisualizationTool::m_AtlasLabel
Gaudi::Property< std::string > m_AtlasLabel
ATLAS label (Internal / Prelimnary / Simulation)
Definition: TrackVisualizationTool.h:155
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
MuonValR4::TrackVisualizationTool::DisplayView::XY
@ XY
MuonValR4::TrackVisualizationTool::BoundBox_t
Acts::RangeXD< 2, double > BoundBox_t
Helper struct to determine the canvas ranges to be shown.
Definition: TrackVisualizationTool.h:86
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
MuonValR4::TrackVisualizationTool::m_truthSegKey
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_truthSegKey
Key to the truth segment selection to draw the segment parameters.
Definition: TrackVisualizationTool.h:139
MuonValR4::TrackVisualizationTool::makeCanvas
std::unique_ptr< TCanvas > makeCanvas(const EventContext &ctx, const BoundBox_t &bounds, const AxisLabels_t &axisLabels) const
Creates a new TCanvas for drawing.
Definition: TrackVisualizationTool.cxx:308
MuonValR4::TrackVisualizationTool::m_saveSummaryPDF
Gaudi::Property< bool > m_saveSummaryPDF
If set to true a summary Canvas is created.
Definition: TrackVisualizationTool.h:146
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
MuonValR4::TrackVisualizationTool::PlotLegend::LegendEntry_t
std::unordered_map< int, PrimitivePtr_t > LegendEntry_t
Definition: TrackVisualizationTool.h:78
MuonValR4::TrackVisualizationTool::AxisLabels_t
std::tuple< std::string, std::string > AxisLabels_t
tuple to declare the axis labels
Definition: TrackVisualizationTool.h:90
MuonValR4::TrackVisualizationTool::m_sqrtSLabel
Gaudi::Property< std::string > m_sqrtSLabel
Centre of mass energy label.
Definition: TrackVisualizationTool.h:157
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
SG::ReadHandleKey< xAOD::MuonSegmentContainer >
ITrackVisualizationTool.h
MuonValR4::TrackVisualizationTool::m_canvasPrefix
Gaudi::Property< std::string > m_canvasPrefix
Prefix of the individual canvas file names <MANDATORY>
Definition: TrackVisualizationTool.h:150
MuonValR4::TrackVisualizationTool::m_saveSinglePDFs
Gaudi::Property< bool > m_saveSinglePDFs
If set to true each canvas is saved into a dedicated pdf file.
Definition: TrackVisualizationTool.h:143
python.Include.marker
string marker
Definition: Include.py:21
MuonR4::MsTrackSeed::Location
Location
Enum defining whether the seed is made in the endcap / barrel.
Definition: MsTrackSeed.h:21
MuonValR4::TrackVisualizationTool::DisplayView::RZ
@ RZ
MuonValR4::TrackVisualizationTool::s_mutex
static std::mutex s_mutex
Abrivation of the helper struct to determine the Canvas dimensions.
Definition: TrackVisualizationTool.h:162
MuonValR4::TrackVisualizationTool::m_canvasHeight
Gaudi::Property< unsigned > m_canvasHeight
Definition: TrackVisualizationTool.h:153
MuonValR4::TrackVisualizationTool::m_lumiLabel
Gaudi::Property< std::string > m_lumiLabel
Luminosity label.
Definition: TrackVisualizationTool.h:159
MuonValR4::TrackVisualizationTool::DisplayView
DisplayView
Enumeration to toggle whether the seeds shall be painted in x-y or R-z view.
Definition: TrackVisualizationTool.h:101
perfmonmt-plotter.colors
dictionary colors
Definition: perfmonmt-plotter.py:21
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
add-xsec-uncert-quadrature-N.label
label
Definition: add-xsec-uncert-quadrature-N.py:104
MuonValR4::TrackVisualizationTool::PlotLegend::PlotLegend
PlotLegend(const double xLow, const double yLow, const double xHigh, const double yHigh)
Constructor defining the Legned placement.
Definition: TrackVisualizationTool.h:66
MuonValR4::TrackVisualizationTool::m_allCanName
Gaudi::Property< std::string > m_allCanName
Name of the summary canvas & the ROOT file to save the monitoring plots.
Definition: TrackVisualizationTool.h:148
MuonValR4::TrackVisualizationTool::finalize
virtual StatusCode finalize() override final
Definition: TrackVisualizationTool.cxx:113
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
MuonValR4::TrackVisualizationTool::viewVector
static Amg::Vector2D viewVector(const double phi, const Amg::Vector2D &posOnCylinder, const DisplayView view)
Transforms the projected vector into the actual view, if it's xy then an external phi is needed to pl...
Definition: TrackVisualizationTool.cxx:103
MuonValR4::TrackVisualizationTool::emptyBounds
static BoundBox_t emptyBounds()
Createes a new empty range box ready for shrinkin useage.
Definition: TrackVisualizationTool.cxx:87
xAOD::MuonSegmentContainer
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".
Definition: MuonSegmentContainer.h:14
MuonValR4
Lightweight algorithm to read xAOD MDT sim hits and (fast-digitised) drift circles from SG and fill a...
Definition: IPatternVisualizationTool.h:23
MuonValR4::TrackVisualizationTool::fillTruthSeedPoints
void fillTruthSeedPoints(const EventContext &ctx, const MuonR4::MsTrackSeeder &seeder, const DisplayView view, PlotLegend &legend, PrimitivesVec_t &drawPrim) const
Add the truth segments to the canvas.
Definition: TrackVisualizationTool.cxx:274
plotBeamSpotVxVal.legend
legend
Definition: plotBeamSpotVxVal.py:97
CoreClass.markers
list markers
Definition: CoreClass.py:17
MuonValR4::TrackVisualizationTool::m_canvasLimit
Gaudi::Property< unsigned > m_canvasLimit
Maximum canvases to draw.
Definition: TrackVisualizationTool.h:141
MuonR4::MsTrackSeeder
Helper class to group muon sgements that may belong to a muon trajectory.
Definition: MsTrackSeeder.h:25
MuonValR4::TrackVisualizationTool::ATLAS_THREAD_SAFE
std::unique_ptr< TCanvas > m_summaryCan ATLAS_THREAD_SAFE
Definition: TrackVisualizationTool.h:163
MuonValR4::TrackVisualizationTool::m_canvasWidth
Gaudi::Property< unsigned > m_canvasWidth
Canvas dimensions.
Definition: TrackVisualizationTool.h:152
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
MuonValR4::TrackVisualizationTool::displaySeeds
virtual void displaySeeds(const EventContext &ctx, const MuonR4::MsTrackSeeder &seederObj, const xAOD::MuonSegmentContainer &segments, const MuonR4::MsTrackSeedContainer &seeds, const std::string &extraLabel) const override final
Displays all segments on the representative cylinder in the R-Z & X-Y plane and draws the markers of ...
Definition: TrackVisualizationTool.cxx:140
MuonR4::MsTrackSeedContainer
std::vector< MsTrackSeed > MsTrackSeedContainer
Definition: MsTrackSeed.h:61
MuonValR4::TrackVisualizationTool::initialize
virtual StatusCode initialize() override final
Definition: TrackVisualizationTool.cxx:117
private
#define private
Definition: xAODTruthCnvAlg.h:20
MuonValR4::TrackVisualizationTool::closeSummaryCanvas
void closeSummaryCanvas() const
Closes the summary canvas & closes the associated ROOT file.
Definition: TrackVisualizationTool.cxx:93
MuonValR4::TrackVisualizationTool
Definition: TrackVisualizationTool.h:21
drawFromPickle.view
view
Definition: drawFromPickle.py:294