ATLAS Offline Software
Loading...
Searching...
No Matches
MuonValR4::TrackVisualizationTool Class Reference

#include <TrackVisualizationTool.h>

Inheritance diagram for MuonValR4::TrackVisualizationTool:
Collaboration diagram for MuonValR4::TrackVisualizationTool:

Classes

struct  PlotLegend
 Helper struct to administer the markers & colors that are added to the legend. More...

Public Member Functions

virtual ~TrackVisualizationTool ()=default
 Destructor.
virtual StatusCode initialize () override final
virtual void displaySeeds (const EventContext &ctx, const MuonR4::MsTrackSeeder &seederObj, const xAOD::MuonSegmentContainer &segments, const MuonR4::MsTrackSeedContainer &seeds) const override final
 Displays all segments on the representative cylinder in the R-Z & X-Y plane and draws the markers of the successfully built seeds & truth segments.
virtual void displaySeeds (const EventContext &ctx, const MuonR4::MsTrackSeeder &seederObj, const xAOD::MuonSegmentContainer &segments, const MuonR4::MsTrackSeedContainer &seeds, PrimitivesVec_t &&extPrimitives) const override final
 Displays all segments on the representative cylinder in the R-Z & X-Y plane and draws the markers of the successfully built seeds & truth segments.
virtual void displayTrackSeedObj (const EventContext &ctx, const MuonR4::MsTrackSeed &seed, const OptBoundPars_t &parsToExt, const std::string &objName="") const override final
 Visualizes the measurements of the segments on the track seed together with their predicted local line parameters as an obj file.

Private Types

enum class  DisplayView { RZ , XY }
 Enumeration to toggle whether the seeds shall be painted in x-y or R-z view. More...
using Canvas_t = IRootVisualizationService::ICanvasObject
using Edges = Canvas_t::AxisRanges
using Location = MuonR4::MsTrackSeed::Location
 Enumeration to toggle whether the segment shall displayed on the barrel/endcap.

Private Member Functions

void displaySeeds (const EventContext &ctx, const MuonR4::MsTrackSeeder &seederObj, const DisplayView view, const xAOD::MuonSegmentContainer &segments, const MuonR4::MsTrackSeedContainer &seeds, PrimitivesVec_t &&extPrimitives) const
 Actual implementation of the display seeds method with the augmentation to define the view.
void fillTruthSeedPoints (const EventContext &ctx, const MuonR4::MsTrackSeeder &seeder, const DisplayView view, PlotLegend &legend, Canvas_t &canvas) const
 Add the truth segments to the canvas.

Static Private Member Functions

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 place the marker.

Private Attributes

ToolHandle< ActsTrk::IExtrapolationToolm_extrapolationTool {this, "ExtrapolationTool" ,"" }
 Track extrapolation tool.
ServiceHandle< IRootVisualizationServicem_visualSvc {this, "VisualSvc", "MuonValR4::RootVisualizationService"}
 Service handle of the visualization service.
IRootVisualizationService::ClientToken m_clientToken {}
 Token to present to the visualization service such that the display froms this tool are grouped together.
SG::ReadHandleKey< xAOD::MuonSegmentContainerm_truthSegKey {this, "TruthSegkey", "MuonTruthSegments"}
 Key to the truth segment selection to draw the segment parameters.
SG::ReadHandleKey< ActsTrk::GeometryContextm_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
 Dependency on the geometry alignment.
Gaudi::Property< unsigned > m_canvasLimit {this, "CanvasLimit", 5000}
 Maximum canvases to draw.
Gaudi::Property< bool > m_saveSinglePDFs {this, "saveSinglePDFs", true}
 If set to true each canvas is saved into a dedicated pdf file.
Gaudi::Property< bool > m_saveSummaryPDF {this, "saveSummaryPDF", true}
 If set to true a summary Canvas is created.
Gaudi::Property< std::string > m_subDir {this, "outSubDir", ""}
 Define the subdirectory in which the plots shall be saved.
Gaudi::Property< std::string > m_canvasPrefix {this, "CanvasPreFix", "MsTrackValid"}
 Prefix of the individual canvas file names <MANDATORY>
