File indexing completed on 2025-01-18 09:10:51
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/ApproachDescriptor.hpp"
0013 #include "Acts/Geometry/Layer.hpp"
0014 #include "Acts/Surfaces/DiscSurface.hpp"
0015 #include "Acts/Surfaces/SurfaceArray.hpp"
0016
0017 #include <memory>
0018 #include <utility>
0019
0020 namespace Acts {
0021
0022 class DiscBounds;
0023
0024
0025
0026
0027
0028
0029
0030 class DiscLayer : virtual public DiscSurface, public Layer {
0031 public:
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 static std::shared_ptr<DiscLayer> create(
0045 const Transform3& transform,
0046 const std::shared_ptr<const DiscBounds>& dbounds,
0047 std::unique_ptr<SurfaceArray> surfaceArray = nullptr,
0048 double thickness = 0., std::unique_ptr<ApproachDescriptor> ad = nullptr,
0049 LayerType laytyp = Acts::passive) {
0050 return std::shared_ptr<DiscLayer>(
0051 new DiscLayer(transform, dbounds, std::move(surfaceArray), thickness,
0052 std::move(ad), laytyp));
0053 }
0054
0055 DiscLayer() = delete;
0056 DiscLayer(const DiscLayer& cla) = delete;
0057 ~DiscLayer() override = default;
0058 DiscLayer& operator=(const DiscLayer&) = delete;
0059
0060
0061
0062 const DiscSurface& surfaceRepresentation() const override;
0063
0064
0065 DiscSurface& surfaceRepresentation() override;
0066
0067 private:
0068
0069 void buildApproachDescriptor();
0070
0071 protected:
0072
0073
0074
0075
0076
0077
0078
0079
0080 DiscLayer(const Transform3& transform,
0081 const std::shared_ptr<const DiscBounds>& dbounds,
0082 std::unique_ptr<SurfaceArray> surfaceArray = nullptr,
0083 double thickness = 0.,
0084 std::unique_ptr<ApproachDescriptor> ades = nullptr,
0085 LayerType laytyp = Acts::active);
0086
0087
0088 DiscLayer(const DiscLayer& cla, const Transform3& tr);
0089 };
0090
0091 }