|
ATLAS Offline Software
|
Go to the documentation of this file.
9 #ifndef TRKGEOMETRY_LAYER_H
10 #define TRKGEOMETRY_LAYER_H
32 class MaterialProperties;
37 class DetachedTrackingVolume;
38 class ICompatibilityEstimator;
80 std::unique_ptr<OverlapDescriptor> od =
nullptr,
85 std::unique_ptr<OverlapDescriptor> =
nullptr,
int ltype =
int(
passive));
90 double thickness = 0., std::unique_ptr<OverlapDescriptor> od =
nullptr,
184 const ICompatibilityEstimator* ice =
nullptr)
const;
190 bool materialSurfacesOnly =
true,
191 const Surface* startSurface =
nullptr,
192 const Surface* endSurface =
nullptr,
193 const ICompatibilityEstimator* ice =
nullptr)
const;
199 bool materialSurfacesOnly =
true,
200 const Surface* startSurface =
nullptr,
201 const Surface* endSurface =
nullptr,
202 const ICompatibilityEstimator* ice =
nullptr)
const;
251 std::vector<SurfaceIntersection>& cSurfaces,
const T&
pars,
253 bool materialSurfacesOnly =
true,
const Surface* startSurface =
nullptr,
254 const Surface* endSurface =
nullptr,
255 const ICompatibilityEstimator* ice =
nullptr)
const;
258 void compactify(
size_t& cSurfaces,
size_t& tSurfaces);
278 double envelope = 1.) = 0;
314 #endif // TRKGEOMETRY_LAYER_H
void setRef(double)
set the reference measure
virtual bool isOnLayer(const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const
isOnLayer() method, using isOnSurface() with Layer specific tolerance
void setPreviousLayer(const Layer *)
set the previous Layer
virtual double postUpdateMaterialFactor(const TrackParameters &, PropDirection) const
getting the MaterialProperties back - for pre-update
void setNextLayer(const Layer *)
set the next Layer
const MaterialProperties * fullUpdateMaterialProperties(const TrackParameters &par) const
getting the MaterialProperties back - for full update
bool onLayer(const T ¶meters, const BoundaryCheck &bcheck=BoundaryCheck(true)) const
templated on Layer method
void setBinUtility(const BinUtility *)
set the BinUtility
void setLayerType(int identifier)
set the Layer coding
const Layer * m_previousLayer
< the previous Layer according to BinGenUtils
Eigen::Matrix< double, 2, 1 > Vector2D
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
void encloseTrackingVolume(const TrackingVolume &tvol)
private method to set the enclosed detached TV
std::unique_ptr< OverlapDescriptor > m_overlapDescriptor
double getRef() const
get the reference measure
std::unique_ptr< SurfaceArray > m_surfaceArray
MaterialPoperties of this layer Surface.
size_t compatibleSurfaces(std::vector< SurfaceIntersection > &cSurfaces, const NeutralParameters &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 neutral parameters
const OverlapDescriptor * overlapDescriptor() const
gettint hte overlap descriptor
void compactify(size_t &cSurfaces, size_t &tSurfaces)
register layer index for material map registration
class extensions to return also the object
const DetachedTrackingVolume * enclosingDetachedTrackingVolume() const
get the confining DetachedTrackingVolume
const Surface * subSurfaceReference(unsigned int idx=0) const
Return a reference sub surface of the layer, usually the first one in the array.
const Volume * representingVolume() const
get the Volume associated to the layer
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
int layerType() const
get the Layer coding
virtual double preUpdateMaterialFactor(const TrackParameters &, PropDirection) const
getting the MaterialProperties back - for pre-update
virtual void moveLayer(Amg::Transform3D &)=0
move the Layer
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
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,...
void assignMaterialProperties(const LayerMaterialProperties &, double scale=1.0)
assignMaterialPropeties
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
SurfaceArray * surfaceArray()
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
int m_layerType
active passive layer
Eigen::Affine3d Transform3D
Layer & operator=(const Layer &lay)
Assignment operator for Derived classes.
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 TrackingVolume * m_enclosingTrackingVolume
Enclosing DetachedTrackingVolume.
double m_ref
reference measure for local coordinate convertors
virtual bool hasSubStructure(bool resolveSensitive=false) const
Has sub-structure method:
virtual void resizeLayer(const VolumeBounds &, double)=0
private method to set enclosing TrackingVolume, called by friend class only optionally,...
ObjectIntersection< Surface > SurfaceIntersection
Layer()
Default Constructor.
void registerLayerIndex(const LayerIndex &lIdx)
Ensure that the ATLAS eigen extensions are properly loaded.
virtual void resizeAndRepositionLayer(const VolumeBounds &vBounds, const Amg::Vector3D &vCenter, double envelope=1.)=0
resize and reposition layer : dedicated for entry layers
void registerRepresentingVolume(const Volume *theVol)
register Volume associated to the layer
double thickness() const
Return the Thickness of the Layer.
Eigen::Matrix< double, 3, 1 > Vector3D
const Layer * m_nextLayer
BinUtility for next/previous decision.
const BinUtility * binUtility() const
access the BinUtility
const BinUtility * m_binUtility
Enclosing TrackingVolume.
BinnedArray< Surface > SurfaceArray
size_t getCompatibleSurfaces(std::vector< SurfaceIntersection > &cSurfaces, const T &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
const Layer * previousLayer(bool skipNavLayer=false) const
getting what's stored to be the previous Layer, boolean to skip navigation layers
LayerIndex m_index
LayerIndex.
const TrackingVolume * enclosingTrackingVolume() const
get the confining TrackingVolume
const LayerMaterialProperties * layerMaterialProperties() const
getting the LayerMaterialProperties including full/pre/post update
double m_layerThickness
descriptor for overlap/next surface (owning ptr)
virtual Surface & surfaceRepresentation()=0
Define macros for attributes used to control the static checker.
const DetachedTrackingVolume * m_enclosingDetachedTrackingVolume
const LayerIndex & layerIndex() const
get the layerIndex
void encloseDetachedTrackingVolume(const DetachedTrackingVolume &tvol)
virtual ~Layer()=default
Destructor.
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()