|
ATLAS Offline Software
|
Go to the documentation of this file.
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"
33 class TrackingGeometry;
34 class DetachedTrackingVolume;
46 std::unique_ptr<TrackParameters> lPar,
57 static const InterfaceID IID_INavigator(
"INavigator", 1, 0);
74 static const InterfaceID&
interfaceID() {
return IID_INavigator; }
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,
132 #endif // TRKDETDESCRINTERFACES_INAVIGATOR_H
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 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.
virtual ~INavigator()
Virtual destructor.
const TrackingVolume * nextVolume
std::unique_ptr< TrackParameters > parametersOnBoundary
virtual const TrackingGeometry * trackingGeometry(const EventContext &ctx) const =0
INavigator interface method - returns the TrackingGeometry used for 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.
BoundarySurfaceFace exitFace
Ensure that the ATLAS eigen extensions are properly loaded.
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
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.
Eigen::Matrix< double, 3, 1 > Vector3D
useful struct for a single navigation cell
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 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.
NavigationCell(const TrackingVolume *nVol, std::unique_ptr< TrackParameters > lPar, BoundarySurfaceFace face=undefinedFace)
Constructor.
std::pair< int, const NavigationCell * > IdNavigationCell
virtual const TrackingVolume * highestVolume(const EventContext &ctx) const =0
INavigator interface method - forward hightes TrackingVolume.