ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PlaneSurface.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PlaneSurface.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2016-2020 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
11 #include <limits>
20 
21 namespace Acts {
22 
23 class DetectorElementBase;
24 
34 class PlaneSurface : public Surface {
35  friend Surface;
36 
37  protected:
39  PlaneSurface();
40 
44  PlaneSurface(const PlaneSurface& other);
45 
51  PlaneSurface(const GeometryContext& gctx, const PlaneSurface& other,
52  const Transform3D& transf);
53 
59  PlaneSurface(const Vector3D& center, const Vector3D& normal);
60 
65  PlaneSurface(const std::shared_ptr<const PlanarBounds>& pbounds,
66  const DetectorElementBase& detelement);
67 
72  PlaneSurface(std::shared_ptr<const Transform3D> htrans,
73  std::shared_ptr<const PlanarBounds> pbounds = nullptr);
74 
75  public:
77  ~PlaneSurface() override = default;
78 
82  PlaneSurface& operator=(const PlaneSurface& other);
83 
90  const Vector3D normal(const GeometryContext& gctx,
91  const Vector2D& lposition) const final;
92 
94  using Surface::normal;
95 
104  BinningValue bValue) const final;
105 
107  SurfaceType type() const override;
108 
110  const SurfaceBounds& bounds() const override;
111 
121  void localToGlobal(const GeometryContext& gctx, const Vector2D& lposition,
122  const Vector3D& momentum,
123  Vector3D& position) const override;
124 
138  bool globalToLocal(const GeometryContext& gctx, const Vector3D& position,
139  const Vector3D& momentum,
140  Vector2D& lposition) const override;
141 
150  double pathCorrection(const GeometryContext& gctx, const Vector3D& position,
151  const Vector3D& direction) const final;
152 
180  const GeometryContext& gctx, const Vector3D& position,
181  const Vector3D& direction,
182  const BoundaryCheck& bcheck = false) const final;
183 
193  size_t lseg) const override;
194 
196  std::string name() const override;
197 
198  protected:
201 
202  private:
203 };
204 
205 #include "Acts/Surfaces/detail/PlaneSurface.ipp"
206 
207 } // end of namespace Acts