24 std::shared_ptr<const Trk::CylinderBounds> cbounds,
27 std::unique_ptr<Trk::OverlapDescriptor> olap,
40 std::unique_ptr<Trk::OverlapDescriptor> olap,
51 std::shared_ptr<const Trk::CylinderBounds> cbounds,
54 std::unique_ptr<Trk::OverlapDescriptor> olap,
71 std::shared_ptr<const Trk::CylinderBounds> cbounds,
75 std::unique_ptr<Trk::OverlapDescriptor> olap,
91 std::shared_ptr<const Trk::CylinderBounds> cbounds,
94 std::unique_ptr<Trk::OverlapDescriptor> olap,
103 std::shared_ptr<const Trk::CylinderBounds> cbounds,
106 std::unique_ptr<Trk::OverlapDescriptor> olap,
118 std::shared_ptr<const Trk::CylinderBounds> cbounds,
122 std::unique_ptr<Trk::OverlapDescriptor> olap,
182 if (pastStep.perp() > parm.
position().perp())
192 if (pastStep.perp() > parm.
position().perp())
199 std::make_unique<Transforms>(shift * (
m_transforms->transform));
220 std::shared_ptr<const Trk::CylinderBounds>(rCylinderBounds);
226 if (layerMaterialBU && layerMaterialBU->
dimensions() > 1) {
227 size_t binsRPhi = layerMaterialBU->
max(0) + 1;
228 size_t binsZ = layerMaterialBU->
max(1) + 1;
255 if (surfacesOnApproach) {
257 std::vector<Trk::Intersection> sfIntersections;
259 double aPathLength = 10e10;
261 for (
const auto& sfIter : (*surfacesOnApproach)) {
264 sfIter->straightLineIntersection(pos, dir,
true, bcheck);
271 if (aSurface)
return (*aSurface);
282 const Trk::ICompatibilityEstimator*)
const {
295 auto aSurfaces = std::make_unique<Trk::ApproachSurfaces>();
310 for (
auto& sIter : (*aSurfaces)) {
311 sIter->associateLayer(*
this);
315 std::make_unique<Trk::ApproachDescriptor>(std::move(aSurfaces));
just implement the delete on the objects
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
size_t max(size_t ba=0) const
First bin maximal value.
size_t dimensions() const
First bin maximal value.
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Bounds for a cylindrical Surface.
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 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.
std::shared_ptr< const CylinderBounds > m_bounds
The global reference point (== a point on the surface)
CylinderSurface & operator=(const CylinderSurface &csf)
Assignment operator.
virtual const CylinderBounds & bounds() const override final
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
Bounds for a cylindrical Volume, the decomposeToSurfaces method creates a vector of up to 6 surfaces:
double halflengthZ() const
This method returns the halflengthZ.
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.
Layer & operator=(const Layer &lay)
Assignment operator for Derived classes.
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
std::unique_ptr< SurfaceArray > m_surfaceArray
MaterialPoperties of this layer Surface.
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.
Abstract Base Class for tracking surfaces.
void associateLayer(const Layer &lay)
method to associate a Trk::Layer.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
std::unique_ptr< Transforms > m_transforms
Unique Pointer to the Transforms struct.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
Pure Absract Base Class for Volume bounds.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters