ATLAS Offline Software
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 
26 namespace Trk {
27 
28 class IPropagator;
29 class Surface;
30 class Track;
31 // class TrackParameters;
32 class TrackingVolume;
33 class TrackingGeometry;
34 class DetachedTrackingVolume;
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 
54 typedef std::pair<int, const NavigationCell*> IdNavigationCell;
55 
57 static const InterfaceID IID_INavigator("INavigator", 1, 0);
58 
67 class INavigator : virtual public IAlgTool
68 {
69 public:
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 
86  virtual const TrackingVolume* highestVolume(
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,
117  const TrackingVolume& vol) const = 0;
118 
122  const EventContext& ctx,
123  const IPropagator& prop,
124  const TrackParameters& parms,
126  const TrackingVolume& vol) const = 0;
127 
128 
129 };
130 } // end of namespace
131 
132 #endif // TRKDETDESCRINTERFACES_INAVIGATOR_H
133 
Trk::INavigator::closestParameters
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.
Trk::INavigator::nextBoundarySurface
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.
Trk::INavigator::~INavigator
virtual ~INavigator()
Virtual destructor.
Definition: INavigator.h:71
Trk::BoundarySurface
Definition: BoundarySurface.h:50
Trk::NavigationCell::nextVolume
const TrackingVolume * nextVolume
Definition: INavigator.h:40
Trk::NavigationCell::parametersOnBoundary
std::unique_ptr< TrackParameters > parametersOnBoundary
Definition: INavigator.h:42
TrackParameters.h
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
Trk::BoundarySurfaceFace
BoundarySurfaceFace
Definition: BoundarySurfaceFace.h:31
Trk::INavigator::trackingGeometry
virtual const TrackingGeometry * trackingGeometry(const EventContext &ctx) const =0
INavigator interface method - returns the TrackingGeometry used for navigation.
GeoPrimitives.h
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::INavigator::volume
virtual const TrackingVolume * volume(const EventContext &ctx, const Amg::Vector3D &gp) const =0
INavigator interface method - global search for the Volume one is in.
Trk::IPropagator
Definition: IPropagator.h:55
Trk::TrackingGeometry
Definition: TrackingGeometry.h:67
Trk::NavigationCell::exitFace
BoundarySurfaceFace exitFace
Definition: INavigator.h:43
Trk::ParametersBase
Definition: ParametersBase.h:55
ParticleHypothesis.h
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::INavigator::interfaceID
static const InterfaceID & interfaceID()
AlgTool and IAlgTool interface methods.
Definition: INavigator.h:74
Trk::INavigator::atVolumeBoundary
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.
BoundarySurfaceFace.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
BoundarySurface.h
Trk::NavigationCell
useful struct for a single navigation cell
Definition: INavigator.h:38
Trk::INavigator::nextBoundarySurface
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.
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
Trk::INavigator
Definition: INavigator.h:68
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Trk::undefinedFace
@ undefinedFace
Definition: BoundarySurfaceFace.h:59
Trk::INavigator::nextTrackingVolume
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.
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::NavigationCell::NavigationCell
NavigationCell(const TrackingVolume *nVol, std::unique_ptr< TrackParameters > lPar, BoundarySurfaceFace face=undefinedFace)
Constructor.
Definition: INavigator.h:45
Trk::IdNavigationCell
std::pair< int, const NavigationCell * > IdNavigationCell
Definition: INavigator.h:54
Trk::INavigator::highestVolume
virtual const TrackingVolume * highestVolume(const EventContext &ctx) const =0
INavigator interface method - forward hightes TrackingVolume.