std::atomic< bool > m_plotsDone {false}
 Flag toggling whether all Canvases have been exhausted.
std::atomic< unsigned > m_objCounter {0}
 How many obj have been produced.

Detailed Description

Definition at line 19 of file TrackVisualizationTool.h.

Member Typedef Documentation

◆ Canvas_t

◆ Edges

◆ Location

Enumeration to toggle whether the segment shall displayed on the barrel/endcap.

Definition at line 93 of file TrackVisualizationTool.h.

Member Enumeration Documentation

◆ DisplayView

Enumeration to toggle whether the seeds shall be painted in x-y or R-z view.

Enumerator
RZ 
XY 

Definition at line 95 of file TrackVisualizationTool.h.

95{RZ, XY};

Constructor & Destructor Documentation

◆ ~TrackVisualizationTool()

virtual MuonValR4::TrackVisualizationTool::~TrackVisualizationTool ( )
virtualdefault

Destructor.

Member Function Documentation

◆ displaySeeds() [1/3]

void MuonValR4::TrackVisualizationTool::displaySeeds ( const EventContext & ctx,
const MuonR4::MsTrackSeeder & seederObj,
const DisplayView view,
const xAOD::MuonSegmentContainer & segments,
const MuonR4::MsTrackSeedContainer & seeds,
PrimitivesVec_t && extPrimitives ) const
private

Actual implementation of the display seeds method with the augmentation to define the view.

Parameters
ctxEventContext to access store gate & conditions
seederObjConfigured instance of the track seeder which actually constructed the seeds.
viewActual view to display
segmentsContainer of all MS segments in the event
seedsThe constructed track seeds from the event
extPrimitivesExtra TObjects that should be additionally painted onto the Canvases

First add the truth points

Draw the sector map

Definition at line 140 of file TrackVisualizationTool.cxx.

