ATLAS Offline Software
|
#include <Layer.h>
Public Member Functions | |
Layer () | |
Default Constructor. More... | |
Layer (const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, int ltype=int(passive)) | |
Constructor with MaterialProperties. More... | |
Layer (std::unique_ptr< SurfaceArray > surfaceArray, double thickness=0., std::unique_ptr< OverlapDescriptor >=nullptr, int ltype=int(passive)) | |
Constructor with pointer to SurfaceArray (passing ownership) More... | |
Layer (std::unique_ptr< SurfaceArray > surfaceArray, const LayerMaterialProperties &laymatprop, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, int ltype=int(passive)) | |
Constructor with MaterialProperties and pointer SurfaceArray (passing ownership) More... | |
virtual | ~Layer ()=default |
Destructor. More... | |
const SurfaceArray * | surfaceArray () const |
Return the entire SurfaceArray, returns nullptr if no SurfaceArray. More... | |
SurfaceArray * | surfaceArray () |
Return the entire SurfaceArray, returns nullptr if no SurfaceArray. More... | |
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, it would return 0. More... | |
const Surface * | subSurface (const Amg::Vector2D &lp) const |
If no subSurface array is defined or no subSurface can be found to the given Amg::Vector2D, it would return 0. More... | |
const Surface * | subSurfaceReference (unsigned int idx=0) const |
Return a reference sub surface of the layer, usually the first one in the array. More... | |
virtual const Surface & | surfaceRepresentation () const =0 |
Transforms the layer into a Surface representation for extrapolation. More... | |
virtual Surface & | surfaceRepresentation ()=0 |
double | thickness () const |
Return the Thickness of the Layer. More... | |
template<class T > | |
bool | onLayer (const T ¶meters, const BoundaryCheck &bcheck=BoundaryCheck(true)) const |
templated on Layer method More... | |
virtual bool | isOnLayer (const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const |
isOnLayer() method, using isOnSurface() with Layer specific tolerance More... | |
const LayerMaterialProperties * | layerMaterialProperties () const |
getting the LayerMaterialProperties including full/pre/post update More... | |
const MaterialProperties * | fullUpdateMaterialProperties (const TrackParameters &par) const |
getting the MaterialProperties back - for full update More... | |
virtual double | preUpdateMaterialFactor (const TrackParameters &, PropDirection) const |
getting the MaterialProperties back - for pre-update More... | |
virtual double | postUpdateMaterialFactor (const TrackParameters &, PropDirection) const |
getting the MaterialProperties back - for pre-update More... | |
const OverlapDescriptor * | overlapDescriptor () const |
gettint hte overlap descriptor More... | |
const Layer * | previousLayer (bool skipNavLayer=false) const |
getting what's stored to be the previous Layer, boolean to skip navigation layers More... | |
void | setPreviousLayer (const Layer *) |
set the previous Layer More... | |
const Layer * | nextLayer (const Amg::Vector3D &gp, const Amg::Vector3D &udir) const |
getting the next/previous Layer if registered - unit for direction vector required More... | |
const Layer * | nextLayer (bool skipNavLayer=false) const |
getting what's stored to be the next Layer, boolean to skip navigation layers More... | |
void | setNextLayer (const Layer *) |
set the next Layer More... | |
const BinUtility * | binUtility () const |
access the BinUtility More... | |
void | setBinUtility (const BinUtility *) |
set the BinUtility More... | |
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() More... | |
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 More... | |
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 More... | |
virtual bool | hasSubStructure (bool resolveSensitive=false) const |
Has sub-structure method: More... | |
const TrackingVolume * | enclosingTrackingVolume () const |
get the confining TrackingVolume More... | |
const DetachedTrackingVolume * | enclosingDetachedTrackingVolume () const |
get the confining DetachedTrackingVolume More... | |
const LayerIndex & | layerIndex () const |
get the layerIndex More... | |
int | layerType () const |
get the Layer coding More... | |
void | setLayerType (int identifier) |
set the Layer coding More... | |
void | assignMaterialProperties (const LayerMaterialProperties &, double scale=1.0) |
assignMaterialPropeties More... | |
virtual void | moveLayer (Amg::Transform3D &)=0 |
move the Layer More... | |
void | registerRepresentingVolume (const Volume *theVol) |
register Volume associated to the layer More... | |
const Volume * | representingVolume () const |
get the Volume associated to the layer More... | |
void | setRef (double) |
set the reference measure More... | |
double | getRef () const |
get the reference measure More... | |
void | encloseTrackingVolume (const TrackingVolume &tvol) |
private method to set the enclosed detached TV More... | |
void | encloseDetachedTrackingVolume (const DetachedTrackingVolume &tvol) |
template<class T > | |
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 More... | |
void | compactify (size_t &cSurfaces, size_t &tSurfaces) |
register layer index for material map registration More... | |
void | registerLayerIndex (const LayerIndex &lIdx) |
virtual void | resizeLayer (const VolumeBounds &, double)=0 |
private method to set enclosing TrackingVolume, called by friend class only optionally, the layer can be resized to the dimensions of the TrackingVolume More... | |
virtual void | resizeAndRepositionLayer (const VolumeBounds &vBounds, const Amg::Vector3D &vCenter, double envelope=1.)=0 |
resize and reposition layer : dedicated for entry layers More... | |
Protected Member Functions | |
Layer (const Layer &lay) | |
Copy Constructor for Derived classes. More... | |
Layer & | operator= (const Layer &lay) |
Assignment operator for Derived classes. More... | |
Protected Attributes | |
std::unique_ptr< SurfaceArray > | m_surfaceArray |
MaterialPoperties of this layer Surface. More... | |
std::unique_ptr< LayerMaterialProperties > | m_layerMaterialProperties |
thickness of the Layer More... | |
double | m_layerThickness |
descriptor for overlap/next surface (owning ptr) More... | |
std::unique_ptr< OverlapDescriptor > | m_overlapDescriptor |
const Layer * | m_previousLayer |
< the previous Layer according to BinGenUtils More... | |
const Layer * | m_nextLayer |
BinUtility for next/previous decision. More... | |
const BinUtility * | m_binUtility |
Enclosing TrackingVolume. More... | |
const TrackingVolume * | m_enclosingTrackingVolume |
Enclosing DetachedTrackingVolume. More... | |
const DetachedTrackingVolume * | m_enclosingDetachedTrackingVolume |
LayerIndex | m_index |
LayerIndex. More... | |
int | m_layerType |
active passive layer More... | |
double | m_ref |
reference measure for local coordinate convertors More... | |
Base Class for a Detector Layer in the Tracking realm. An actual implemented Detector Layer inheriting from this base class has to inherit from a specific type of Surface as well. In addition, a Layer can carry:
Trk::Layer::Layer | ( | const LayerMaterialProperties & | laymatprop, |
double | thickness = 0. , |
||
std::unique_ptr< OverlapDescriptor > | od = nullptr , |
||
int | ltype = int(passive) |
||
) |
Trk::Layer::Layer | ( | std::unique_ptr< SurfaceArray > | surfaceArray, |
double | thickness = 0. , |
||
std::unique_ptr< OverlapDescriptor > | olap = nullptr , |
||
int | ltype = int(passive) |
||
) |
Trk::Layer::Layer | ( | std::unique_ptr< SurfaceArray > | surfaceArray, |
const LayerMaterialProperties & | laymatprop, | ||
double | thickness = 0. , |
||
std::unique_ptr< OverlapDescriptor > | od = nullptr , |
||
int | ltype = int(passive) |
||
) |
Constructor with MaterialProperties and pointer SurfaceArray (passing ownership)
Definition at line 63 of file Layer.cxx.
|
virtualdefault |
Destructor.
void Trk::Layer::assignMaterialProperties | ( | const LayerMaterialProperties & | prop, |
double | scale = 1.0 |
||
) |
const BinUtility* Trk::Layer::binUtility | ( | ) | const |
access the BinUtility
void Trk::Layer::compactify | ( | size_t & | cSurfaces, |
size_t & | tSurfaces | ||
) |
size_t Trk::Layer::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
size_t Trk::Layer::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 Trk::Layer::encloseDetachedTrackingVolume | ( | const DetachedTrackingVolume & | tvol | ) |
void Trk::Layer::encloseTrackingVolume | ( | const TrackingVolume & | tvol | ) |
private method to set the enclosed detached TV
const DetachedTrackingVolume* Trk::Layer::enclosingDetachedTrackingVolume | ( | ) | const |
get the confining DetachedTrackingVolume
const TrackingVolume* Trk::Layer::enclosingTrackingVolume | ( | ) | const |
get the confining TrackingVolume
const Trk::MaterialProperties * Trk::Layer::fullUpdateMaterialProperties | ( | const TrackParameters & | par | ) | const |
size_t Trk::Layer::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
propagate TrackingGeometry owner downstream
double Trk::Layer::getRef | ( | ) | const |
get the reference measure
|
inlinevirtual |
Has sub-structure method:
|
virtual |
isOnLayer() method, using isOnSurface() with Layer specific tolerance
Reimplemented in Trk::NavigationLayer, and Trk::MaterialLayer.
Definition at line 149 of file Layer.cxx.
const LayerIndex& Trk::Layer::layerIndex | ( | ) | const |
get the layerIndex
const LayerMaterialProperties* Trk::Layer::layerMaterialProperties | ( | ) | const |
getting the LayerMaterialProperties including full/pre/post update
int Trk::Layer::layerType | ( | ) | const |
get the Layer coding
|
pure virtual |
move the Layer
Implemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::SubtractedCylinderLayer, Trk::SubtractedPlaneLayer, Trk::NavigationLayer, and Trk::MaterialLayer.
const Trk::Layer * Trk::Layer::nextLayer | ( | bool | skipNavLayer = false | ) | const |
const Trk::Layer * Trk::Layer::nextLayer | ( | const Amg::Vector3D & | gp, |
const Amg::Vector3D & | udir | ||
) | const |
bool Trk::Layer::onLayer | ( | const T & | parameters, |
const BoundaryCheck & | bcheck = BoundaryCheck(true) |
||
) | const |
templated on Layer method
|
protected |
const OverlapDescriptor* Trk::Layer::overlapDescriptor | ( | ) | const |
gettint hte overlap descriptor
|
inlinevirtual |
getting the MaterialProperties back - for pre-update
Reimplemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::NavigationLayer, Trk::SubtractedCylinderLayer, and Trk::SubtractedPlaneLayer.
|
inlinevirtual |
getting the MaterialProperties back - for pre-update
Reimplemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::NavigationLayer, Trk::SubtractedCylinderLayer, and Trk::SubtractedPlaneLayer.
const Trk::Layer * Trk::Layer::previousLayer | ( | bool | skipNavLayer = false | ) | const |
void Trk::Layer::registerLayerIndex | ( | const LayerIndex & | lIdx | ) |
register Volume associated to the layer
|
pure virtual |
resize and reposition layer : dedicated for entry layers
Implemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::NavigationLayer, Trk::SubtractedCylinderLayer, Trk::SubtractedPlaneLayer, and Trk::MaterialLayer.
|
pure virtual |
private method to set enclosing TrackingVolume, called by friend class only optionally, the layer can be resized to the dimensions of the TrackingVolume
Implemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::NavigationLayer, Trk::SubtractedCylinderLayer, Trk::SubtractedPlaneLayer, and Trk::MaterialLayer.
void Trk::Layer::setBinUtility | ( | const BinUtility * | ) |
set the BinUtility
void Trk::Layer::setLayerType | ( | int | identifier | ) |
set the Layer coding
void Trk::Layer::setRef | ( | double | ) |
set the reference measure
const Trk::Surface * Trk::Layer::subSurface | ( | const Amg::Vector2D & | lp | ) | const |
If no subSurface array is defined or no subSurface can be found to the given Amg::Vector2D, it would return 0.
const Trk::Surface * Trk::Layer::subSurface | ( | const Amg::Vector3D & | gp | ) | const |
If no subSurface array is defined or no subSurface can be found to the given Amg::Vector3D, it would return 0.
const Trk::Surface * Trk::Layer::subSurfaceReference | ( | unsigned int | idx = 0 | ) | const |
Return a reference sub surface of the layer, usually the first one in the array.
Definition at line 131 of file Layer.cxx.
SurfaceArray* Trk::Layer::surfaceArray | ( | ) |
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
const SurfaceArray* Trk::Layer::surfaceArray | ( | ) | const |
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
|
virtual |
Surface seen on approach - if not defined differently, it is the surfaceRepresentation()
Reimplemented in Trk::DiscLayer, and Trk::CylinderLayer.
Transforms the layer into a Surface representation for extrapolation.
Implemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::NavigationLayer, Trk::SubtractedCylinderLayer, Trk::SubtractedPlaneLayer, and Trk::MaterialLayer.
|
pure virtual |
double Trk::Layer::thickness | ( | ) | const |
Return the Thickness of the Layer.
|
protected |
Enclosing TrackingVolume.
|
protected |
|
protected |
Enclosing DetachedTrackingVolume.
|
protected |
|
protected |
|
protected |
BinUtility for next/previous decision.
|
protected |
|
protected |
|
protected |