File NavigationLayer.hpp

namespace Acts


This file is foreseen for the Geometry module to replace Extent


this is foreseen for the ‘Geometry’ module

class NavigationLayer : public Acts::Layer
#include <Acts/Geometry/NavigationLayer.hpp>

Class to be used for gaps in Volumes as a navigational link.

Navigation Layers have a surface representation, but should usually never be propagated to.

Public Functions

NavigationLayer() = delete

Default Constructor - deleted.

NavigationLayer(const NavigationLayer&) = delete

Copy Constructor - deleted.

~NavigationLayer() override


inline virtual Vector3 binningPosition(const GeometryContext &gctx, BinningValue bValue) const final

The binning position method.

  • gctx – The current geometry context object, e.g. alignment

  • bValue – is the value for which the binning position is requested

    • as default the center is given, but may be overloaded


The return vector can be used for binning in a TrackingVolume

inline virtual bool isOnLayer(const GeometryContext &gctx, const Vector3 &gp, const BoundaryCheck &bcheck = true) const final

Geometric isOnLayer() method using isOnSurface() with Layer specific tolerance.

  • gctx – The current geometry context object, e.g. alignment

  • gp – is the global position for the check

  • bcheck – is the boundary check directive


boolean that indicates if the position is on surface

NavigationLayer &operator=(const NavigationLayer&) = delete

Assignment operator - deleted.

inline virtual bool resolve(bool resolveSensitive, bool resolveMaterial, bool resolvePassive) const final

Accept layer according to the following colelction directives.


navigation layers are never accepted

  • resolveSensitive – is the prescription to find the sensitive surfaces

  • resolveMaterial – is the precription to find material surfaces

  • resolvePassive – is the prescription to find all passive surfaces


a boolean whether the layer is accepted for processing

inline virtual const Surface &surfaceRepresentation() const final

Transforms the layer into a Surface representation for extrapolation In general, extrapolation to a surface should be avoided.

inline virtual Surface &surfaceRepresentation() final

Public Static Functions

static inline LayerPtr create(std::shared_ptr<const Surface> sRepresentation, double thickness = 0.)

Factory Constructor - the surface representation is given by pointer (ownership passed)

  • sRepresentation – is the representation for extrapolation

  • thickness – is the thickness for the binning

Protected Functions

NavigationLayer(std::shared_ptr<const Surface> surfaceRepresentation, double thickness)

Private Constructor.

  • this is called by the creat(args*) method passed spacer layer if needed

  • surfaceRepresentation – is the surface of the layer

  • thickness – ithe layer thickness

Protected Attributes

std::shared_ptr<const Surface> m_surfaceRepresentation

for the navigation Volume the surface

We will need to mutate this surface during the geometry building process, but the C++ type system has no const-correct way of expressing this.