145 {
146
147 auto canvas = m_visualSvc->prepareCanvas(ctx, m_clientToken, std::format("SeedDisplay{:}",
148 view == DisplayView::XY ? "XY" : "RZ" ));
149
150 if (!canvas) {
151 m_plotsDone = true;
152 return;
153 }
154 canvas->setAxisTitles(view == DisplayView::XY ? "x [m]" : "z [m]",
155 view == DisplayView::XY ? "y [m]" : "R [m]");
156
157 PlotLegend legend{0.005,0.005, 0.6,0.1};
159 fillTruthSeedPoints(ctx, seeder, view, legend, *canvas);
160
161 auto onSeed = [&seeds](const xAOD::MuonSegment* segment,
162 const Location loc) {
163 return std::ranges::any_of(seeds,[segment, loc](const MsTrackSeed& seed){
164 return seed.location() == loc && std::ranges::find(seed.segments(), segment) != seed.segments().end();
165 });
166 };
167
168 const ActsTrk::GeometryContext* gctx{nullptr};
169 if (!SG::get(gctx, m_geoCtxKey, ctx).isSuccess()) {
170 THROW_EXCEPTION("Failed to fetch the geometry context "<<m_geoCtxKey.fullKey());
171 }
172 bool drawnPoint{false};
173
174 for (const xAOD::MuonSegment* segment: segments) {
175 using enum Location;
177 using namespace Muon;
178 const MuonGMR4::SpectrometerSector* msSector = detailedSegment(*segment)->msSector();
179 const auto chIdx = segment->chamberIndex();
180 const int mColor = msSector->barrel() ? ColorBarrel : (msSector->side() > 0 ? ColorEndcapA : ColorEndcapC);
181
182 for (const auto secProj : {leftOverlap, center, rightOverlap}) {
183 if (!sectorMap.insideSector(segment->sector() + Acts::toUnderlying(secProj),
184 segment->position().phi())){
185 continue;
186 }
187
188 for (const Location loc : {Barrel, Endcap}) {
189 const Amg::Vector2D projPos{seeder.expressOnCylinder(*gctx, *segment, loc, secProj)};
190 if (!seeder.withinBounds(projPos, loc)) {
191 continue;
192 }
193 drawnPoint = true;
194 const bool isGood = onSeed(segment, loc);
195 const int mStyle = stationMarkerSyle(chIdx, false, isGood);
196 const double phi = seeder.projectedPhi(segment->sector(), secProj);
197 const Amg::Vector2D markerPos{viewVector(phi, projPos, view)};
198 extPrimitives.emplace_back(drawMarker(markerPos, mStyle, mColor));
199
200 if (view == DisplayView::XY) {
201 const double r = markerPos.mag() + extraMargin;
202 canvas->expandPad(r, r);
203 canvas->expandPad(-r, -r);
204 } else {
205 canvas->expandPad(markerPos[0] - extraMargin, markerPos[1] - extraMargin);
206 canvas->expandPad(markerPos[0] + extraMargin, markerPos[1] + extraMargin);
207 }
208 legend.addMarker(mStyle, std::format("{:}{:}", MuonStationIndex::layerName(MuonStationIndex::toLayerIndex(chIdx)),
209 isGood ? "" : " (discarded)"));
210 legend.addColor(mColor, msSector->barrel() ? "Barrel" : msSector->side() > 0 ? "Endcap A" : "Endcap C");
211 }
212 }
213 }
214 if (!drawnPoint) {
215 canvas->trash();
216 return;
217 }
218 for (const MsTrackSeed& seed : seeds) {
219 const Amg::Vector3D& pos{seed.position()};
220 canvas->add(drawMarker(viewVector(pos.phi(), Amg::Vector2D{pos.perp(), pos.z()}, view),
221 kFullDiamond, kBlack));
222 legend.addMarker(kFullDiamond, "track seed");
223 }
225 for (unsigned int s = 1; s<=16 ; ++s) {
226 if (view != DisplayView::XY) {
227 break;
228 }
229 const double phi = sectorMap.sectorPhi(s);
230 const double dPhi = sectorMap.sectorWidth(s);
231
232 const int lStyle = s%2 ? kDashed : kDotted;
233 const double r = canvas->corner(Edges::xHigh);
234 const CxxUtils::sincos phiM{phi-dPhi}, phiP{phi+dPhi};
235 const Amg::Vector2D e1{r * phiM.cs, r * phiM.sn};
236 const Amg::Vector2D e2{r * phiP.cs, r * phiP.sn};
237
238 auto theLine = std::make_unique<TLine>(0.,0., e1.x(), e1.y());
239 theLine->SetLineStyle(lStyle);
240 extPrimitives.insert(extPrimitives.begin(), std::move(theLine));
241 theLine = std::make_unique<TLine>(0.,0., e2.x(), e2.y());
242 theLine->SetLineStyle(lStyle);
243 extPrimitives.insert(extPrimitives.begin(), std::move(theLine));
244 theLine = std::make_unique<TLine>(e1.x(), e1.y(), e2.x(), e2.y());
245 theLine->SetLineStyle(lStyle);
246 extPrimitives.insert(extPrimitives.begin(), std::move(theLine));
247 }
248 legend.fillPrimitives(*canvas);
249 }
Scalar phi() const
phi method
int8_t side() const
Returns the side of the MS-sector 1 -> A side ; -1 -> C side.
bool barrel() const
Returns whether the sector is placed in the barrel.
SectorProjector
Enumeration to select the sector projection.
const MuonGMR4::SpectrometerSector * msSector() const
Returns the associated MS sector.
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geoCtxKey
Dependency on the geometry alignment.
ServiceHandle< IRootVisualizationService > m_visualSvc
Service handle of the visualization service.
std::atomic< bool > m_plotsDone
Flag toggling whether all Canvases have been exhausted.
IRootVisualizationService::ClientToken m_clientToken
Token to present to the visualization service such that the display froms this tool are grouped toget...
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...
MuonR4::MsTrackSeed::Location Location
Enumeration to toggle whether the segment shall displayed on the barrel/endcap.
void fillTruthSeedPoints(const EventContext &ctx, const MuonR4::MsTrackSeeder &seeder, const DisplayView view, PlotLegend &legend, Canvas_t &canvas) const
Add the truth segments to the canvas.
::Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index.
Amg::Vector3D position() const
Returns the position as Amg::Vector.
int r
Definition globals.cxx:22
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
@ Endcap
Definition DetType.h:14
const Segment * detailedSegment(const xAOD::MuonSegment &seg)
Helper function to navigate from the xAOD::MuonSegment to the MuonR4::Segment.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
Muon_v1 Muon
Reference the current persistent version:
MuonSegment_v1 MuonSegment
Reference the current persistent version:
Helper struct to administer the markers & colors that are added to the legend.
#define THROW_EXCEPTION(MESSAGE)
Definition throwExcept.h:10

◆ displaySeeds() [2/3]

void MuonValR4::TrackVisualizationTool::displaySeeds ( const EventContext & ctx,
const MuonR4::MsTrackSeeder & seederObj,
const xAOD::MuonSegmentContainer & segments,
const MuonR4::MsTrackSeedContainer & seeds ) const
finaloverridevirtual

Displays all segments on the representative cylinder in the R-Z & X-Y plane and draws the markers of the successfully built seeds & truth segments.

Parameters
ctxEventContext to access store gate & conditions
seederObjConfigured instance of the track seeder which actually constructed the seeds.
segmentsContainer of all MS segments in the event
seedsThe constructed track seeds from the event

Definition at line 122 of file TrackVisualizationTool.cxx.

125 {
126 displaySeeds(ctx, seederObj, segments, seeds, PrimitivesVec_t{});
127 }
virtual void displaySeeds(const EventContext &ctx, const MuonR4::MsTrackSeeder &seederObj, const xAOD::MuonSegmentContainer &segments, const MuonR4::MsTrackSeedContainer &seeds) const override final
Displays all segments on the representative cylinder in the R-Z & X-Y plane and draws the markers of ...

◆ displaySeeds() [3/3]

void MuonValR4::TrackVisualizationTool::displaySeeds ( const EventContext & ctx,
const MuonR4::MsTrackSeeder & seederObj,
const xAOD::MuonSegmentContainer & segments,
const MuonR4::MsTrackSeedContainer & seeds,
PrimitivesVec_t && extPrimitives ) const
finaloverridevirtual

Displays all segments on the representative cylinder in the R-Z & X-Y plane and draws the markers of the successfully built seeds & truth segments.

Parameters
ctxEventContext to access store gate & conditions
seederObjConfigured instance of the track seeder which actually constructed the seeds.
segmentsContainer of all MS segments in the event
extPrimitivesExtra TObjects that should be additionally painted onto the Canvases

Definition at line 128 of file TrackVisualizationTool.cxx.

132 {
133 if (m_plotsDone || segments.empty()) {
134 return;
135 }
136 displaySeeds(ctx, seederObj, DisplayView::RZ, segments, seeds, clone(extPrimitives));
137 displaySeeds(ctx, seederObj, DisplayView::XY, segments, seeds, std::move(extPrimitives));
138
139 }
bool empty() const noexcept
Returns true if the collection is empty.
std::vector< std::unique_ptr< TObject > > clone(const std::vector< std::unique_ptr< TObject > > &cloneMe)

◆ displayTrackSeedObj()

void MuonValR4::TrackVisualizationTool::displayTrackSeedObj ( const EventContext & ctx,
const MuonR4::MsTrackSeed & seed,
const OptBoundPars_t & parsToExt,
const std::string & objName = "" ) const
finaloverridevirtual

Visualizes the measurements of the segments on the track seed together with their predicted local line parameters as an obj file.

If parameters to extrapolate are parsed, then they're extrapolated to the end of the world and the trajectory is added to the obj

Parameters
ctxEventContext to fetch the conditions data & the event information
seedMsTrack to visualize
parsToExtParameters to extrapolate on top
objNameExtra token to be added to the file name

Definition at line 295 of file TrackVisualizationTool.cxx.

298 {
300 return;
301 }
302 const ActsTrk::GeometryContext* gctx{nullptr};
303 SG::get(gctx, m_geoCtxKey, ctx).ignore();
304
305 Acts::ObjVisualization3D visualHelper{};
306 const std::string subDir = std::format("./ObjDisplays/{:}/", m_subDir.value());
307 ensureDirectory(subDir);
308 if (parsToExt.ok() && m_extrapolationTool.isEnabled()) {
309 MuonValR4::drawPropagation(m_extrapolationTool->propagationSteps(ctx, *parsToExt).first,
310 visualHelper);
311 }
312 std::string segStr{removeNonAlphaNum(objName)};
313 for (const xAOD::MuonSegment* seg : seed.segments()) {
314 MuonValR4::drawSegmentMeasurements(*gctx,* seg, visualHelper);
315 MuonValR4::drawSegmentLine(*gctx,*seg, visualHelper);
316 segStr += std::format("_{:}", MuonR4::printID(*seg));
317 }
318
319 unsigned fileVersion{0};
320 std::string finalStr{};
321 while (finalStr.empty() || std::filesystem::exists(finalStr)) {
322 finalStr = std::format("{:}/{:}_{:}_{:}_{:}.obj", subDir,
323 m_clientToken.preFixName, ctx.eventID().event_number(), ++fileVersion, segStr);
324 }
325 visualHelper.write(finalStr);
326 ++m_objCounter;
327 }
Gaudi::Property< unsigned > m_canvasLimit
Maximum canvases to draw.
ToolHandle< ActsTrk::IExtrapolationTool > m_extrapolationTool
Track extrapolation tool.
std::atomic< unsigned > m_objCounter
How many obj have been produced.
Gaudi::Property< std::string > m_subDir
Define the subdirectory in which the plots shall be saved.
std::string printID(const xAOD::MuonSegment &seg)
Print the chamber ID of a segment, e.g.
void ensureDirectory(const std::string &path)
Ensures that the subdirectory in the path is created.
void drawPropagation(const std::vector< Acts::detail::Step > &steps, Acts::ObjVisualization3D &visualHelper, const Acts::ViewConfig &viewConfig=Acts::s_viewLine)
Draws the recorded propagation steps as a polygon line.
std::string removeNonAlphaNum(std::string str)
Removes all non-alpha numerical characters from a string.
void drawSegmentMeasurements(const ActsTrk::GeometryContext &gctx, const xAOD::MuonSegment &segment, Acts::ObjVisualization3D &visualHelper, const Acts::ViewConfig &viewConfig=Acts::s_viewSensitive)
Draw all uncalibrated measurements associated to the segment.
void drawSegmentLine(const ActsTrk::GeometryContext &gctx, const xAOD::MuonSegment &segment, Acts::ObjVisualization3D &visualHelper, const Acts::ViewConfig &viewConfig=Acts::s_viewLine, const double standardLength=1.*Gaudi::Units::m)
Draw a segment line inside the obj file.

◆ fillTruthSeedPoints()

void MuonValR4::TrackVisualizationTool::fillTruthSeedPoints ( const EventContext & ctx,
const MuonR4::MsTrackSeeder & seeder,
const DisplayView view,
PlotLegend & legend,
Canvas_t & canvas ) const
private

Add the truth segments to the canvas.

Parameters
ctxEventContext to access store gate
seederObjConfigured instance of the track seeder which actually constructed the seeds.
viewActual view to display
legendReference to the legend object to add the marker / truth legends
canvasReference to the canvas to which the drawn markers are appended to

Definition at line 250 of file TrackVisualizationTool.cxx.

254 {
255 const xAOD::MuonSegmentContainer* truthSegs{nullptr};
256 if (!SG::get(truthSegs,m_truthSegKey, ctx).isSuccess()) {
257 THROW_EXCEPTION("Failed to fetch the truth segment container");
258 }
259 if (!truthSegs) {
260 return;
261 }
262 const ActsTrk::GeometryContext* gctx{nullptr};
263 if (!SG::get(gctx, m_geoCtxKey, ctx).isSuccess()) {
264 THROW_EXCEPTION("Failed to fetch the geometry context "<<m_geoCtxKey.fullKey());
265 }
266
267 bool addedEntry{false};
268 for (const xAOD::MuonSegment* segment: *truthSegs) {
269 const auto chIdx = segment->chamberIndex();
270 const int mStyle = stationMarkerSyle(chIdx, false, true);
271
272 using enum Location;
274 for (const auto secProj : {leftOverlap, center, rightOverlap}) {
275 if (!sectorMap.insideSector(segment->sector() + Acts::toUnderlying(secProj),
276 segment->position().phi())){
277 continue;
278 }
279 for (const Location loc : {Barrel, Endcap}) {
280 const Amg::Vector2D projected{seeder.expressOnCylinder(*gctx, *segment, loc, secProj)};
281 if (!seeder.withinBounds(projected, loc)) {
282 continue;
283 }
284 const double phi = MsTrackSeeder::projectedPhi(segment->sector(), secProj);
285 canvas.add(drawMarker(viewVector(phi, projected, view), mStyle, truthColor, 3));
287 addedEntry = true;
288 }
289 }
290 }
291 if (addedEntry) {
292 legend.addColor(truthColor, "truth");
293 }
294 }
bool withinBounds(const Amg::Vector2D &projPos, const Location loc) const
Returns whether the expression on the cylinder is within the surface bounds.
Amg::Vector2D expressOnCylinder(const ActsTrk::GeometryContext &gctx, const xAOD::MuonSegment &segment, const Location loc, const SectorProjector proj) const
Expresses the segment on the cylinder surface.
static double projectedPhi(const int sector, const SectorProjector proj)
Returns the projected phi for a given sector and projector.
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_truthSegKey
Key to the truth segment selection to draw the segment parameters.
const std::string & layerName(LayerIndex index)
convert LayerIndex into a string
LayerIndex toLayerIndex(ChIndex index)
convert ChIndex into LayerIndex
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".

◆ initialize()

StatusCode MuonValR4::TrackVisualizationTool::initialize ( )
finaloverridevirtual

Definition at line 105 of file TrackVisualizationTool.cxx.

105 {
106 if (m_canvasLimit > 0) {
107 m_clientToken.canvasLimit = m_canvasLimit;
108 m_clientToken.preFixName = m_canvasPrefix;
109 m_clientToken.saveSinglePlots = m_saveSinglePDFs;
110 m_clientToken.saveSummaryPlot = m_saveSummaryPDF;
111 m_clientToken.subDirectory = m_subDir;
112 ATH_CHECK(m_visualSvc.retrieve());
113 ATH_CHECK(m_visualSvc->registerClient(m_clientToken));
114 } else {
115 m_plotsDone = true;
116 }
118 ATH_CHECK(m_geoCtxKey.initialize());
119 ATH_CHECK(m_extrapolationTool.retrieve(EnableTool{!m_extrapolationTool.empty()}));
120 return StatusCode::SUCCESS;
121 }
#define ATH_CHECK
Evaluate an expression and check for errors.
Gaudi::Property< std::string > m_canvasPrefix
Prefix of the individual canvas file names <MANDATORY>
Gaudi::Property< bool > m_saveSinglePDFs
If set to true each canvas is saved into a dedicated pdf file.
Gaudi::Property< bool > m_saveSummaryPDF
If set to true a summary Canvas is created.

◆ viewVector()

Amg::Vector2D MuonValR4::TrackVisualizationTool::viewVector ( const double phi,
const Amg::Vector2D & posOnCylinder,
const DisplayView view )
staticprivate

Transforms the projected vector into the actual view, if it's xy then an external phi is needed to place the marker.

Parameters
phiAngle for the xy view - taken from the segment direction
posOnCylinderProjection of the segment's position onto the seed cylinder
viewActual view to display

Definition at line 95 of file TrackVisualizationTool.cxx.

97 {
98 using enum DisplayView;
99 if (view == RZ) {
100 return Amg::Vector2D{ posOnCylinder[1]*inM, posOnCylinder[0]*inM};
101 }
102 const CxxUtils::sincos phi{phiV};
103 return posOnCylinder[0] * inM * Amg::Vector2D{phi.cs, phi.sn};
104 }
DisplayView
Enumeration to toggle whether the seeds shall be painted in x-y or R-z view.

