ATLAS Offline Software
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 
40 class CylinderLayer final
41  : public CylinderSurface
42  , public Layer
43 {
44 public:
47 
50  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  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  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 
90  const LayerMaterialProperties& laymatprop,
91  double thickness = 0., std::unique_ptr<OverlapDescriptor> od = nullptr,
92  int laytyp = int(Trk::active));
93 
96  CylinderLayer(CylinderBounds* cbounds, std::unique_ptr<SurfaceArray> surfaceArray,
97  double thickness = 0., std::unique_ptr<OverlapDescriptor> od = nullptr,
98  IApproachDescriptor* ad = nullptr,
99  int laytyp = int(Trk::active));
100 
103  CylinderLayer(CylinderBounds* cbounds, std::unique_ptr<SurfaceArray> surfaceArray,
104  const LayerMaterialProperties& laymatprop,
105  double thickness = 0., std::unique_ptr<OverlapDescriptor> od = nullptr,
106  IApproachDescriptor* ad = nullptr,
107  int laytyp = int(Trk::active));
108 
110  CylinderLayer(const CylinderLayer& cla);
111 
113  CylinderLayer(const CylinderLayer& cla, const Amg::Transform3D& tr);
114 
117 
119  virtual ~CylinderLayer() = default;
120 
122  virtual const CylinderSurface& surfaceRepresentation() const override final;
123  virtual CylinderSurface& surfaceRepresentation() override final;
124 
126  virtual double preUpdateMaterialFactor(
128  Trk::PropDirection dir) const override final;
129 
131  virtual double postUpdateMaterialFactor(
133  Trk::PropDirection dir) const override final;
134 
139  const BoundaryCheck& bcheck, bool resolveSubSurfaces = 0,
140  const ICompatibilityEstimator* ice = nullptr) const override final;
141 
143  virtual void moveLayer(Amg::Transform3D& shift) override final;
144 
147  virtual void resizeLayer(const VolumeBounds& vBounds,
148  double envelope) override final;
149 
150 
152  virtual void resizeAndRepositionLayer(const VolumeBounds& vBounds,
153  const Amg::Vector3D& cCenter,
154  double envelope) override final;
155 
156 
157  private:
161  const Amg::Vector3D& dir,
162  const BoundaryCheck& bcheck) const;
163 
166 
167  protected:
170 };
171 
176  public:
179 
180  bool operator()(const CylinderLayer* one, const CylinderLayer* two) const {
181  return (one->surfaceRepresentation().bounds().r() <
182  two->surfaceRepresentation().bounds().r());
183  }
184 };
185 
186 } // namespace Trk
187 
188 #endif // TRKGEOMETY_CYLINDERLAYER_H
189 
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:142
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:307
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:268
Trk::CylinderLayer::surfaceRepresentation
virtual const CylinderSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition: CylinderLayer.cxx:154
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:165
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:237
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:281
Trk::active
@ active
Definition: Layer.h:48
Trk::two
@ two
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:23
Trk::CylinderSurface
Definition: CylinderSurface.h:55
Trk::CylinderBounds
Definition: CylinderBounds.h:46
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
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:178
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::CylinderLayerSorterR
Definition: CylinderLayer.h:175
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:176
Trk::CylinderLayer::moveLayer
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer
Definition: CylinderLayer.cxx:186
LArNewCalib_Delay_OFC_Cali.pdir
string pdir
Definition: LArNewCalib_Delay_OFC_Cali.py:172
Trk::CylinderLayer::m_approachDescriptor
std::unique_ptr< IApproachDescriptor > m_approachDescriptor
surfaces on approach to the layer
Definition: CylinderLayer.h:169
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:196
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:180
Trk::Layer
Definition: Layer.h:73