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#include "GaudiKernel/ThreadLocalContext.h"
16// GeoPrimitives
18// Trk
23// STL
24#include <utility>
25
26namespace Trk {
27
28class IPropagator;
29class Surface;
30class Track;
31// class TrackParameters;
32class TrackingVolume;
35
38{
39 //Not Ownig ptr to volume from geometry
41 //Owning ptr for parameters
42 std::unique_ptr<TrackParameters> parametersOnBoundary;
46 std::unique_ptr<TrackParameters> lPar,
48 : nextVolume(nVol)
49 , parametersOnBoundary(std::move(lPar))
50 , exitFace(face)
51 {}
52};
53
54typedef std::pair<int, const NavigationCell*> IdNavigationCell;
55
57static const InterfaceID IID_INavigator("INavigator", 1, 0);
58
67class INavigator : virtual public IAlgTool
68{
69public:
71 virtual ~INavigator() {}
72
74 static const InterfaceID& interfaceID() { return IID_INavigator; }
75
79 const EventContext& ctx) const = 0;
80
82 virtual const TrackingVolume* volume(const EventContext& ctx,
83 const Amg::Vector3D& gp) const = 0;
84
87 const EventContext& ctx) const = 0;
88
92 const Track& trk,
93 const Surface& sf) const = 0;
94
96 virtual bool atVolumeBoundary(const Trk::TrackParameters* parms,
97 const Trk::TrackingVolume* vol,
99 const Trk::TrackingVolume*& nextVol,
100 double tol) const = 0;
101
105 const EventContext& ctx,
106 const IPropagator& prop,
107 const TrackParameters& parms,
108 PropDirection dir) const = 0;
109
113 const EventContext& ctx,
114 const IPropagator& prop,
115 const TrackParameters& parms,
116 PropDirection dir,
117 const TrackingVolume& vol) const = 0;
118
122 const EventContext& ctx,
123 const IPropagator& prop,
124 const TrackParameters& parms,
125 PropDirection dir,
126 const TrackingVolume& vol) const = 0;
127
128
129};
130} // end of namespace
131
132#endif // TRKDETDESCRINTERFACES_INAVIGATOR_H
133
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:68
virtual ~INavigator()
Virtual destructor.
Definition INavigator.h:71
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:74
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:55
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
Definition INavigator.h:54
STL namespace.
useful struct for a single navigation cell
Definition INavigator.h:38
NavigationCell(const TrackingVolume *nVol, std::unique_ptr< TrackParameters > lPar, BoundarySurfaceFace face=undefinedFace)
Constructor.
Definition INavigator.h:45
const TrackingVolume * nextVolume
Definition INavigator.h:40
BoundarySurfaceFace exitFace
Definition INavigator.h:43
std::unique_ptr< TrackParameters > parametersOnBoundary
Definition INavigator.h:42