ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NavigationLayer.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file NavigationLayer.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2016-2018 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 
10 // NavigationLayer.h, Acts project
12 
13 #pragma once
14 
17 #include "Acts/Geometry/Layer.hpp"
20 
21 namespace Acts {
22 
23 class Surface;
24 class BinUtility;
25 
31 
32 class NavigationLayer : public Layer {
33  public:
39  static LayerPtr create(std::shared_ptr<const Surface> sRepresentation,
40  double thickness = 0.) {
41  return LayerPtr(new NavigationLayer(std::move(sRepresentation), thickness));
42  }
43 
45  ~NavigationLayer() override;
46 
55  BinningValue bValue) const final;
56 
58  NavigationLayer() = delete;
59 
61  NavigationLayer(const NavigationLayer&) = delete;
62 
64  NavigationLayer& operator=(const NavigationLayer&) = delete;
65 
68  const Surface& surfaceRepresentation() const final;
69 
70  // Non-const version
72 
81  bool isOnLayer(const GeometryContext& gctx, const Vector3D& gp,
82  const BoundaryCheck& bcheck = true) const final;
83 
93  bool resolve(bool resolveSensitive, bool resolveMaterial,
94  bool resolvePassive) const final;
95 
96  protected:
104  double thickness);
105 
112 };
113 
114 inline const Surface& NavigationLayer::surfaceRepresentation() const {
115  return (*m_surfaceRepresentation);
116 }
117 
119  return *(const_cast<Surface*>(m_surfaceRepresentation.get()));
120 }
121 
123  const GeometryContext& gctx, BinningValue bValue) const {
124  return m_surfaceRepresentation->binningPosition(gctx, bValue);
125 }
126 
128  const Vector3D& gp,
129  const BoundaryCheck& bcheck) const {
130  return m_surfaceRepresentation->isOnSurface(gctx, gp, s_origin, bcheck);
131 }
132 
133 inline bool NavigationLayer::resolve(bool /*resolveSensitive*/,
134  bool /*resolveMaterial*/,
135  bool /*reolvePassive*/) const {
136  return false;
137 }
138 
139 } // namespace Acts