22 std::shared_ptr<const Trk::DiscBounds> dbounds,
25 std::unique_ptr<Trk::OverlapDescriptor> olap,
37 std::unique_ptr<Trk::OverlapDescriptor> olap,
47 std::shared_ptr<const Trk::DiscBounds> dbounds,
50 std::unique_ptr<Trk::OverlapDescriptor> olap,
64 std::shared_ptr<const Trk::DiscBounds> dbounds,
68 std::unique_ptr<Trk::OverlapDescriptor> olap,
141 m_transforms = std::make_unique<Transforms>(transf, transf.translation(),
142 transf.rotation().col(2));
161 std::shared_ptr<const Trk::SurfaceBounds>(rDiscBounds);
168 size_t binsR = layerMaterialBU->
max(0) + 1;
197 if (surfacesOnApproach) {
199 std::vector<Trk::Intersection> sfIntersections;
201 double aPathLength = 10e10;
203 for (
const auto& sfIter : (*surfacesOnApproach)) {
206 sfIter->straightLineIntersection(pos, dir,
true, bcheck);
213 if (aSurface)
return (*aSurface);
224 const Trk::ICompatibilityEstimator*)
const {
236 auto aSurfaces = std::make_unique<Trk::ApproachSurfaces>();
250 aSurfaces->push_back(
new Trk::DiscSurface(aspTransform, std::make_shared<Trk::DiscBounds>(*db)));
251 aSurfaces->push_back(
new Trk::DiscSurface(asnTransform, std::make_shared<Trk::DiscBounds>(*db)));
253 for (
auto& sIter : (*aSurfaces)) {
254 sIter->associateLayer(*
this);
260 std::make_unique<Trk::ApproachDescriptor>(std::move(aSurfaces));
282 if (
center().isApprox(nDiscCenter))
return;
just implement the delete on the objects
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
BinningValue binningValue(size_t ba=0) const
The type/value of the binning.
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 Volume, the decomposeToSurfaces method creates a vector of up to 6 surfaces:
double innerRadius() const
This method returns the inner radius.
double halflengthZ() const
This method returns the halflengthZ.
double outerRadius() const
This method returns the outer radius.
Class to describe the bounds for a planar DiscSurface.
Class to describe a disc-like detector layer for tracking, it inhertis from both, Layer base class an...
void buildApproachDescriptor()
build approach surfaces
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.
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.
Class for a DiscSurface in the ATLAS detector.
DiscSurface()
Default Constructor.
DiscSurface & operator=(const DiscSurface &dsf)
Assignement operator.
std::shared_ptr< const SurfaceBounds > m_bounds
reference Point on the Surface
const SurfaceBounds & bounds() const override final
This method returns the bounds by reference.
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.
Abstract Base Class for tracking surfaces.
void associateLayer(const Layer &lay)
method to associate a Trk::Layer.
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
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
Eigen::Translation< double, 3 > Translation3D
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters