ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Trk::Layer Class Referenceabstract

#include <Layer.h>

Inheritance diagram for Trk::Layer:
Collaboration diagram for Trk::Layer:

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 SurfaceArraysurfaceArray () const
 Return the entire SurfaceArray, returns nullptr if no SurfaceArray. More...
 
SurfaceArraysurfaceArray ()
 Return the entire SurfaceArray, returns nullptr if no SurfaceArray. More...
 
const SurfacesubSurface (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 SurfacesubSurface (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 SurfacesubSurfaceReference (unsigned int idx=0) const
 Return a reference sub surface of the layer, usually the first one in the array. More...
 
virtual const SurfacesurfaceRepresentation () const =0
 Transforms the layer into a Surface representation for extrapolation. More...
 
virtual SurfacesurfaceRepresentation ()=0
 
double thickness () const
 Return the Thickness of the Layer. More...
 
template<class T >
bool onLayer (const T &parameters, 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 LayerMaterialPropertieslayerMaterialProperties () const
 getting the LayerMaterialProperties including full/pre/post update More...
 
const MaterialPropertiesfullUpdateMaterialProperties (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 OverlapDescriptoroverlapDescriptor () const
 gettint hte overlap descriptor More...
 
const LayerpreviousLayer (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 LayernextLayer (const Amg::Vector3D &gp, const Amg::Vector3D &udir) const
 getting the next/previous Layer if registered - unit for direction vector required More...
 
const LayernextLayer (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 BinUtilitybinUtility () const
 access the BinUtility More...
 
void setBinUtility (const BinUtility *)
 set the BinUtility More...
 
virtual const SurfacesurfaceOnApproach (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 TrackingVolumeenclosingTrackingVolume () const
 get the confining TrackingVolume More...
 
const DetachedTrackingVolumeenclosingDetachedTrackingVolume () const
 get the confining DetachedTrackingVolume More...
 
const LayerIndexlayerIndex () 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 VolumerepresentingVolume () 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...
 
Layeroperator= (const Layer &lay)
 Assignment operator for Derived classes. More...
 

Protected Attributes

std::unique_ptr< SurfaceArraym_surfaceArray
 MaterialPoperties of this layer Surface. More...
 
std::unique_ptr< LayerMaterialPropertiesm_layerMaterialProperties
 thickness of the Layer More...
 
double m_layerThickness
 descriptor for overlap/next surface (owning ptr) More...
 
std::unique_ptr< OverlapDescriptorm_overlapDescriptor
 
const Layerm_previousLayer
 < the previous Layer according to BinGenUtils More...
 
const Layerm_nextLayer
 BinUtility for next/previous decision. More...
 
const BinUtilitym_binUtility
 Enclosing TrackingVolume. More...
 
const TrackingVolumem_enclosingTrackingVolume
 Enclosing DetachedTrackingVolume. More...
 
const DetachedTrackingVolumem_enclosingDetachedTrackingVolume
 
LayerIndex m_index
 LayerIndex. More...
 
int m_layerType
 active passive layer More...
 
double m_ref
 reference measure for local coordinate convertors More...
 

Detailed Description

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:

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Christos Anastopoulos (Athena MT)

Definition at line 73 of file Layer.h.

Constructor & Destructor Documentation

◆ Layer() [1/5]

Trk::Layer::Layer ( )

Default Constructor.

Definition at line 18 of file Layer.cxx.

19  : m_surfaceArray(nullptr),
21  m_layerThickness(0.),
22  m_overlapDescriptor(nullptr),
23  m_previousLayer(nullptr),
24  m_nextLayer(nullptr),
25  m_binUtility(nullptr),
28  m_index(-1),
30  m_ref(0.) {}

◆ Layer() [2/5]

Trk::Layer::Layer ( const LayerMaterialProperties laymatprop,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor od = nullptr,
int  ltype = int(passive) 
)

Constructor with MaterialProperties.

Definition at line 32 of file Layer.cxx.

35  : m_surfaceArray(nullptr),
36  m_layerMaterialProperties(laymatprop.clone()),
38  m_overlapDescriptor(std::move(olap)),
39  m_previousLayer(nullptr),
40  m_nextLayer(nullptr),
41  m_binUtility(nullptr),
44  m_index(-1),
45  m_layerType(laytyp),
46  m_ref(0.) {}

◆ Layer() [3/5]

Trk::Layer::Layer ( std::unique_ptr< SurfaceArray surfaceArray,
double  thickness = 0.,
std::unique_ptr< OverlapDescriptor olap = nullptr,
int  ltype = int(passive) 
)

Constructor with pointer to SurfaceArray (passing ownership)

Definition at line 48 of file Layer.cxx.

50  : m_surfaceArray(std::move(surfaceArray)),
53  m_overlapDescriptor(std::move(olap)),
54  m_previousLayer(nullptr),
55  m_nextLayer(nullptr),
56  m_binUtility(nullptr),
59  m_index(-1),
60  m_layerType(laytyp),
61  m_ref(0.) {}

◆ Layer() [4/5]

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.

67  : m_surfaceArray(std::move(surfaceArray)),
68  m_layerMaterialProperties(laymatprop.clone()),
70  m_overlapDescriptor(std::move(olap)),
71  m_previousLayer(nullptr),
72  m_nextLayer(nullptr),
73  m_binUtility(nullptr),
76  m_index(-1),
77  m_layerType(laytyp),
78  m_ref(0.) {}

◆ ~Layer()

virtual Trk::Layer::~Layer ( )
virtualdefault

Destructor.

◆ Layer() [5/5]

Trk::Layer::Layer ( const Layer lay)
protected

Copy Constructor for Derived classes.

Definition at line 80 of file Layer.cxx.

81  : m_surfaceArray(lay.m_surfaceArray ? lay.m_surfaceArray->clone()
82  : nullptr),
83  m_layerMaterialProperties(lay.m_layerMaterialProperties
84  ? lay.m_layerMaterialProperties->clone()
85  : nullptr),
86  m_layerThickness(lay.m_layerThickness),
88  lay.m_overlapDescriptor ? lay.m_overlapDescriptor->clone() : nullptr),
89  m_previousLayer(nullptr),
90  m_nextLayer(nullptr),
91  m_binUtility(nullptr),
94  m_index(-1),
95  m_layerType(lay.m_layerType),
96  m_ref(lay.m_ref) {}

Member Function Documentation

◆ assignMaterialProperties()

void Trk::Layer::assignMaterialProperties ( const LayerMaterialProperties prop,
double  scale = 1.0 
)

assignMaterialPropeties

Definition at line 191 of file Layer.cxx.

192  {
193  m_layerMaterialProperties.reset(prop.clone());
194  if (scale != 1.0) {
196  }
197 }

◆ binUtility()

const BinUtility* Trk::Layer::binUtility ( ) const

access the BinUtility

◆ compactify()

void Trk::Layer::compactify ( size_t &  cSurfaces,
size_t &  tSurfaces 
)

register layer index for material map registration

Definition at line 200 of file Layer.cxx.

201 {
202  // set the layer surface representation
203  ++tSurfaces;
204  if (surfaceRepresentation().owner() == Trk::noOwn) {
206  ++cSurfaces;
207  }
208  // set the subsurface representation, usually already owned by DetElement
209  if (m_surfaceArray) {
210  BinnedArraySpan<Trk::Surface * const> surfaces = m_surfaceArray->arrayObjects();
211  for (Trk::Surface * const sIter : surfaces) {
212  if (sIter && (*sIter).owner() == Trk::noOwn) {
213  (*sIter).setOwner(Trk::TGOwn);
214  ++cSurfaces;
215  }
216  ++tSurfaces;
217  }
218  }
219 }

◆ compatibleSurfaces() [1/2]

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

◆ compatibleSurfaces() [2/2]

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

◆ encloseDetachedTrackingVolume()

void Trk::Layer::encloseDetachedTrackingVolume ( const DetachedTrackingVolume tvol)

◆ encloseTrackingVolume()

void Trk::Layer::encloseTrackingVolume ( const TrackingVolume tvol)

private method to set the enclosed detached TV

◆ enclosingDetachedTrackingVolume()

const DetachedTrackingVolume* Trk::Layer::enclosingDetachedTrackingVolume ( ) const

get the confining DetachedTrackingVolume

◆ enclosingTrackingVolume()

const TrackingVolume* Trk::Layer::enclosingTrackingVolume ( ) const

get the confining TrackingVolume

◆ fullUpdateMaterialProperties()

const Trk::MaterialProperties * Trk::Layer::fullUpdateMaterialProperties ( const TrackParameters par) const

getting the MaterialProperties back - for full update

Definition at line 183 of file Layer.cxx.

184  {
186  return m_layerMaterialProperties->fullMaterial(parm.position());
187  }
188  return nullptr;
189 }

◆ getCompatibleSurfaces()

template<class T >
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

◆ getRef()

double Trk::Layer::getRef ( ) const

get the reference measure

◆ hasSubStructure()

bool Trk::Layer::hasSubStructure ( bool  resolveSensitive = false) const
inlinevirtual

Has sub-structure method:

  • sub-structure depending on : (a) only when required to resolve sub surfaces for sensitive hits (b) also material is ordered with sub structure

Definition at line 252 of file Layer.cxx.

252  {
253  return resolveSensitive && m_surfaceArray;
254 }

◆ isOnLayer()

bool Trk::Layer::isOnLayer ( const Amg::Vector3D gp,
const BoundaryCheck bcheck = BoundaryCheck(true) 
) const
virtual

isOnLayer() method, using isOnSurface() with Layer specific tolerance

Reimplemented in Trk::NavigationLayer, and Trk::MaterialLayer.

Definition at line 149 of file Layer.cxx.

150  {
151  return (surfaceRepresentation())
152  .isOnSurface(gp, bchk, 0.5 * m_layerThickness);
153 }

◆ layerIndex()

const LayerIndex& Trk::Layer::layerIndex ( ) const

get the layerIndex

◆ layerMaterialProperties()

const LayerMaterialProperties* Trk::Layer::layerMaterialProperties ( ) const

getting the LayerMaterialProperties including full/pre/post update

◆ layerType()

int Trk::Layer::layerType ( ) const

get the Layer coding

◆ moveLayer()

virtual void Trk::Layer::moveLayer ( Amg::Transform3D )
pure virtual

◆ nextLayer() [1/2]

const Trk::Layer * Trk::Layer::nextLayer ( bool  skipNavLayer = false) const

getting what's stored to be the next Layer, boolean to skip navigation layers

Definition at line 165 of file Layer.cxx.

165  {
166  if (!skipNavLayer) return m_nextLayer;
167  const Trk::Layer* nextMatLayer = m_nextLayer;
168  // get the next Material layer
169  while (nextMatLayer && !nextMatLayer->layerMaterialProperties() &&
170  !nextMatLayer->surfaceArray())
171  nextMatLayer = nextMatLayer->nextLayer();
172  return nextMatLayer;
173 }

◆ nextLayer() [2/2]

const Trk::Layer * Trk::Layer::nextLayer ( const Amg::Vector3D gp,
const Amg::Vector3D udir 
) const

getting the next/previous Layer if registered - unit for direction vector required

Definition at line 175 of file Layer.cxx.

176  {
177  // no binutility -> no chance to find out the direction
178  if (!m_binUtility) return nullptr;
180  : m_previousLayer;
181 }

◆ onLayer()

template<class T >
bool Trk::Layer::onLayer ( const T &  parameters,
const BoundaryCheck bcheck = BoundaryCheck(true) 
) const

templated on Layer method

◆ operator=()

Trk::Layer & Trk::Layer::operator= ( const Layer lay)
protected

Assignment operator for Derived classes.

SurfaceArray on this layer Surface (owning ptr)

Definition at line 98 of file Layer.cxx.

98  {
99  if (this != &lay) {
100  m_layerThickness = lay.m_layerThickness;
101  m_enclosingDetachedTrackingVolume = lay.m_enclosingDetachedTrackingVolume;
102  m_overlapDescriptor.reset(
103  (lay.m_overlapDescriptor) ? lay.m_overlapDescriptor->clone() : nullptr);
104  m_surfaceArray.reset((lay.m_surfaceArray) ? lay.m_surfaceArray->clone()
105  : nullptr);
106  m_layerMaterialProperties.reset(lay.m_layerMaterialProperties->clone());
107 
108  // just assign by pointer
109  m_nextLayer = lay.m_nextLayer;
111  m_binUtility = lay.m_binUtility;
112  m_enclosingTrackingVolume = lay.m_enclosingTrackingVolume;
113  //
114  m_index = lay.m_index;
115  m_layerType = lay.m_layerType;
116  m_ref = lay.m_ref;
117  }
118  return (*this);
119 }

◆ overlapDescriptor()

const OverlapDescriptor* Trk::Layer::overlapDescriptor ( ) const

gettint hte overlap descriptor

◆ postUpdateMaterialFactor()

virtual double Trk::Layer::postUpdateMaterialFactor ( const TrackParameters ,
PropDirection   
) const
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.

Definition at line 151 of file Layer.h.

152  {
153  return 0.;
154  }

◆ preUpdateMaterialFactor()

virtual double Trk::Layer::preUpdateMaterialFactor ( const TrackParameters ,
PropDirection   
) const
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.

Definition at line 145 of file Layer.h.

146  {
147  return 1.;
148  }

◆ previousLayer()

const Trk::Layer * Trk::Layer::previousLayer ( bool  skipNavLayer = false) const

getting what's stored to be the previous Layer, boolean to skip navigation layers

Definition at line 155 of file Layer.cxx.

155  {
156  if (!skipNavLayer) return m_previousLayer;
157  const Trk::Layer* prevMatLayer = m_previousLayer;
158  // get the previoys Material layer
159  while (prevMatLayer && !prevMatLayer->layerMaterialProperties() &&
160  !prevMatLayer->surfaceArray())
161  prevMatLayer = prevMatLayer->previousLayer();
162  return prevMatLayer;
163 }

◆ registerLayerIndex()

void Trk::Layer::registerLayerIndex ( const LayerIndex lIdx)

◆ registerRepresentingVolume()

void Trk::Layer::registerRepresentingVolume ( const Volume theVol)

register Volume associated to the layer

◆ representingVolume()

const Volume* Trk::Layer::representingVolume ( ) const

get the Volume associated to the layer

◆ resizeAndRepositionLayer()

virtual void Trk::Layer::resizeAndRepositionLayer ( const VolumeBounds vBounds,
const Amg::Vector3D vCenter,
double  envelope = 1. 
)
pure virtual

◆ resizeLayer()

virtual void Trk::Layer::resizeLayer ( const VolumeBounds ,
double   
)
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

  • Bounds of the Surface are resized
  • MaterialProperties dimensions are resized
  • SubSurface array boundaries are NOT resized resize layer to the TrackingVolume dimensions - to be overloaded by the extended classes

Implemented in Trk::CylinderLayer, Trk::DiscLayer, Trk::ConeLayer, Trk::PlaneLayer, Trk::NavigationLayer, Trk::SubtractedCylinderLayer, Trk::SubtractedPlaneLayer, and Trk::MaterialLayer.

◆ setBinUtility()

void Trk::Layer::setBinUtility ( const BinUtility )

set the BinUtility

◆ setLayerType()

void Trk::Layer::setLayerType ( int  identifier)

set the Layer coding

◆ setNextLayer()

void Trk::Layer::setNextLayer ( const Layer )

set the next Layer

◆ setPreviousLayer()

void Trk::Layer::setPreviousLayer ( const Layer )

set the previous Layer

◆ setRef()

void Trk::Layer::setRef ( double  )

set the reference measure

◆ subSurface() [1/2]

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.

Definition at line 126 of file Layer.cxx.

126  {
127  if (m_surfaceArray) return m_surfaceArray->object(lp);
128  return nullptr;
129 }

◆ subSurface() [2/2]

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.

Definition at line 121 of file Layer.cxx.

121  {
122  if (m_surfaceArray) return m_surfaceArray->object(gp);
123  return nullptr;
124 }

◆ subSurfaceReference()

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.

  • if an index is given (and the index is in range), this surface is returned

Definition at line 131 of file Layer.cxx.

131  {
132  // the reference surface
133  const Trk::Surface* referenceSurface = nullptr;
134  if (m_surfaceArray) {
135  // get a reference surface
136  Trk::BinnedArraySpan<Trk::Surface const * const> surfaces = std::as_const(*m_surfaceArray).arrayObjects();
137  // get a reference surface
138  unsigned int rfSurfaces = surfaces.size();
139  if (idx && idx < rfSurfaces) return surfaces[idx];
140  // get the first one which is non zero
141  for (unsigned int rsf = 0; rsf < rfSurfaces; ++rsf) {
142  referenceSurface = surfaces[rsf];
143  if (referenceSurface) break;
144  }
145  }
146  return referenceSurface;
147 }

◆ surfaceArray() [1/2]

SurfaceArray* Trk::Layer::surfaceArray ( )

Return the entire SurfaceArray, returns nullptr if no SurfaceArray.

◆ surfaceArray() [2/2]

const SurfaceArray* Trk::Layer::surfaceArray ( ) const

Return the entire SurfaceArray, returns nullptr if no SurfaceArray.

◆ surfaceOnApproach()

const Trk::Surface & Trk::Layer::surfaceOnApproach ( const Amg::Vector3D pos,
const Amg::Vector3D dir,
PropDirection  pdir,
const BoundaryCheck bcheck,
bool  resolveSubSurfaces = 0,
const ICompatibilityEstimator *  ice = nullptr 
) const
virtual

Surface seen on approach - if not defined differently, it is the surfaceRepresentation()

Reimplemented in Trk::DiscLayer, and Trk::CylinderLayer.

Definition at line 223 of file Layer.cxx.

226  {
227  return surfaceRepresentation();
228 }

◆ surfaceRepresentation() [1/2]

virtual const Surface& Trk::Layer::surfaceRepresentation ( ) const
pure virtual

◆ surfaceRepresentation() [2/2]

virtual Surface& Trk::Layer::surfaceRepresentation ( )
pure virtual

◆ thickness()

double Trk::Layer::thickness ( ) const

Return the Thickness of the Layer.

Member Data Documentation

◆ m_binUtility

const BinUtility* Trk::Layer::m_binUtility
protected

Enclosing TrackingVolume.

Definition at line 301 of file Layer.h.

◆ m_enclosingDetachedTrackingVolume

const DetachedTrackingVolume* Trk::Layer::m_enclosingDetachedTrackingVolume
protected

Definition at line 305 of file Layer.h.

◆ m_enclosingTrackingVolume

const TrackingVolume* Trk::Layer::m_enclosingTrackingVolume
protected

Enclosing DetachedTrackingVolume.

Definition at line 303 of file Layer.h.

◆ m_index

LayerIndex Trk::Layer::m_index
protected

LayerIndex.

Definition at line 307 of file Layer.h.

◆ m_layerMaterialProperties

std::unique_ptr<LayerMaterialProperties> Trk::Layer::m_layerMaterialProperties
protected

thickness of the Layer

Definition at line 289 of file Layer.h.

◆ m_layerThickness

double Trk::Layer::m_layerThickness
protected

descriptor for overlap/next surface (owning ptr)

Definition at line 291 of file Layer.h.

◆ m_layerType

int Trk::Layer::m_layerType
protected

active passive layer

Definition at line 308 of file Layer.h.

◆ m_nextLayer

const Layer* Trk::Layer::m_nextLayer
protected

BinUtility for next/previous decision.

Definition at line 299 of file Layer.h.

◆ m_overlapDescriptor

std::unique_ptr<OverlapDescriptor> Trk::Layer::m_overlapDescriptor
protected

Definition at line 293 of file Layer.h.

◆ m_previousLayer

const Layer* Trk::Layer::m_previousLayer
protected

< the previous Layer according to BinGenUtils

next Layer according to BinGenUtils

Definition at line 297 of file Layer.h.

◆ m_ref

double Trk::Layer::m_ref
protected

reference measure for local coordinate convertors

Definition at line 309 of file Layer.h.

◆ m_surfaceArray

std::unique_ptr<SurfaceArray> Trk::Layer::m_surfaceArray
protected

MaterialPoperties of this layer Surface.

Definition at line 287 of file Layer.h.


The documentation for this class was generated from the following files:
Trk::BinUtility::orderDirection
LayerOrder orderDirection(const Amg::Vector3D &position, const Amg::Vector3D &direction, size_t ba=0) const
Return the oder direciton for fast interlinking.
Definition: BinUtility.h:171
Trk::Layer::m_previousLayer
const Layer * m_previousLayer
< the previous Layer according to BinGenUtils
Definition: Layer.h:297
Trk::Surface::setOwner
void setOwner(SurfaceOwner x)
set Ownership
Trk::noOwn
@ noOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:54
Trk::next
@ next
Definition: BinningData.h:33
Trk::Layer::m_layerMaterialProperties
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
Definition: Layer.h:289
Trk::Layer::m_overlapDescriptor
std::unique_ptr< OverlapDescriptor > m_overlapDescriptor
Definition: Layer.h:293
Trk::Layer::m_surfaceArray
std::unique_ptr< SurfaceArray > m_surfaceArray
MaterialPoperties of this layer Surface.
Definition: Layer.h:287
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
Trk::Layer::surfaceArray
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::Layer::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
Trk::active
@ active
Definition: Layer.h:48
Trk::Layer::m_layerType
int m_layerType
active passive layer
Definition: Layer.h:308
Trk::Layer::nextLayer
const Layer * nextLayer(const Amg::Vector3D &gp, const Amg::Vector3D &udir) const
getting the next/previous Layer if registered - unit for direction vector required
Definition: Layer.cxx:175
Trk::Layer::m_enclosingTrackingVolume
const TrackingVolume * m_enclosingTrackingVolume
Enclosing DetachedTrackingVolume.
Definition: Layer.h:303
Trk::Layer::m_ref
double m_ref
reference measure for local coordinate convertors
Definition: Layer.h:309
Trk::TGOwn
@ TGOwn
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:55
Trk::Layer::thickness
double thickness() const
Return the Thickness of the Layer.
Trk::Layer::m_nextLayer
const Layer * m_nextLayer
BinUtility for next/previous decision.
Definition: Layer.h:299
Trk::Layer::m_binUtility
const BinUtility * m_binUtility
Enclosing TrackingVolume.
Definition: Layer.h:301
Trk::Layer::previousLayer
const Layer * previousLayer(bool skipNavLayer=false) const
getting what's stored to be the previous Layer, boolean to skip navigation layers
Definition: Layer.cxx:155
Trk::Layer::m_index
LayerIndex m_index
LayerIndex.
Definition: Layer.h:307
Trk::Layer::layerMaterialProperties
const LayerMaterialProperties * layerMaterialProperties() const
getting the LayerMaterialProperties including full/pre/post update
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
Trk::Layer::m_layerThickness
double m_layerThickness
descriptor for overlap/next surface (owning ptr)
Definition: Layer.h:291
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::BinnedArraySpan
std::span< T > BinnedArraySpan
Definition: BinnedArray.h:34
Trk::Layer::m_enclosingDetachedTrackingVolume
const DetachedTrackingVolume * m_enclosingDetachedTrackingVolume
Definition: Layer.h:305
Trk::Layer
Definition: Layer.h:73