![]() |
|
|||
File indexing completed on 2025-09-15 08:13:38
0001 // This file is part of the ACTS project. 0002 // 0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project 0004 // 0005 // This Source Code Form is subject to the terms of the Mozilla Public 0006 // License, v. 2.0. If a copy of the MPL was not distributed with this 0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/. 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 0016 #include <memory> 0017 0018 namespace Acts { 0019 0020 class DiscBounds; 0021 class SurfaceArray; 0022 0023 /// @class DiscLayer 0024 /// 0025 /// Class to describe a disc-like detector layer for tracking, 0026 /// it inhertis from both, Layer base class 0027 /// and DiscSurface class 0028 0029 class DiscLayer : virtual public DiscSurface, public Layer { 0030 public: 0031 /// Factory constructor with DiscSurface components 0032 /// 0033 /// @param transform is the transform to place the layer in the 3D frame 0034 /// @param dbounds are the disc bounds that describe the layer dimensions 0035 /// @param surfaceArray is the array of sensitive surfaces 0036 /// @param thickness is the layer thickness (along the normal vector) 0037 /// @param ad is the approach descriptor that provides the approach surface 0038 /// @param laytyp is the layer type 0039 /// 0040 /// @todo move ApproachDescriptor to unqique_ptr 0041 /// 0042 /// @return a sharted pointer to the new layer 0043 static std::shared_ptr<DiscLayer> create( 0044 const Transform3& transform, 0045 const std::shared_ptr<const DiscBounds>& dbounds, 0046 std::unique_ptr<SurfaceArray> surfaceArray = nullptr, 0047 double thickness = 0., std::unique_ptr<ApproachDescriptor> ad = nullptr, 0048 LayerType laytyp = passive); 0049 0050 DiscLayer() = delete; 0051 DiscLayer(const DiscLayer& cla) = delete; 0052 ~DiscLayer() override = default; 0053 DiscLayer& operator=(const DiscLayer&) = delete; 0054 0055 /// Transforms the layer into a Surface representation for extrapolation 0056 /// @return This method returns a surface reference 0057 const DiscSurface& surfaceRepresentation() const override; 0058 0059 // Non-const version 0060 DiscSurface& surfaceRepresentation() override; 0061 0062 private: 0063 /// build approach surfaces 0064 void buildApproachDescriptor(); 0065 0066 protected: 0067 // Constructor with DiscSurface components and pointer to SurfaceArray 0068 /// 0069 /// @param transform is the transform to place the layer in the 3D frame 0070 /// @param dbounds are the disc bounds that describe the layer dimensions 0071 /// @param surfaceArray is the array of sensitive surfaces 0072 /// @param thickness is the layer thickness (along the normal vector) 0073 /// @param ades Are the approach descriptors that provides the approach surface 0074 /// @param laytyp is the layer taype 0075 DiscLayer(const Transform3& transform, 0076 const std::shared_ptr<const DiscBounds>& dbounds, 0077 std::unique_ptr<SurfaceArray> surfaceArray = nullptr, 0078 double thickness = 0., 0079 std::unique_ptr<ApproachDescriptor> ades = nullptr, 0080 LayerType laytyp = active); 0081 0082 /// Copy constructor with shift 0083 DiscLayer(const DiscLayer& cla, const Transform3& tr); 0084 }; 0085 0086 } // namespace Acts
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |