ECCE @ 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:
40  LineSurface(std::shared_ptr<const Transform3D> htrans, double radius,
41  double halez);
42 
48  LineSurface(std::shared_ptr<const Transform3D> htrans,
49  std::shared_ptr<const LineBounds> lbounds = nullptr);
50 
55  LineSurface(const std::shared_ptr<const LineBounds>& lbounds,
56  const DetectorElementBase& detelement);
57 
61  LineSurface(const LineSurface& other);
62 
68  LineSurface(const GeometryContext& gctx, const LineSurface& other,
69  const Transform3D& transf);
70 
71  public:
73  ~LineSurface() override = default;
74 
76  LineSurface() = delete;
77 
81  LineSurface& operator=(const LineSurface& other);
82 
89  const Vector3D normal(const GeometryContext& gctx,
90  const Vector2D& lposition) const final;
91 
93  using Surface::normal;
94 
103  BinningValue bValue) const final;
104 
118  const Vector3D& position,
119  const Vector3D& momentum) const final;
120 
133  BoundToFreeMatrix& jacobian,
134  const Vector3D& position, const Vector3D& direction,
135  const BoundVector& pars) const final;
136 
149  const GeometryContext& gctx, const Vector3D& position,
150  const Vector3D& direction, const RotationMatrix3D& rft,
151  const BoundToFreeMatrix& jacobian) const final;
152 
161  void localToGlobal(const GeometryContext& gctx, const Vector2D& lposition,
162  const Vector3D& momentum, Vector3D& position) const final;
163 
202  bool globalToLocal(const GeometryContext& gctx, const Vector3D& position,
203  const Vector3D& momentum, Vector2D& lposition) const final;
204 
242  const GeometryContext& gctx, const Vector3D& position,
243  const Vector3D& direction,
244  const BoundaryCheck& bcheck = false) const final;
245 
251  double pathCorrection(const GeometryContext& gctx, const Vector3D& position,
252  const Vector3D& momentum) const override;
253 
255  const SurfaceBounds& bounds() const final;
256 
258  std::string name() const override;
259 
260  protected:
262 
263  private:
270  bool globalToLocalPlain(const GeometryContext& gctx, const Vector3D& position,
271  const Vector3D& momentum, Vector2D& lposition) const;
272 };
273 
274 #include "Acts/Surfaces/detail/LineSurface.ipp"
275 
276 } // namespace Acts