ATLAS Offline Software
Loading...
Searching...
No Matches
INavigator.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
6// INavigator.h, (c) ATLAS Detector software
8
9#ifndef TRKDETDESCRINTERFACES_INAVIGATOR_H
10#define TRKDETDESCRINTERFACES_INAVIGATOR_H
11
12// Gaudi
13#include "GaudiKernel/IAlgTool.h"
14#include "GaudiKernel/EventContext.h"
15// GeoPrimitives
17// Trk
22// STL
23#include <utility>
24
25namespace Trk {
26
27class IPropagator;
28class Surface;
29class Track;
30// class TrackParameters;
31class TrackingVolume;
34
37{
38 //Not Ownig ptr to volume from geometry
40 //Owning ptr for parameters
41 std::unique_ptr<TrackParameters> parametersOnBoundary;
45 std::unique_ptr<TrackParameters> lPar,
47 : nextVolume(nVol)
48 , parametersOnBoundary(std::move(lPar))
49 , exitFace(face)
50 {}
51};
52
53typedef std::pair<int, const NavigationCell*> IdNavigationCell;
54
56static const InterfaceID IID_INavigator("INavigator", 1, 0);
57
66class INavigator : virtual public IAlgTool
67{
68public:
70 virtual ~INavigator() {}
71
73 static const InterfaceID& interfaceID() { return IID_INavigator; }
74
78 const EventContext& ctx) const = 0;
79
81 virtual const TrackingVolume* volume(const EventContext& ctx,
82 const Amg::Vector3D& gp) const = 0;
83
86 const EventContext& ctx) const = 0;
87
91 const Track& trk,
92 const Surface& sf) const = 0;
93
95 virtual bool atVolumeBoundary(const Trk::TrackParameters* parms,
96 const Trk::TrackingVolume* vol,
98 const Trk::TrackingVolume*& nextVol,
99 double tol) const = 0;
100
104 const EventContext& ctx,
105 const IPropagator& prop,
106 const TrackParameters& parms,
107 PropDirection dir) const = 0;
108
112 const EventContext& ctx,
113 const IPropagator& prop,
114 const TrackParameters& parms,
115 PropDirection dir,
116 const TrackingVolume& vol) const = 0;
117
121 const EventContext& ctx,
122 const IPropagator& prop,
123 const TrackParameters& parms,
124 PropDirection dir,
125 const TrackingVolume& vol) const = 0;
126
127
128};
129} // end of namespace
130
131#endif // TRKDETDESCRINTERFACES_INAVIGATOR_H
132
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...
Definition INavigator.h:67
virtual ~INavigator()
Virtual destructor.
Definition INavigator.h:70
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.
Definition INavigator.h:73
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.
Definition IPropagator.h:54
Abstract Base Class for tracking surfaces.
Definition Surface.h:79
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
Definition INavigator.h:53
STL namespace.
useful struct for a single navigation cell
Definition INavigator.h:37
NavigationCell(const TrackingVolume *nVol, std::unique_ptr< TrackParameters > lPar, BoundarySurfaceFace face=undefinedFace)
Constructor.
Definition INavigator.h:44
const TrackingVolume * nextVolume
Definition INavigator.h:39
BoundarySurfaceFace exitFace
Definition INavigator.h:42
std::unique_ptr< TrackParameters > parametersOnBoundary
Definition INavigator.h:41