ATLAS Offline Software
Loading...
Searching...
No Matches
PlaneLayer.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// PlaneLayer.h, (c) ATLAS Detector software
8
9#ifndef TRKGEOMETRY_PLANELAYER_H
10#define TRKGEOMETRY_PLANELAYER_H
11
12class MsgStream;
13
15#include "TrkGeometry/Layer.h"
17// STL sorting
18#include <algorithm>
19
20namespace Trk {
21
22class RectangleBounds;
23class TrapezoidBounds;
24class DiamondBounds;
25class EllipseBounds;
27
36
37class PlaneLayer final
38 : public PlaneSurface
39 , public Layer
40{
41public:
44
49 std::shared_ptr<const SurfaceBounds> rbounds,
50 const LayerMaterialProperties& laymatprop,
51 double thickness = 0.,
52 std::unique_ptr<OverlapDescriptor> od = nullptr,
53 int laytyp = int(Trk::active));
54
56 const LayerMaterialProperties& laymatprop,
57 double thickness = 0.,
58 std::unique_ptr<OverlapDescriptor> od = nullptr,
59 int laytyp = int(Trk::active));
60
61
66 std::shared_ptr<const Trk::SurfaceBounds> tbounds,
67 std::unique_ptr<SurfaceArray> surfaceArray,
68 double thickness = 0.,
69 std::unique_ptr<OverlapDescriptor> od = nullptr,
70 int laytyp = int(Trk::active));
71
74
76 PlaneLayer(const PlaneLayer& pla, const Amg::Transform3D& tr);
77
80
82 virtual ~PlaneLayer() override {}
83
85 virtual const PlaneSurface& surfaceRepresentation() const override final;
86 virtual PlaneSurface& surfaceRepresentation() override final;
87
88
90
91 virtual double preUpdateMaterialFactor(
93 Trk::PropDirection dir) const override final;
94
96
97 virtual double postUpdateMaterialFactor(
99 Trk::PropDirection dir) const override final;
100
102 virtual void moveLayer(Amg::Transform3D& shift) override final;
103
105 virtual void resizeLayer(const VolumeBounds&, double) override final {}
106
109 const Amg::Vector3D&,
110 double) override final {}
111};
112
115
117 public:
120
121 bool operator()(const PlaneLayer* one, const PlaneLayer* two) const {
122 return (one->center().x() < two->center().x());
123 }
124};
125
128
130 public:
133
134 bool operator()(const PlaneLayer* one, const PlaneLayer* two) const {
135 return (one->center().y() < two->center().y());
136 }
137};
138
141
143 public:
146
147 bool operator()(const PlaneLayer* one, const PlaneLayer* two) const {
148 return (one->center().z() < two->center().z());
149 }
150};
151
152} // namespace Trk
153
154#endif // TRKGEOMETY_PLANELAYER_H
155
Eigen::Affine3d Transform3D
Bounds for a double trapezoidal ("diamond"), planar Surface.
Class to describe the bounds for a planar EllipseSurface, i.e.
This virtual base class encapsulates the logics to build pre/post/full update material for Layer stru...
Layer()=default
Default Constructor.
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
double thickness() const
Return the Thickness of the Layer.
PlaneLayerSorterX()
Default Constructor.
Definition PlaneLayer.h:119
bool operator()(const PlaneLayer *one, const PlaneLayer *two) const
Definition PlaneLayer.h:121
PlaneLayerSorterY()
Default Constructor.
Definition PlaneLayer.h:132
bool operator()(const PlaneLayer *one, const PlaneLayer *two) const
Definition PlaneLayer.h:134
bool operator()(const PlaneLayer *one, const PlaneLayer *two) const
Definition PlaneLayer.h:147
PlaneLayerSorterZ()
Default Constructor.
Definition PlaneLayer.h:145
Class to describe a planar detector layer for tracking, it inhertis from both, Layer base class and P...
Definition PlaneLayer.h:40
virtual const PlaneSurface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
virtual double postUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for post-update
virtual void resizeAndRepositionLayer(const VolumeBounds &, const Amg::Vector3D &, double) override final
Resize the layer to the tracking volume - not implemented.
Definition PlaneLayer.h:108
virtual void moveLayer(Amg::Transform3D &shift) override final
move the Layer
PlaneLayer & operator=(const PlaneLayer &)
Assignment operator for PlaneLayers.
PlaneLayer(const Amg::Transform3D &transform, std::shared_ptr< const Trk::SurfaceBounds > tbounds, std::unique_ptr< SurfaceArray > surfaceArray, double thickness=0., std::unique_ptr< OverlapDescriptor > od=nullptr, int laytyp=int(Trk::active))
Constructor with PlaneSurface components and pointer to SurfaceArray (passing ownership),...
virtual ~PlaneLayer() override
Destructor.
Definition PlaneLayer.h:82
virtual void resizeLayer(const VolumeBounds &, double) override final
Resize the layer to the tracking volume - not implemented.
Definition PlaneLayer.h:105
PlaneLayer(const PlaneLayer &pla)
Copy constructor of PlaneLayer.
PlaneLayer()
Default Constructor.
Definition PlaneLayer.h:43
virtual double preUpdateMaterialFactor(const Trk::TrackParameters &par, Trk::PropDirection dir) const override final
getting the MaterialProperties back - for pre-update
Class for a planaer rectangular or trapezoidal surface in the ATLAS detector.
PlaneSurface()
Default Constructor - needed for persistency.
Bounds for a rectangular, planar surface.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Bounds for a trapezoidal, planar Surface.
Pure Absract Base Class for Volume bounds.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
ParametersBase< TrackParametersDim, Charged > TrackParameters
@ active
Definition Layer.h:47