ATLAS Offline Software
IIntersector.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // IIntersector.h, (c) ATLAS Detector software
8 
9 #ifndef TRKEXINTERFACES_IINTERSECTOR_H
10 #define TRKEXINTERFACES_IINTERSECTOR_H
11 
12 // Gaudi
13 #include "GaudiKernel/IAlgTool.h"
14 // Trk
17 // std
18 #include <optional>
19 namespace Trk {
20 class CylinderSurface;
21 class DiscSurface;
22 class PerigeeSurface;
23 class PlaneSurface;
24 class StraightLineSurface;
25 class Surface;
26 class TrackIntersection;
27 
45 class IIntersector : virtual public IAlgTool {
46 
47  protected:
48  public:
49  DeclareInterfaceID(IInterface, 1, 0);
50 
52  virtual ~IIntersector() = default;
53 
55  virtual std::optional<TrackSurfaceIntersection> intersectSurface(
56  const Surface& surface, const TrackSurfaceIntersection& trackIntersection,
57  const double qOverP) const = 0;
58 
60  virtual std::optional<TrackSurfaceIntersection> approachPerigeeSurface(
61  const PerigeeSurface& surface,
62  const TrackSurfaceIntersection& trackIntersection,
63  const double qOverP) const = 0;
64 
67  virtual std::optional<TrackSurfaceIntersection> approachStraightLineSurface(
68  const StraightLineSurface& surface,
69  const TrackSurfaceIntersection& trackIntersection,
70  const double qOverP) const = 0;
71 
74  virtual std::optional<TrackSurfaceIntersection> intersectCylinderSurface(
75  const CylinderSurface& surface,
76  const TrackSurfaceIntersection& trackIntersection,
77  const double qOverP) const = 0;
78 
80  virtual std::optional<TrackSurfaceIntersection> intersectDiscSurface(
81  const DiscSurface& surface,
82  const TrackSurfaceIntersection& trackIntersection,
83  const double qOverP) const = 0;
84 
86  virtual std::optional<TrackSurfaceIntersection> intersectPlaneSurface(
87  const PlaneSurface& surface,
88  const TrackSurfaceIntersection& trackIntersection,
89  const double qOverP) const = 0;
90 
93  virtual bool isValid(Amg::Vector3D startPosition,
94  Amg::Vector3D endPosition) const = 0;
95 };
96 
97 } // namespace Trk
98 
99 #endif // TRKEXINTERFACES_IINTERSECTOR_H
100 
Trk::IIntersector::~IIntersector
virtual ~IIntersector()=default
Virtual destructor.
TrackParameters.h
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
Trk::IIntersector::intersectDiscSurface
virtual std::optional< TrackSurfaceIntersection > intersectDiscSurface(const DiscSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : DiscSurface.
Trk::TrackSurfaceIntersection
Definition: TrackSurfaceIntersection.h:32
Trk::DiscSurface
Definition: DiscSurface.h:54
Trk::IIntersector::isValid
virtual bool isValid(Amg::Vector3D startPosition, Amg::Vector3D endPosition) const =0
IIntersector interface method for extrapolation validity check over a particular extrapolation range.
Trk::IIntersector::DeclareInterfaceID
DeclareInterfaceID(IInterface, 1, 0)
Trk::CylinderSurface
Definition: CylinderSurface.h:55
Trk::IIntersector::intersectCylinderSurface
virtual std::optional< TrackSurfaceIntersection > intersectCylinderSurface(const CylinderSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : CylinderSurface.
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::IIntersector::intersectSurface
virtual std::optional< TrackSurfaceIntersection > intersectSurface(const Surface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for general Surface type.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::IIntersector::approachStraightLineSurface
virtual std::optional< TrackSurfaceIntersection > approachStraightLineSurface(const StraightLineSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : StraightLineSurface.
Trk::IIntersector
Definition: IIntersector.h:45
Trk::PlaneSurface
Definition: PlaneSurface.h:64
Trk::IIntersector::intersectPlaneSurface
virtual std::optional< TrackSurfaceIntersection > intersectPlaneSurface(const PlaneSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : PlaneSurface.
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
Trk::IIntersector::approachPerigeeSurface
virtual std::optional< TrackSurfaceIntersection > approachPerigeeSurface(const PerigeeSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : PerigeeSurface.
TrackSurfaceIntersection.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51