EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LineSurface.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file LineSurface.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
17 
18 namespace Acts {
19 
20 class LineBounds;
21 
31 class LineSurface : public Surface {
32  friend Surface;
33 
34  protected:
41  LineSurface(const Transform3D& transform, double radius, double halez);
42 
50  std::shared_ptr<const LineBounds> lbounds = nullptr);
51 
56  LineSurface(const std::shared_ptr<const LineBounds>& lbounds,
57  const DetectorElementBase& detelement);
58 
62  LineSurface(const LineSurface& other);
63 
69  LineSurface(const GeometryContext& gctx, const LineSurface& other,
70  const Transform3D& shift);
71 
72  public:
73  ~LineSurface() override = default;
74  LineSurface() = delete;
75 
79  LineSurface& operator=(const LineSurface& other);
80 
88  const Vector2D& lposition) const final;
89 
91  using Surface::normal;
92 
101  BinningValue bValue) const final;
102 
116  const Vector3D& position,
117  const Vector3D& momentum) const final;
118 
131  BoundToFreeMatrix& jacobian,
132  const Vector3D& position, const Vector3D& direction,
133  const BoundVector& pars) const final;
134 
147  const GeometryContext& gctx, const Vector3D& position,
148  const Vector3D& direction, const RotationMatrix3D& rft,
149  const BoundToFreeMatrix& jacobian) const final;
150 
160  Vector3D localToGlobal(const GeometryContext& gctx, const Vector2D& lposition,
161  const Vector3D& momentum) const final;
162 
199  const Vector3D& position,
200  const Vector3D& momentum) const final;
201 
239  const GeometryContext& gctx, const Vector3D& position,
240  const Vector3D& direction,
241  const BoundaryCheck& bcheck = false) const final;
242 
248  double pathCorrection(const GeometryContext& gctx, const Vector3D& position,
249  const Vector3D& momentum) const override;
250 
252  const SurfaceBounds& bounds() const final;
253 
255  std::string name() const override;
256 
269  const GeometryContext& gctx, const RotationMatrix3D& rotToLocalZAxis,
270  const Vector3D& position, const Vector3D& direction) const final;
271 
281  const GeometryContext& gctx, const Vector3D& position) const final;
282 
283  protected:
285 
286  private:
293  bool globalToLocalPlain(const GeometryContext& gctx, const Vector3D& position,
294  const Vector3D& momentum, Vector2D& lposition) const;
295 };
296 
297 #include "Acts/Surfaces/detail/LineSurface.ipp"
298 
299 } // namespace Acts