Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-15 07:35:40

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/GeometryContext.hpp"
0013 #include "Acts/Surfaces/LineBounds.hpp"
0014 #include "Acts/Surfaces/LineSurface.hpp"
0015 #include "Acts/Surfaces/Surface.hpp"
0016 #include "Acts/Surfaces/SurfaceConcept.hpp"
0017 
0018 #include <memory>
0019 #include <string>
0020 
0021 namespace Acts {
0022 
0023 struct Polyhedron;
0024 class LineBounds;
0025 
0026 ///  @class StrawSurface
0027 ///
0028 ///  Class for a StrawSurface in the TrackingGeometry
0029 ///  to describe dirft tube and straw like detectors.
0030 ///
0031 /// @image html LineSurface.png
0032 ///
0033 class StrawSurface : public LineSurface {
0034   friend class Surface;
0035 
0036  protected:
0037   /// @cond
0038   using LineSurface::LineSurface;
0039   /// @endcond
0040 
0041  public:
0042   /// Return the surface type
0043   /// @return Surface type identifier for straw surfaces
0044   SurfaceType type() const final { return Surface::Straw; }
0045 
0046   /// Return properly formatted class name for screen output */
0047   /// @return String representation of the surface type name
0048   std::string name() const final { return "Acts::StrawSurface"; }
0049 
0050   /// Return a Polyhedron for the surfaces
0051   ///
0052   /// @param gctx The current geometry context object, e.g. alignment
0053   /// @param quarterSegments is the number of segments used to describe curved
0054   /// segments in a quarter of the phi range. If it is 1, then only the extrema
0055   /// points in phi are inserted next to the segment corners.
0056   ///
0057   /// @return A list of vertices and a face/facett description of it
0058   Polyhedron polyhedronRepresentation(const GeometryContext& gctx,
0059                                       unsigned int quarterSegments) const final;
0060 };
0061 
0062 static_assert(SurfaceConcept<StrawSurface>,
0063               "StrawSurface does not fulfill SurfaceConcept");
0064 
0065 }  // namespace Acts