20 std::unique_ptr<Trk::OverlapDescriptor> olap,
int laytyp)
35 std::unique_ptr<Trk::OverlapDescriptor> olap,
int laytyp)
52 std::unique_ptr<Trk::OverlapDescriptor> olap,
int laytyp)
122 std::span<Trk::Surface const * const> surfaces = std::as_const(*m_surfaceArray).arrayObjects();
124 unsigned int rfSurfaces = surfaces.size();
125 if (idx && idx < rfSurfaces)
return surfaces[idx];
127 for (
unsigned int rsf = 0; rsf < rfSurfaces; ++rsf) {
128 referenceSurface = surfaces[rsf];
129 if (referenceSurface)
break;
132 return referenceSurface;
157 nextMatLayer = nextMatLayer->
nextLayer();
196 std::span<Trk::Surface * const> surfaces =
m_surfaceArray->arrayObjects();
198 if (sIter && (*sIter).owner() ==
Trk::noOwn) {
212 const Trk::ICompatibilityEstimator*)
const {
217 std::vector<Trk::SurfaceIntersection>& cSurfaces,
221 const Trk::ICompatibilityEstimator* ice)
const {
222 return getCompatibleSurfaces(cSurfaces, pars, pdir, bcheck,
223 materialSurfacesOnly, startSurface, endSurface,
228 std::vector<Trk::SurfaceIntersection>& cSurfaces,
232 const Trk::ICompatibilityEstimator* ice)
const {
233 return getCompatibleSurfaces(cSurfaces, pars, pdir, bcheck,
234 materialSurfacesOnly, startSurface, endSurface,
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
This virtual base class encapsulates the logics to build pre/post/full update material for Layer stru...
virtual LayerMaterialProperties * clone() const =0
Pseudo-Constructor clone()
Base Class for a Detector Layer in the Tracking realm.
void assignMaterialProperties(const LayerMaterialProperties &, double scale=1.0)
assignMaterialPropeties
size_t compatibleSurfaces(std::vector< SurfaceIntersection > &cSurfaces, const TrackParameters &pars, PropDirection pdir, const BoundaryCheck &bcheck, bool materialSurfacesOnly=true, const Surface *startSurface=nullptr, const Surface *endSurface=nullptr, const ICompatibilityEstimator *ice=nullptr) const
get compatible surfaces starting from charged parameters
void compactify(size_t &cSurfaces, size_t &tSurfaces)
register layer index for material map registration
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
const Layer * previousLayer(bool skipNavLayer=false) const
getting what's stored to be the previous Layer, boolean to skip navigation layers
Layer()=default
Default Constructor.
const MaterialProperties * fullUpdateMaterialProperties(const TrackParameters &par) const
getting the MaterialProperties back - for full update
virtual bool isOnLayer(const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const
isOnLayer() method, using isOnSurface() with Layer specific tolerance
LayerIndex m_index
LayerIndex.
const Layer * m_previousLayer
< the previous Layer according to BinGenUtils
const Layer * nextLayer(const Amg::Vector3D &gp, const Amg::Vector3D &udir) const
getting the next/previous Layer if registered - unit for direction vector required
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
const LayerMaterialProperties * layerMaterialProperties() const
getting the LayerMaterialProperties including full/pre/post update
std::unique_ptr< OverlapDescriptor > m_overlapDescriptor
const Layer * m_nextLayer
BinUtility for next/previous decision.
double m_layerThickness
descriptor for overlap/next surface (owning ptr)
double thickness() const
Return the Thickness of the Layer.
const DetachedTrackingVolume * m_enclosingDetachedTrackingVolume
Layer & operator=(const Layer &lay)
Assignment operator for Derived classes.
const BinUtility * m_binUtility
Enclosing TrackingVolume.
virtual bool hasSubStructure(bool resolveSensitive=false) const
Has sub-structure method:
int m_layerType
active passive layer
const Surface * subSurface(const Amg::Vector3D &gp) const
If no subSurface array is defined or no subSurface can be found to the given Amg::Vector3D,...
double m_ref
reference measure for local coordinate convertors
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
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
Surface seen on approach - if not defined differently, it is the surfaceRepresentation()
const TrackingVolume * m_enclosingTrackingVolume
Enclosing DetachedTrackingVolume.
std::unique_ptr< SurfaceArray > m_surfaceArray
MaterialPoperties of this layer Surface.
const Surface * subSurfaceReference(unsigned int idx=0) const
Return a reference sub surface of the layer, usually the first one in the array.
Material with information about thickness of material.
const Amg::Vector3D & position() const
Access method for the position.
Abstract Base Class for tracking surfaces.
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< NeutralParametersDim, Neutral > NeutralParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters