9#ifndef TRKEXTOOLS_NAVIGATOR_H
10#define TRKEXTOOLS_NAVIGATOR_H
14#include "GaudiKernel/ServiceHandle.h"
27#include <Gaudi/Accumulators.h>
36 typedef std::pair<const NavigationCell*,const NavigationCell*>
NavigationPair;
51 Navigator(
const std::string&,
const std::string&,
const IInterface*);
61 const EventContext& ctx)
const override final;
66 const EventContext& ctx,
const Amg::Vector3D& gp)
const override final;
70 const EventContext& ctx)
const override final;
75 const Track& trk,
const Surface& sf)
const override final;
82 double tol)
const override final;
106 this,
"TrackingGeometryKey",
"AtlasTrackingGeometry",
107 "Key of output of TrackingGeometry for ID"};
111 this,
"TrackingGeometrySvc",
""};
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"};
129 this,
"SearchWithDistanceToSurface",
true,
130 "search with new distanceToSurface() method"};
131 BooleanProperty
m_fastField{
this,
"MagneticFieldProperties",
false};
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...
Interface class IPropagators It inherits from IAlgTool.
magnetic field properties to steer the behavior of the extrapolation
Navigator(const std::string &, const std::string &, const IInterface *)
Constructor.
std::string m_trackingGeometryName
Name of the TrackingGeometry as given in Detector Store.
Trk::MagneticFieldProperties m_fieldProperties
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.
BooleanProperty m_useStraightLineApproximation
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.
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.
virtual const TrackingVolume * highestVolume(const EventContext &ctx) const override final
INavigator interface method - forward hightes TrackingVolume.
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
BooleanProperty m_searchWithDistance
search with new distanceToSurface() method
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.
virtual const TrackingGeometry * trackingGeometry(const EventContext &ctx) const override final
INavigator interface method - returns the TrackingGeometry used for navigation.
BooleanProperty m_fastField
DoubleProperty m_insideVolumeTolerance
DoubleProperty m_isOnSurfaceTolerance
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
ParametersBase< TrackParametersDim, Charged > TrackParameters
useful struct for a single navigation cell