Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CylinderSurface.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CylinderSurface.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 class DetectorElementBase;
31 
42 
43 class CylinderSurface : public Surface {
44 #ifndef DOXYGEN
45  friend Surface;
46 #endif
47 
48  protected:
58  CylinderSurface(const Transform3& transform, double radius, double halfz,
59  double halfphi = M_PI, double avphi = 0.,
60  double bevelMinZ = 0., double bevelMaxZ = 0.);
61 
68  std::shared_ptr<const CylinderBounds> cbounds);
69 
74  CylinderSurface(std::shared_ptr<const CylinderBounds> cbounds,
75  const DetectorElementBase& detelement);
76 
80  CylinderSurface(const CylinderSurface& other);
81 
88  const Transform3& shift);
89 
90  public:
91  ~CylinderSurface() override = default;
92  CylinderSurface() = delete;
93 
98 
106  BinningValue bValue) const final;
107 
117  const Vector3& position,
118  const Vector3& direction) const final;
119 
121  SurfaceType type() const override;
122 
133  const Vector2& lposition) const final;
134 
145  const Vector3& position) const final;
146 
148  using Surface::normal;
149 
155  virtual Vector3 rotSymmetryAxis(const GeometryContext& gctx) const;
156 
158  const CylinderBounds& bounds() const final;
159 
167  Vector3 localToGlobal(const GeometryContext& gctx, const Vector2& lposition,
168  const Vector3& direction) const final;
169 
180  const GeometryContext& gctx, const Vector3& position,
181  const Vector3& direction,
182  double tolerance = s_onSurfaceTolerance) const final;
183 
196  const GeometryContext& gctx, const Vector3& position,
197  const Vector3& direction, const BoundaryCheck& bcheck = false,
199 
207  double pathCorrection(const GeometryContext& gctx, const Vector3& position,
208  const Vector3& direction) const final;
209 
211  std::string name() const override;
212 
222  size_t lseg) const override;
223 
234  const GeometryContext& gctx, const FreeVector& parameters) const final;
235 
245  const GeometryContext& gctx, const Vector3& position) const final;
246 
247  protected:
249 
250  private:
285  const Transform3& transform, const Vector3& position,
286  const Vector3& direction) const;
287 };
288 
289 } // namespace Acts