ATLAS Offline Software
MaterialLayer.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 // MaterialLayer.h, (c) ATLAS Detector software
8 
9 #ifndef TRKGEOMETRY_MATERIALLAYER_H
10 #define TRKGEOMETRY_MATERIALLAYER_H
11 
12 class MsgStream;
13 
16 #include "TrkGeometry/Layer.h"
19 #include "TrkSurfaces/Surface.h"
20 //
21 #include <memory>
22 namespace Trk {
23 
42 class MaterialLayer : public Layer {
43  public:
44  MaterialLayer() = default;
45  virtual ~MaterialLayer() = default;
46 
48  virtual const Surface& surfaceRepresentation() const override = 0;
49  virtual Surface& surfaceRepresentation() override = 0;
52  virtual bool isOnLayer(
53  const Amg::Vector3D& gp,
54  const BoundaryCheck& bcheck = BoundaryCheck(true)) const override = 0;
56  virtual void moveLayer(Amg::Transform3D&) override final {};
58  virtual void resizeLayer(const VolumeBounds&, double) override final {}
61  const Amg::Vector3D&,
62  double) override final {}
63 };
64 
66  public:
67  virtual ~MaterialLayerOwnSurf() = default;
69  MaterialLayerOwnSurf(std::unique_ptr<Surface> surfaceRepresentation,
70  std::unique_ptr<LayerMaterialProperties> mlprop)
71  : Trk::MaterialLayer(),
73  m_layerMaterialProperties = std::move(mlprop);
74  m_layerThickness = 1.;
75  }
76 
77  virtual const Surface& surfaceRepresentation() const override final {
78  return *(m_surfaceRepresentation.get());
79  }
80  virtual Surface& surfaceRepresentation() override final {
81  return *(m_surfaceRepresentation.get());
82  }
83  virtual bool isOnLayer(
84  const Amg::Vector3D& gp,
85  const BoundaryCheck& bcheck = BoundaryCheck(true)) const override final {
86  return m_surfaceRepresentation.get()->isOnSurface(gp, bcheck);
87  }
88 
89  private:
90  std::unique_ptr<Surface> m_surfaceRepresentation{};
91 };
92 
94  public:
95  virtual ~MaterialLayerNoOwnSurf() = default;
96 
100  std::unique_ptr<LayerMaterialProperties> mlprop)
102  m_layerMaterialProperties = std::move(mlprop);
103  m_layerThickness = 1.;
104  }
105 
106  virtual const Surface& surfaceRepresentation() const override final {
107  return *m_surfaceRepresentation;
108  }
109  virtual Surface& surfaceRepresentation() override final {
110  return *m_surfaceRepresentation;
111  }
112  virtual bool isOnLayer(
113  const Amg::Vector3D& gp,
114  const BoundaryCheck& bcheck = BoundaryCheck(true)) const override final {
115  return m_surfaceRepresentation->isOnSurface(gp, bcheck);
116  }
117 
118  private:
120 };
121 
122 } // namespace Trk
123 
124 #endif // TRKGEOMETRY_MATERIALLAYER_H
125 
TrackParameters.h
Surface.h
Trk::Layer::m_layerMaterialProperties
std::unique_ptr< LayerMaterialProperties > m_layerMaterialProperties
thickness of the Layer
Definition: Layer.h:288
Trk::MaterialLayer::isOnLayer
virtual bool isOnLayer(const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const override=0
isOnLayer() method, using isOnSurface() with Layer specific tolerance
Trk::MaterialLayer::resizeLayer
virtual void resizeLayer(const VolumeBounds &, double) override final
Resize the layer to the tracking volume - not implemented.
Definition: MaterialLayer.h:58
PropDirection.h
Layer.h
Trk::MaterialLayer::MaterialLayer
MaterialLayer()=default
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::MaterialLayer::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const override=0
Transforms the layer into a Surface representation for extrapolation.
Trk::MaterialLayer::surfaceRepresentation
virtual Surface & surfaceRepresentation() override=0
Trk::MaterialLayerOwnSurf::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition: MaterialLayer.h:77
Trk::MaterialLayerNoOwnSurf::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const override final
Transforms the layer into a Surface representation for extrapolation.
Definition: MaterialLayer.h:106
Trk::MaterialLayerOwnSurf::surfaceRepresentation
virtual Surface & surfaceRepresentation() override final
Definition: MaterialLayer.h:80
Trk::MaterialLayerOwnSurf::MaterialLayerOwnSurf
MaterialLayerOwnSurf(std::unique_ptr< Surface > surfaceRepresentation, std::unique_ptr< LayerMaterialProperties > mlprop)
Constructor with a surface representation.
Definition: MaterialLayer.h:69
Trk::MaterialLayerNoOwnSurf::surfaceRepresentation
virtual Surface & surfaceRepresentation() override final
Definition: MaterialLayer.h:109
GeoPrimitives.h
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Trk::Surface::isOnSurface
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
Definition: Surface.cxx:123
Trk::MaterialLayerNoOwnSurf::~MaterialLayerNoOwnSurf
virtual ~MaterialLayerNoOwnSurf()=default
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::MaterialLayerNoOwnSurf::MaterialLayerNoOwnSurf
MaterialLayerNoOwnSurf(Surface *surfaceRepresentation, std::unique_ptr< LayerMaterialProperties > mlprop)
Constructor allowing the Material to be attached to an existing surface It does NOT own the represent...
Definition: MaterialLayer.h:99
Trk::MaterialLayerOwnSurf::isOnLayer
virtual bool isOnLayer(const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const override final
isOnLayer() method, using isOnSurface() with Layer specific tolerance
Definition: MaterialLayer.h:83
Trk::MaterialLayerNoOwnSurf::isOnLayer
virtual bool isOnLayer(const Amg::Vector3D &gp, const BoundaryCheck &bcheck=BoundaryCheck(true)) const override final
isOnLayer() method, using isOnSurface() with Layer specific tolerance
Definition: MaterialLayer.h:112
Trk::MaterialLayer::~MaterialLayer
virtual ~MaterialLayer()=default
Trk::MaterialLayer::moveLayer
virtual void moveLayer(Amg::Transform3D &) override final
Move the layer - not implemented.
Definition: MaterialLayer.h:56
Trk::MaterialLayer::resizeAndRepositionLayer
virtual void resizeAndRepositionLayer(const VolumeBounds &, const Amg::Vector3D &, double) override final
Resize the layer to the tracking volume - not implemented.
Definition: MaterialLayer.h:60
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::MaterialLayerOwnSurf::~MaterialLayerOwnSurf
virtual ~MaterialLayerOwnSurf()=default
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::MaterialLayerNoOwnSurf::m_surfaceRepresentation
Surface * m_surfaceRepresentation
Definition: MaterialLayer.h:119
Trk::MaterialLayerOwnSurf
Definition: MaterialLayer.h:65
Trk::BoundaryCheck
Definition: BoundaryCheck.h:51
Trk::Layer::m_layerThickness
double m_layerThickness
descriptor for overlap/next surface (owning ptr)
Definition: Layer.h:290
Trk::MaterialLayer
Definition: MaterialLayer.h:42
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
Trk::MaterialLayerOwnSurf::m_surfaceRepresentation
std::unique_ptr< Surface > m_surfaceRepresentation
Definition: MaterialLayer.h:90
LayerMaterialProperties.h
Trk::MaterialLayerNoOwnSurf
Definition: MaterialLayer.h:93
Trk::Layer
Definition: Layer.h:72