ATLAS Offline Software
Loading...
Searching...
No Matches
NavigationLayer.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// NavigationLayer.h, (c) ATLAS Detector software
8
9#ifndef TRKGEOMETRY_NAVIGATIONLAYER_H
10#define TRKGEOMETRY_NAVIGATIONLAYER_H
11
12class MsgStream;
13
17#include "TrkGeometry/Layer.h"
19#include "TrkSurfaces/Surface.h"
20
21#include <memory>
22
23namespace Trk {
24class BinUtility;
25
40
41class NavigationLayer final : public Layer {
42 public:
44 NavigationLayer(std::unique_ptr<Surface> surfaceRepresentation);
45 NavigationLayer(std::unique_ptr<Trk::Surface> surfaceRepresentation, double thickness);
46
49
51 virtual ~NavigationLayer() override = default;
52
55
58 virtual const Surface& surfaceRepresentation() const override final;
59 virtual Surface& surfaceRepresentation() override final;
60
63 virtual bool isOnLayer(
64 const Amg::Vector3D& gp,
65 const BoundaryCheck& bcheck = BoundaryCheck(true)) const override final;
66
69
71 virtual double preUpdateMaterialFactor(
73 Trk::PropDirection dir) const override final;
74
76 virtual double postUpdateMaterialFactor(
78 Trk::PropDirection dir) const override final;
79
82 const Surface* sf = nullptr) const;
83
85 virtual void moveLayer(Amg::Transform3D&) override final;
86
88 virtual void resizeLayer(const VolumeBounds&, double) override final {}
89
92 const Amg::Vector3D&,
93 double) override final {}
94
95 protected:
96 std::unique_ptr<Surface> m_surfaceRepresentation;
97
98};
99
100inline const Surface&
105
106inline Surface&
111
113 return nullptr;
114}
115
117 PropDirection) const {
118 return 0;
119}
120
122 PropDirection) const {
123 return 0;
124}
125
127 const Surface*) const {
128 return nullptr;
129}
130
132
133} // namespace Trk
134
135#endif // TRKGEOMETRY_NAVIGATIONLAYER_H
136
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
Definition BinUtility.h:39
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Layer()=default
Default Constructor.
double thickness() const
Return the Thickness of the Layer.
Material with information about thickness of material.
virtual void resizeAndRepositionLayer(const VolumeBounds &, const Amg::Vector3D &, double) override final
Resize the layer to the tracking volume - not implemented.
NavigationLayer(std::unique_ptr< Surface > surfaceRepresentation)
Constructor.
const Surface * overlapSurface(const TrackParameters &tp, const Surface *sf=nullptr) const
getting the next/overlapping Surface
NavigationLayer & operator=(const NavigationLayer &lay)
Assignment operator.
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
virtual ~NavigationLayer() override=default
Destructor.
virtual const Surface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
virtual void moveLayer(Amg::Transform3D &) override final
move the Layer
virtual void resizeLayer(const VolumeBounds &, double) override final
Resize the layer to the tracking volume - not implemented.
std::unique_ptr< Surface > m_surfaceRepresentation
const MaterialProperties * fullUpdateMaterialProperties() const
getting the MaterialProperties back - for full update
virtual bool isOnLayer(const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const override final
isOnLayer() method, using isOnSurface() with Layer specific tolerance
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
Abstract Base Class for tracking surfaces.
Pure Absract Base Class for Volume bounds.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters