9#ifndef TRKDETDESCRINTERFACES_INAVIGATOR_H
10#define TRKDETDESCRINTERFACES_INAVIGATOR_H
13#include "GaudiKernel/IAlgTool.h"
14#include "GaudiKernel/EventContext.h"
15#include "GaudiKernel/ThreadLocalContext.h"
46 std::unique_ptr<TrackParameters> lPar,
79 const EventContext& ctx)
const = 0;
87 const EventContext& ctx)
const = 0;
100 double tol)
const = 0;
105 const EventContext& ctx,
113 const EventContext& ctx,
122 const EventContext& ctx,
Description of a BoundarySurface inside the tracking realm, it extends the Surface description to mak...
Base Class for a navigation object (active/passive) in the Tracking realm.
Interface class for the navigation AlgTool, it inherits from IAlgTool Detailed information about priv...
virtual ~INavigator()
Virtual destructor.
virtual const TrackParameters * closestParameters(const Track &trk, const Surface &sf) const =0
INavigator interface method - getting the closest TrackParameters from a Track to a Surface.
virtual NavigationCell nextTrackingVolume(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir, const TrackingVolume &vol) const =0
INavigator interface method - - getting the next Volume and the parameter for the next Navigation.
virtual const TrackingVolume * volume(const EventContext &ctx, const Amg::Vector3D &gp) const =0
INavigator interface method - global search for the Volume one is in.
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
virtual const BoundarySurface< TrackingVolume > * nextBoundarySurface(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir) const =0
INavigator interface method - getting the next BoundarySurface not knowing the Volume.
virtual const TrackingVolume * highestVolume(const EventContext &ctx) const =0
INavigator interface method - forward hightes TrackingVolume.
virtual bool atVolumeBoundary(const Trk::TrackParameters *parms, const Trk::TrackingVolume *vol, Trk::PropDirection dir, const Trk::TrackingVolume *&nextVol, double tol) const =0
INavigator method to resolve navigation at boundary.
virtual const TrackingGeometry * trackingGeometry(const EventContext &ctx) const =0
INavigator interface method - returns the TrackingGeometry used for navigation.
virtual const BoundarySurface< TrackingVolume > * nextBoundarySurface(const EventContext &ctx, const IPropagator &prop, const TrackParameters &parms, PropDirection dir, const TrackingVolume &vol) const =0
INavigator interface method - getting the next BoundarySurface when knowing the Volume.
Interface class IPropagators It inherits from IAlgTool.
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.
static const InterfaceID IID_INavigator("INavigator", 1, 0)
Interface ID for INavigator.
BoundarySurfaceFace
Enum to describe the position of the BoundarySurface respectively to the frame orientatin of the volu...
ParametersBase< TrackParametersDim, Charged > TrackParameters
std::pair< int, const NavigationCell * > IdNavigationCell
useful struct for a single navigation cell
NavigationCell(const TrackingVolume *nVol, std::unique_ptr< TrackParameters > lPar, BoundarySurfaceFace face=undefinedFace)
Constructor.
const TrackingVolume * nextVolume
BoundarySurfaceFace exitFace
std::unique_ptr< TrackParameters > parametersOnBoundary