ATLAS Offline Software
Loading...
Searching...
No Matches
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>
19namespace Trk {
20class CylinderSurface;
21class DiscSurface;
22class PerigeeSurface;
23class PlaneSurface;
25class Surface;
26class TrackIntersection;
27
45class 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
Class for a CylinderSurface in the ATLAS detector.
Class for a DiscSurface in the ATLAS detector.
Definition DiscSurface.h:54
Base class for Intersector AlgTools.
virtual std::optional< TrackSurfaceIntersection > approachStraightLineSurface(const StraightLineSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : StraightLineSurface.
virtual std::optional< TrackSurfaceIntersection > approachPerigeeSurface(const PerigeeSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : PerigeeSurface.
virtual ~IIntersector()=default
Virtual destructor.
virtual std::optional< TrackSurfaceIntersection > intersectSurface(const Surface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for general Surface type.
DeclareInterfaceID(IInterface, 1, 0)
virtual std::optional< TrackSurfaceIntersection > intersectCylinderSurface(const CylinderSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : CylinderSurface.
virtual std::optional< TrackSurfaceIntersection > intersectDiscSurface(const DiscSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : DiscSurface.
virtual bool isValid(Amg::Vector3D startPosition, Amg::Vector3D endPosition) const =0
IIntersector interface method for extrapolation validity check over a particular extrapolation range.
virtual std::optional< TrackSurfaceIntersection > intersectPlaneSurface(const PlaneSurface &surface, const TrackSurfaceIntersection &trackIntersection, const double qOverP) const =0
IIntersector interface method for specific Surface type : PlaneSurface.
Class describing the Line to which the Perigee refers to.
Class for a planaer rectangular or trapezoidal surface in the ATLAS detector.
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
Abstract Base Class for tracking surfaces.
An intersection with a Surface is given by.
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
@ qOverP
perigee
Definition ParamDefs.h:67