Member Data Documentation

◆ m_canvasLimit

Gaudi::Property<unsigned> MuonValR4::TrackVisualizationTool::m_canvasLimit {this, "CanvasLimit", 5000}
private

Maximum canvases to draw.

Definition at line 140 of file TrackVisualizationTool.h.

140{this, "CanvasLimit", 5000};

◆ m_canvasPrefix

Gaudi::Property<std::string> MuonValR4::TrackVisualizationTool::m_canvasPrefix {this, "CanvasPreFix", "MsTrackValid"}
private

Prefix of the individual canvas file names <MANDATORY>

Definition at line 148 of file TrackVisualizationTool.h.

148{this, "CanvasPreFix", "MsTrackValid"};

◆ m_clientToken

IRootVisualizationService::ClientToken MuonValR4::TrackVisualizationTool::m_clientToken {}
private

Token to present to the visualization service such that the display froms this tool are grouped together.

Definition at line 134 of file TrackVisualizationTool.h.

134{};

◆ m_extrapolationTool

ToolHandle<ActsTrk::IExtrapolationTool> MuonValR4::TrackVisualizationTool::m_extrapolationTool {this, "ExtrapolationTool" ,"" }
private

Track extrapolation tool.

Definition at line 129 of file TrackVisualizationTool.h.

129{this, "ExtrapolationTool" ,"" };

◆ m_geoCtxKey

SG::ReadHandleKey<ActsTrk::GeometryContext> MuonValR4::TrackVisualizationTool::m_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
private

Dependency on the geometry alignment.

Definition at line 138 of file TrackVisualizationTool.h.

138{this, "AlignmentKey", "ActsAlignment", "cond handle key"};

◆ m_objCounter

std::atomic<unsigned> MuonValR4::TrackVisualizationTool::m_objCounter {0}
mutableprivate

How many obj have been produced.

Definition at line 152 of file TrackVisualizationTool.h.

152{0};

◆ m_plotsDone

std::atomic<bool> MuonValR4::TrackVisualizationTool::m_plotsDone {false}
mutableprivate

Flag toggling whether all Canvases have been exhausted.

Definition at line 150 of file TrackVisualizationTool.h.

150{false};

◆ m_saveSinglePDFs

Gaudi::Property<bool> MuonValR4::TrackVisualizationTool::m_saveSinglePDFs {this, "saveSinglePDFs", true}
private

If set to true each canvas is saved into a dedicated pdf file.

Definition at line 142 of file TrackVisualizationTool.h.

142{this, "saveSinglePDFs", true};

◆ m_saveSummaryPDF

Gaudi::Property<bool> MuonValR4::TrackVisualizationTool::m_saveSummaryPDF {this, "saveSummaryPDF", true}
private

If set to true a summary Canvas is created.

Definition at line 144 of file TrackVisualizationTool.h.

144{this, "saveSummaryPDF", true};

◆ m_subDir

Gaudi::Property<std::string> MuonValR4::TrackVisualizationTool::m_subDir {this, "outSubDir", ""}
private

Define the subdirectory in which the plots shall be saved.

Definition at line 146 of file TrackVisualizationTool.h.

146{this, "outSubDir", ""};

◆ m_truthSegKey

SG::ReadHandleKey<xAOD::MuonSegmentContainer> MuonValR4::TrackVisualizationTool::m_truthSegKey {this, "TruthSegkey", "MuonTruthSegments"}
private

Key to the truth segment selection to draw the segment parameters.

Definition at line 136 of file TrackVisualizationTool.h.

136{this, "TruthSegkey", "MuonTruthSegments"};

◆ m_visualSvc

ServiceHandle<IRootVisualizationService> MuonValR4::TrackVisualizationTool::m_visualSvc {this, "VisualSvc", "MuonValR4::RootVisualizationService"}
private

Service handle of the visualization service.

Definition at line 131 of file TrackVisualizationTool.h.

131{this, "VisualSvc", "MuonValR4::RootVisualizationService"};

The documentation for this class was generated from the following files: