ATLAS Offline Software
DiscLayer.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 // DiscLayer.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETRY_DISCLAYER_H
10 #define TRKGEOMETRY_DISCLAYER_H
11 
12 class MsgStream;
13 
14 // Amg
16 // Trk
17 #include "TrkGeometry/Layer.h"
19 //
22 // STL sorting
23 #include <algorithm>
24 #include <memory>
25 namespace Trk {
26 
27 class DiscBounds;
28 class VolumeBounds;
29 class LayerMaterialProperties;
30 class OverlapDescriptor;
31 
42 class DiscLayer final
43  : public DiscSurface
44  , public Layer
45 {
46  friend class TrackingVolume;
47 
48 public:
50  DiscLayer() = default;
51 
54  DiscBounds* dbounds,
55  const LayerMaterialProperties& laymatprop,
56  double thickness = 0.,
57  std::unique_ptr<OverlapDescriptor> od = nullptr,
58  int laytyp = int(Trk::active));
59 
61  DiscLayer(DiscSurface* disc,
62  const LayerMaterialProperties& laymatprop,
63  double thickness = 0.,
64  std::unique_ptr<OverlapDescriptor> od = nullptr,
65  int laytyp = int(Trk::active));
66 
70  DiscBounds* dbounds,
71  std::unique_ptr<SurfaceArray> surfaceArray,
72  double isontolerance = 0.,
73  std::unique_ptr<OverlapDescriptor> od = nullptr,
74  IApproachDescriptor* ad = nullptr,
75  int laytyp = int(Trk::active));
76 
80  DiscBounds* dbounds,
81  std::unique_ptr<SurfaceArray> surfaceArray,
82  const LayerMaterialProperties& laymatprop,
83  double thickness = 0.,
84  std::unique_ptr<OverlapDescriptor> od = nullptr,
85  IApproachDescriptor* ad = nullptr,
86  int laytyp = int(Trk::active));
87 
89  DiscLayer(const DiscLayer& cla);
90 
92  DiscLayer(const DiscLayer& cla, const Amg::Transform3D& tr);
93 
95  DiscLayer& operator=(const DiscLayer&);
96 
98  virtual ~DiscLayer() = default;
99 
101  virtual const DiscSurface& surfaceRepresentation() const override final;
102  virtual DiscSurface& surfaceRepresentation() override final;
103 
108  const BoundaryCheck& bcheck, bool resolveSubSurfaces = 0,
109  const ICompatibilityEstimator* ice = nullptr) const override final;
110 
112  virtual double preUpdateMaterialFactor(
114  Trk::PropDirection dir) const override final;
115 
117  virtual double postUpdateMaterialFactor(
119  Trk::PropDirection dir) const override final;
120 
122  virtual void moveLayer(Amg::Transform3D& shift) override final;
123 
126  virtual void resizeLayer(const VolumeBounds& vBounds,
127  double envelope) override final;
128 
130  virtual void resizeAndRepositionLayer(const VolumeBounds& vBounds,
131  const Amg::Vector3D& cCenter,
132  double envelop) override final;
133 
134  private:
137 
141  const Amg::Vector3D& dir,
142  const BoundaryCheck& bcheck) const;
143 
144  protected:
147 };
148 
153  public:
154  bool operator()(const DiscLayer* one, const DiscLayer* two) const {
155  return (one->center().z() < two->center().z());
156  }
157 };
158 
159 } // namespace Trk
160 
161 #endif // TRKGEOMETY_DISCLAYER_H
162 
Trk::DiscLayer::DiscLayer
DiscLayer()=default
Default Constructor.
Trk::DiscLayer::resizeLayer
virtual void resizeLayer(const VolumeBounds &vBounds, double envelope) override final
Resize the layer to the tracking volume - only works for CylinderVolumeBouns.
Definition: DiscLayer.cxx:149
ApproachDescriptor.h
Trk::DiscLayer::m_approachDescriptor
std::unique_ptr< IApproachDescriptor > m_approachDescriptor
< surface for approaching
Definition: DiscLayer.h:146
Trk::DiscLayerSorterZ::operator()
bool operator()(const DiscLayer *one, const DiscLayer *two) const
Definition: DiscLayer.h:154
Trk::one
@ one
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:22
PropDirection.h
Layer.h
Trk::DiscSurface
Definition: DiscSurface.h:54
Trk::DiscLayer::surfaceOnApproach
virtual const Surface & surfaceOnApproach(const Amg::Vector3D &pos, const Amg::Vector3D &mom, 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: DiscLayer.cxx:221
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
protected
#define protected
Definition: DetDescrConditionsDict_dict_fixes.cxx:14
Trk::IApproachDescriptor
Definition: IApproachDescriptor.h:45
Trk::DiscLayer::~DiscLayer
virtual ~DiscLayer()=default
Destructor.
Trk::Layer::surfaceArray
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
GeoPrimitives.h
Trk::DiscLayer::postUpdateMaterialFactor
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
Definition: DiscLayer.cxx:130
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::DiscLayer::resizeAndRepositionLayer
virtual void resizeAndRepositionLayer(const VolumeBounds &vBounds, const Amg::Vector3D &cCenter, double envelop) override final
Resize the layer to the tracking volume - not implemented.
Definition: DiscLayer.cxx:263
Trk::active
@ active
Definition: Layer.h:48
Trk::two
@ two
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:23
Trk::LayerMaterialProperties
Definition: LayerMaterialProperties.h:62
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::DiscLayer
Definition: DiscLayer.h:45
Trk::ParametersBase
Definition: ParametersBase.h:55
beamspotman.dir
string dir
Definition: beamspotman.py:623
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
Trk::DiscLayer::surfaceRepresentation
virtual const DiscSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition: DiscLayer.cxx:111
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
Trk::DiscLayer::preUpdateMaterialFactor
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
Definition: DiscLayer.cxx:121
Trk::Layer::thickness
double thickness() const
Return the Thickness of the Layer.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::DiscLayer::operator=
DiscLayer & operator=(const DiscLayer &)
Assignment operator for DiscLayers.
Definition: DiscLayer.cxx:96
DiscSurface.h
Trk::DiscLayer::buildApproachDescriptor
void buildApproachDescriptor()
build approach surfaces
Definition: DiscLayer.cxx:234
Trk::DiscLayer::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: DiscLayer.cxx:190
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Trk::DiscLayer::moveLayer
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer non-const
Definition: DiscLayer.cxx:139
Trk::DiscBounds
Definition: DiscBounds.h:44
Trk::Layer
Definition: Layer.h:73
Trk::DiscLayerSorterZ
Definition: DiscLayer.h:152