ATLAS Offline Software
Loading...
Searching...
No Matches
Navigator.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// Navigator.h, (c) ATLAS Detector software
8
9#ifndef TRKEXTOOLS_NAVIGATOR_H
10#define TRKEXTOOLS_NAVIGATOR_H
11
12// Gaudi
14#include "GaudiKernel/ServiceHandle.h"
15// Trk
25
26#include <cstring>
27#include <Gaudi/Accumulators.h>
28
29namespace Trk {
30
31 class IGeometryBuilder;
32 class IPropagator;
33 class Surface;
34 class Track;
35 class TrackingVolume;
36 typedef std::pair<const NavigationCell*,const NavigationCell*> NavigationPair;
37
47
48 class Navigator final : public AthAlgTool, virtual public INavigator {
49 public:
51 Navigator(const std::string&, const std::string&, const IInterface*);
53 virtual ~Navigator() = default;
54
56 virtual StatusCode initialize() override;
57
61 const EventContext& ctx) const override final;
62
65 virtual const TrackingVolume* volume(
66 const EventContext& ctx, const Amg::Vector3D& gp) const override final;
67
69 virtual const TrackingVolume* highestVolume(
70 const EventContext& ctx) const override final;
71
75 const Track& trk, const Surface& sf) const override final;
76
78 virtual bool atVolumeBoundary(const Trk::TrackParameters* parms,
79 const Trk::TrackingVolume* vol,
81 const Trk::TrackingVolume*& nextVol,
82 double tol) const override final;
83
87 const EventContext& ctx, const IPropagator& prop,
88 const TrackParameters& parms, PropDirection dir) const override final;
89
93 const EventContext& ctx, const IPropagator& prop,
94 const TrackParameters& parms, PropDirection dir,
95 const TrackingVolume& vol) const override final;
96
100 const EventContext& ctx, const IPropagator& prop,
101 const TrackParameters& parms, PropDirection dir,
102 const TrackingVolume& vol) const override final;
103
104 private:
106 this, "TrackingGeometryKey", "AtlasTrackingGeometry",
107 "Key of output of TrackingGeometry for ID"};
108
112
113 std::string m_trackingGeometryName = "AtlasTrackingGeometry";
114
115 /******************************************************************/
117 this, "InsideVolumeTolerance", 1. * Gaudi::Units::mm,
118 "Tolerance for inside() method of Volumes"};
120 this, "IsOnSurfaceTolerance", 0.005 * Gaudi::Units::mm,
121 "Tolerance for isOnSurface() method of BoundarySurfaces"};
125 this, "UseStraightLineApproximation", false,
126 "use the straight line approximation for the next boundary sf"};
127
128 BooleanProperty m_searchWithDistance{
129 this, "SearchWithDistanceToSurface", true,
130 "search with new distanceToSurface() method"};
131 BooleanProperty m_fastField{this, "MagneticFieldProperties", false};
132 };
133
134} // end of namespace
135
136
137#endif // TRKEXTOOLS_NAVIGATOR_H
138
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Description of a BoundarySurface inside the tracking realm, it extends the Surface description to mak...
Interface class IGeometryBuilders, the GeometryBuilder inherits from this one.
Interface class for the navigation AlgTool, it inherits from IAlgTool Detailed information about priv...
Definition INavigator.h:68
Interface class IPropagators It inherits from IAlgTool.
Definition IPropagator.h:55
magnetic field properties to steer the behavior of the extrapolation
Navigator(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition Navigator.cxx:40
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
Definition Navigator.h:113
Trk::MagneticFieldProperties m_fieldProperties
Definition Navigator.h:123
virtual const TrackParameters * closestParameters(const Track &trk, const Surface &sf) const override final
INavigator interface method - getting the closest TrackParameters from a Track to a Surface.
virtual ~Navigator()=default
Destructor.
virtual NavigationCell nextTrackingVolume(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir, const TrackingVolume &vol) const override final
INavigator interface method - getting the next Volume and the parameter for the next Navigation.
ServiceHandle< Trk::ITrackingGeometrySvc > m_trackingGeometrySvc
ToolHandle to the TrackingGeometrySvc.
Definition Navigator.h:110
BooleanProperty m_useStraightLineApproximation
Definition Navigator.h:124
virtual const BoundarySurface< TrackingVolume > * nextBoundarySurface(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir) const override final
INavigator interface methods - getting the next BoundarySurface not knowing the Volume.
Definition Navigator.cxx:86
virtual const TrackingVolume * volume(const EventContext &ctx, const Amg::Vector3D &gp) const override final
INavigator interface methods - global search for the Volume one is in.
Definition Navigator.cxx:74
bool m_useConditions
Definition Navigator.h:122
virtual const TrackingVolume * highestVolume(const EventContext &ctx) const override final
INavigator interface method - forward hightes TrackingVolume.
Definition Navigator.cxx:80
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
Definition Navigator.h:105
BooleanProperty m_searchWithDistance
search with new distanceToSurface() method
Definition Navigator.h:128
virtual bool atVolumeBoundary(const Trk::TrackParameters *parms, const Trk::TrackingVolume *vol, Trk::PropDirection dir, const Trk::TrackingVolume *&nextVol, double tol) const override final
INavigator method to resolve navigation at boundary.
virtual StatusCode initialize() override
AlgTool initialize method.
Definition Navigator.cxx:49
virtual const TrackingGeometry * trackingGeometry(const EventContext &ctx) const override final
INavigator interface method - returns the TrackingGeometry used for navigation.
BooleanProperty m_fastField
Definition Navigator.h:131
DoubleProperty m_insideVolumeTolerance
Definition Navigator.h:116
DoubleProperty m_isOnSurfaceTolerance
Definition Navigator.h:119
Abstract Base Class for tracking surfaces.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
std::pair< const NavigationCell *, const NavigationCell * > NavigationPair
Definition Navigator.h:36
ParametersBase< TrackParametersDim, Charged > TrackParameters
useful struct for a single navigation cell
Definition INavigator.h:38