9#ifndef TRKGEOMETRY_DISCLAYER_H
10#define TRKGEOMETRY_DISCLAYER_H
54 std::shared_ptr<const DiscBounds> dbounds,
57 std::unique_ptr<OverlapDescriptor> od =
nullptr,
64 std::unique_ptr<OverlapDescriptor> od =
nullptr,
70 std::shared_ptr<const DiscBounds> dbounds,
72 double isontolerance = 0.,
73 std::unique_ptr<OverlapDescriptor> od =
nullptr,
80 std::shared_ptr<const DiscBounds> dbounds,
84 std::unique_ptr<OverlapDescriptor> od =
nullptr,
109 const ICompatibilityEstimator* ice =
nullptr)
const override final;
127 double envelope) override final;
132 double envelop) override final;
155 return (
one->center().z() <
two->center().z());
Eigen::Affine3d Transform3D
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Class to describe the bounds for a planar DiscSurface.
simple helper function to allow sorting of DiscLayers in z
bool operator()(const DiscLayer *one, const DiscLayer *two) const
Class to describe a disc-like detector layer for tracking, it inhertis from both, Layer base class an...
void buildApproachDescriptor()
build approach surfaces
virtual ~DiscLayer()=default
Destructor.
virtual const Surface & surfaceOnApproach(const Amg::Vector3D &pos, const Amg::Vector3D &mom, 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()
virtual void resizeAndRepositionLayer(const VolumeBounds &vBounds, const Amg::Vector3D &cCenter, double envelop) override final
Resize the layer to the tracking volume - not implemented.
DiscLayer()=default
Default Constructor.
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()
virtual void resizeLayer(const VolumeBounds &vBounds, double envelope) override final
Resize the layer to the tracking volume - only works for CylinderVolumeBouns.
DiscLayer & operator=(const DiscLayer &)
Assignment operator for DiscLayers.
friend class TrackingVolume
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer non-const
std::unique_ptr< IApproachDescriptor > m_approachDescriptor
< surface for approaching
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
virtual const DiscSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
DiscSurface()
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