ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
ActsFatras::PlanarSurfaceMask Struct Reference

A brief struct that allows to apply a surface bound mask. More...

#include <ActsFatras/Digitization/PlanarSurfaceMask.hpp>

Public Types

using Segment2D = std::array<Acts::Vector2, 2>
 Shorthand for a 2-d segment;.

Public Member Functions

Acts::Result< Segment2DannulusMask (const Acts::AnnulusBounds &aBounds, const Segment2D &segment, bool firstInside) const
 Apply the mask of an annulus disk.
Acts::Result< Segment2Dapply (const Acts::Surface &surface, const Segment2D &segment) const
 Apply the mask on the segment.
Acts::Result< Segment2DpolygonMask (const std::vector< Acts::Vector2 > &vertices, const Segment2D &segment, bool firstInside) const
 Apply the mask of a polygon.
Acts::Result< Segment2DradialMask (const Acts::RadialBounds &rBounds, const Segment2D &segment, const Segment2D &polarSegment, bool firstInside) const
 Apply the mask of a Radial disk.

Public Attributes

Acts::detail::IntersectionHelper2D intersector {}
 2D intersection helper for geometric calculations

Detailed Description

A brief struct that allows to apply a surface bound mask.

Member Typedef Documentation

◆ Segment2D

Shorthand for a 2-d segment;.

Member Function Documentation

◆ annulusMask()

Acts::Result< Segment2D > ActsFatras::PlanarSurfaceMask::annulusMask ( const Acts::AnnulusBounds & aBounds,
const Segment2D & segment,
bool firstInside ) const

Apply the mask of an annulus disk.

Parameters
aBoundsThe annulus disc for the masking
segmentThe track segment (on surface)
firstInsideThe indicator if the first is inside
Returns
a result wrapping a segment

◆ apply()

Acts::Result< Segment2D > ActsFatras::PlanarSurfaceMask::apply ( const Acts::Surface & surface,
const Segment2D & segment ) const

Apply the mask on the segment.

  • If the segment is fully inside the surface, return unchanged
  • Otherwise mask/clip the segment to fit into the bounds
Note
Only PlaneSurface/DiscSurface are supported
If both end points of the segment are inside, the segment is not clipped/masked, even if it would cross a surface boundary. Examples for those would be non-covex polygons or segments on a radial bound, where the radial boundary is crossed. Such segments do not occur in Digitization, as the hit has to be inside the surface bounds to start with.
Parameters
surfaceThe surface in question
segmentThe track segment (on surface)
Returns
a result wrapping a segment

◆ polygonMask()

Acts::Result< Segment2D > ActsFatras::PlanarSurfaceMask::polygonMask ( const std::vector< Acts::Vector2 > & vertices,
const Segment2D & segment,
bool firstInside ) const

Apply the mask of a polygon.

Parameters
verticesThe vertices of the polygon
segmentThe track segment (on surface)
firstInsideThe indicator if the first is inside
Returns
a result wrapping a segment

◆ radialMask()

Acts::Result< Segment2D > ActsFatras::PlanarSurfaceMask::radialMask ( const Acts::RadialBounds & rBounds,
const Segment2D & segment,
const Segment2D & polarSegment,
bool firstInside ) const

Apply the mask of a Radial disk.

Parameters
rBoundsThe radial disc for the masking
segmentThe track segment (on surface)
polarSegmentThe track segment (on surface, in polar)
firstInsideThe indicator if the first is inside
Returns
a result wrapping a segment

Member Data Documentation

◆ intersector

Acts::detail::IntersectionHelper2D ActsFatras::PlanarSurfaceMask::intersector {}

2D intersection helper for geometric calculations