9#ifndef TRKGEOMETRY_CYLINDERLAYER_H
10#define TRKGEOMETRY_CYLINDERLAYER_H
50 std::shared_ptr<const CylinderBounds> cbounds,
53 std::unique_ptr<OverlapDescriptor> od =
nullptr,
60 std::unique_ptr<OverlapDescriptor> od =
nullptr,
69 std::shared_ptr<const CylinderBounds> cbounds,
72 std::unique_ptr<OverlapDescriptor> od =
nullptr,
79 std::shared_ptr<const CylinderBounds> cbounds,
83 std::unique_ptr<OverlapDescriptor> od =
nullptr,
92 std::unique_ptr<OverlapDescriptor> od =
nullptr,
100 std::unique_ptr<OverlapDescriptor> od =
nullptr,
110 std::unique_ptr<OverlapDescriptor> od =
nullptr,
145 const ICompatibilityEstimator* ice =
nullptr)
const override final;
153 double envelope) override final;
159 double envelope) override final;
186 return (
one->surfaceRepresentation().bounds().r() <
187 two->surfaceRepresentation().bounds().r());
Eigen::Affine3d Transform3D
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Bounds for a cylindrical Surface.
bool operator()(const CylinderLayer *one, const CylinderLayer *two) const
CylinderLayerSorterR()
Default Constructor.
Class to describe a cylindrical detector layer for tracking, it inhertis from both,...
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
virtual void resizeAndRepositionLayer(const VolumeBounds &vBounds, const Amg::Vector3D &cCenter, double envelope) override final
Resize the layer to the tracking volume.
virtual const Surface & surfaceOnApproach(const Amg::Vector3D &pos, const Amg::Vector3D &dir, PropDirection pdir, const BoundaryCheck &bcheck, bool resolveSubSurfaces=0, const ICompatibilityEstimator *ice=nullptr) const override final
Surface seen on approach - if not defined differently, it is the surfaceRepresentation()
CylinderLayer()
Default Constructor.
CylinderLayer & operator=(const CylinderLayer &)
Assignment operator for CylinderLayers.
const Surface & approachSurface(const Amg::Vector3D &pos, const Amg::Vector3D &dir, const BoundaryCheck &bcheck) const
Surface seen on approach - if not defined differently, it is the surfaceRepresentation()
void buildApproachDescriptor()
build approach surfaces
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
virtual void resizeLayer(const VolumeBounds &vBounds, double envelope) override final
Resize the layer to the tracking volume - only works for CylinderVolumeBouns.
std::unique_ptr< IApproachDescriptor > m_approachDescriptor
surfaces on approach to the layer
virtual ~CylinderLayer()=default
Destructor.
virtual const CylinderSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Class for a CylinderSurface in the ATLAS detector.
CylinderSurface()
Default Constructor.
CVirtual class to decide and return which approaching surface to be taken.
This virtual base class encapsulates the logics to build pre/post/full update material for Layer stru...
Layer()=default
Default Constructor.
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
double thickness() const
Return the Thickness of the Layer.
BaseClass to be overloaded for describing overlaps and next-by elements for the sub-detector implemen...
Abstract Base Class for tracking surfaces.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Pure Absract Base Class for Volume bounds.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters