Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ConeSurface.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ConeSurface.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 
23 
24 #include <cmath>
25 #include <cstddef>
26 #include <memory>
27 #include <string>
28 
29 namespace Acts {
30 
41 
42 class ConeSurface : public Surface {
43 #ifndef DOXYGEN
44  friend Surface;
45 #endif
46 
47  protected:
53  ConeSurface(const Transform3& transform, double alpha,
54  bool symmetric = false);
55 
63  ConeSurface(const Transform3& transform, double alpha, double zmin,
64  double zmax, double halfPhi = M_PI);
65 
71  std::shared_ptr<const ConeBounds> cbounds);
72 
76  ConeSurface(const ConeSurface& other);
77 
83  ConeSurface(const GeometryContext& gctx, const ConeSurface& other,
84  const Transform3& shift);
85 
86  public:
87  ~ConeSurface() override = default;
88  ConeSurface() = delete;
89 
93  ConeSurface& operator=(const ConeSurface& other);
94 
102  BinningValue bValue) const final;
103 
105  SurfaceType type() const override;
106 
118  const Vector3& position,
119  const Vector3& direction) const final;
120 
127  const Vector2& lposition) const final;
128 
135  const Vector3& position) const final;
136 
138  using Surface::normal;
139 
140  // Return method for the rotational symmetry axis
144  // @return This returns the local z axis
145  virtual Vector3 rotSymmetryAxis(const GeometryContext& gctx) const;
146 
148  const ConeBounds& bounds() const final;
149 
157  Vector3 localToGlobal(const GeometryContext& gctx, const Vector2& lposition,
158  const Vector3& direction) const final;
159 
170  const GeometryContext& gctx, const Vector3& position,
171  const Vector3& direction,
172  double tolerance = s_onSurfaceTolerance) const final;
173 
186  const GeometryContext& gctx, const Vector3& position,
187  const Vector3& direction, const BoundaryCheck& bcheck = false,
188  double tolerance = s_onSurfaceTolerance) const final;
189 
196  double pathCorrection(const GeometryContext& gctx, const Vector3& position,
197  const Vector3& direction) const final;
198 
210  size_t lseg) const override;
211 
213  std::string name() const override;
214 
225  const GeometryContext& gctx, const FreeVector& parameters) const final;
226 
236  const GeometryContext& gctx, const Vector3& position) const final;
237 
238  protected:
240 
241  private:
278  const GeometryContext& gctx, const Vector3& position,
279  const Vector3& direction) const;
280 };
281 
282 } // namespace Acts