Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CylinderLayer.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // CylinderLayer.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETRY_CYLINDERLAYER_H
10 #define TRKGEOMETRY_CYLINDERLAYER_H
11 
12 class MsgStream;
13 
14 // Amg
16 // Trk
20 #include "TrkGeometry/Layer.h"
22 // STL sorting
23 #include <algorithm>
24 
25 namespace Trk {
26 
27 class CylinderBounds;
28 class LayerMaterialProperties;
29 class OverlapDescriptor;
30 
41  : public CylinderSurface
42  , public Layer
43 {
44 public:
47 
50  std::shared_ptr<CylinderBounds> cbounds,
51  const LayerMaterialProperties& laymatprop,
52  double thickness = 0.,
53  std::unique_ptr<OverlapDescriptor> od = nullptr,
54  int laytyp = int(Trk::active));
55 
58  const LayerMaterialProperties& laymatprop,
59  double thickness = 0.,
60  std::unique_ptr<OverlapDescriptor> od = nullptr,
61  int laytyp = int(Trk::active));
62 
69  std::shared_ptr<CylinderBounds> cbounds,
70  std::unique_ptr<SurfaceArray> surfaceArray,
71  double thickness = 0.,
72  std::unique_ptr<OverlapDescriptor> od = nullptr,
73  IApproachDescriptor* ad = nullptr,
74  int laytyp = int(Trk::active));
75 
79  std::shared_ptr<CylinderBounds> cbounds,
80  std::unique_ptr<SurfaceArray> surfaceArray,
81  const LayerMaterialProperties& laymatprop,
82  double thickness = 0.,
83  std::unique_ptr<OverlapDescriptor> od = nullptr,
84  IApproachDescriptor* ad = nullptr,
85  int laytyp = int(Trk::active));
86 
89  CylinderLayer(std::shared_ptr<CylinderBounds> cbounds,
90  const LayerMaterialProperties& laymatprop,
91  double thickness = 0.,
92  std::unique_ptr<OverlapDescriptor> od = nullptr,
93  int laytyp = int(Trk::active));
94 
97  CylinderLayer(std::shared_ptr<CylinderBounds> cbounds,
98  std::unique_ptr<SurfaceArray> surfaceArray,
99  double thickness = 0.,
100  std::unique_ptr<OverlapDescriptor> od = nullptr,
101  IApproachDescriptor* ad = nullptr,
102  int laytyp = int(Trk::active));
103 
106  CylinderLayer(std::shared_ptr<CylinderBounds> cbounds,
107  std::unique_ptr<SurfaceArray> surfaceArray,
108  const LayerMaterialProperties& laymatprop,
109  double thickness = 0.,
110  std::unique_ptr<OverlapDescriptor> od = nullptr,
111  IApproachDescriptor* ad = nullptr,
112  int laytyp = int(Trk::active));
113 
115  CylinderLayer(const CylinderLayer& cla);
116 
118  CylinderLayer(const CylinderLayer& cla, const Amg::Transform3D& tr);
119 
122 
124  virtual ~CylinderLayer() = default;
125 
127  virtual const CylinderSurface& surfaceRepresentation() const override final;
128  virtual CylinderSurface& surfaceRepresentation() override final;
129 
131  virtual double preUpdateMaterialFactor(
133  Trk::PropDirection dir) const override final;
134 
136  virtual double postUpdateMaterialFactor(
138  Trk::PropDirection dir) const override final;
139 
144  const BoundaryCheck& bcheck, bool resolveSubSurfaces = 0,
145  const ICompatibilityEstimator* ice = nullptr) const override final;
146 
148  virtual void moveLayer(Amg::Transform3D& shift) override final;
149 
152  virtual void resizeLayer(const VolumeBounds& vBounds,
153  double envelope) override final;
154 
155 
157  virtual void resizeAndRepositionLayer(const VolumeBounds& vBounds,
158  const Amg::Vector3D& cCenter,
159  double envelope) override final;
160 
161 
162  private:
166  const Amg::Vector3D& dir,
167  const BoundaryCheck& bcheck) const;
168 
171 
172  protected:
175 };
176 
181  public:
184 
185  bool operator()(const CylinderLayer* one, const CylinderLayer* two) const {
186  return (one->surfaceRepresentation().bounds().r() <
187  two->surfaceRepresentation().bounds().r());
188  }
189 };
190 
191 } // namespace Trk
192 
193 #endif // TRKGEOMETY_CYLINDERLAYER_H
194 
Trk::CylinderLayer::CylinderLayer
CylinderLayer()
Default Constructor.
Definition: CylinderLayer.h:46
ApproachDescriptor.h
Trk::CylinderLayer::~CylinderLayer
virtual ~CylinderLayer()=default
Destructor.
BinnedArray.h
Trk::CylinderLayer::operator=
CylinderLayer & operator=(const CylinderLayer &)
Assignment operator for CylinderLayers.
Definition: CylinderLayer.cxx:153
Trk::CylinderLayer::resizeAndRepositionLayer
virtual void resizeAndRepositionLayer(const VolumeBounds &vBounds, const Amg::Vector3D &cCenter, double envelope) override final
Resize the layer to the tracking volume.
Definition: CylinderLayer.cxx:318
Trk::CylinderLayer::surfaceOnApproach
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 override final
Surface seen on approach - if not defined differently, it is the surfaceRepresentation()
Definition: CylinderLayer.cxx:279
Trk::CylinderLayer::surfaceRepresentation
virtual const CylinderSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition: CylinderLayer.cxx:165
Trk::CylinderLayer::preUpdateMaterialFactor
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
Definition: CylinderLayer.cxx:176
Trk::one
@ one
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:22
Trk::CylinderLayer::approachSurface
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()
Definition: CylinderLayer.cxx:248
PropDirection.h
Layer.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
protected
#define protected
Definition: DetDescrConditionsDict_dict_fixes.cxx:14
Trk::IApproachDescriptor
Definition: IApproachDescriptor.h:45
Trk::Layer::surfaceArray
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
GeoPrimitives.h
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
Trk::CylinderLayer::buildApproachDescriptor
void buildApproachDescriptor()
build approach surfaces
Definition: CylinderLayer.cxx:292
Trk::active
@ active
Definition: Layer.h:48
Trk::two
@ two
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:23
Trk::CylinderSurface
Definition: CylinderSurface.h:55
Trk::LayerMaterialProperties
Definition: LayerMaterialProperties.h:62
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
CylinderSurface.h
Trk::ParametersBase
Definition: ParametersBase.h:55
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::CylinderLayer
Definition: CylinderLayer.h:43
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::Layer::thickness
double thickness() const
Return the Thickness of the Layer.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::CylinderLayerSorterR::CylinderLayerSorterR
CylinderLayerSorterR()
Default Constructor.
Definition: CylinderLayer.h:183
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::CylinderLayerSorterR
Definition: CylinderLayer.h:180
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::CylinderLayer::postUpdateMaterialFactor
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
Definition: CylinderLayer.cxx:187
Trk::CylinderLayer::moveLayer
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer
Definition: CylinderLayer.cxx:197
LArNewCalib_Delay_OFC_Cali.pdir
string pdir
Definition: LArNewCalib_Delay_OFC_Cali.py:182
Trk::CylinderLayer::m_approachDescriptor
std::unique_ptr< IApproachDescriptor > m_approachDescriptor
surfaces on approach to the layer
Definition: CylinderLayer.h:174
Trk::CylinderLayer::resizeLayer
virtual void resizeLayer(const VolumeBounds &vBounds, double envelope) override final
Resize the layer to the tracking volume - only works for CylinderVolumeBouns.
Definition: CylinderLayer.cxx:207
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Trk::CylinderLayerSorterR::operator()
bool operator()(const CylinderLayer *one, const CylinderLayer *two) const
Definition: CylinderLayer.h:185
Trk::Layer
Definition: Layer.h:73