ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::CylinderStackPortalShell Class Reference

This class describes a cylinder shell containing multiple volumes. More...

#include <Acts/Geometry/CylinderPortalShell.hpp>

Inheritance diagram for Acts::CylinderStackPortalShell:
[legend]
Collaboration diagram for Acts::CylinderStackPortalShell:
[legend]

Public Types

using SingleShell = SingleCylinderPortalShell
 Type alias for single cylinder portal shell type used in stacks.
Public Types inherited from Acts::CylinderPortalShell
using Face = CylinderVolumeBounds::Face
 Type alias for cylinder volume bounds face enumeration.

Public Member Functions

 CylinderStackPortalShell (const GeometryContext &gctx, std::vector< CylinderPortalShell * > shells, AxisDirection direction, const Logger &logger=getDummyLogger())
 Construct the portal shell stack from the given shells.
void applyToVolume () override
 Instruct the shell to register the portals with the volume, handing over shared ownership in the process.
bool isValid () const override
 Check if a portal is valid, e.g.
std::string label () const override
 Get a label for the portal shell for debugging purposes.
std::shared_ptr< Portalportal (Face face) final
 Retrieve a shared_ptr for the portal associated to the given face.
void setPortal (std::shared_ptr< Portal > portal, Face face) final
 Set the portal associated to the given face.
std::size_t size () const final
 Get the number of portals in the shell.
Public Member Functions inherited from Acts::CylinderPortalShell
void fill (TrackingVolume &volume) override
 Fill the open slots of the shell with a TrivialPortalLink to the given volume.
Public Member Functions inherited from Acts::PortalShellBase
virtual ~PortalShellBase ()=default
 Virtual destructor.

Detailed Description

This class describes a cylinder shell containing multiple volumes.

The available faces depend on the configuration of the cylinder volume bounds.

Note
The stack shell currently does not support phi sectors The stack can be oriented along the (local) z or r direction, which drives the stacking. Depending on the direction, portals on the shells of children are merged or fused. Subsequently, portal access respects shared portals between shells. Below is an illustration of a stack in the r direction:
Fused +-----------------+
portals ----+ | |
| | v OuterCylinder
| +------+------+
| | | |
| | | |<--+
+--+---+ v | |
+---+---------+ |
| | | | Shared portal
| | |<--+--- (grid)
| v | | PositiveDisc
+-------------+ |
r ^ | | |
| | |<--+
| | |
| +-------------+ InnerCylinder
+-----> ^ (if rMin>0)
z | |
+-----------------+
std::shared_ptr< Portal > portal(Face face) final
Retrieve a shared_ptr for the portal associated to the given face.
The shells must be ordered in the given direction Depending on the stack direction, the portal lookup will return different portals. In the illustration above, the PositiveDisc portal is shared among all shells, while the OuterCylinder and InnerCylinder portals are looked up from the innermost and outermost shell in the r direction.

Member Typedef Documentation

◆ SingleShell

Type alias for single cylinder portal shell type used in stacks.

Constructor & Destructor Documentation

◆ CylinderStackPortalShell()

Acts::CylinderStackPortalShell::CylinderStackPortalShell ( const GeometryContext & gctx,
std::vector< CylinderPortalShell * > shells,
AxisDirection direction,
const Logger & logger = getDummyLogger() )

Construct the portal shell stack from the given shells.

Parameters
gctxThe geometry context
shellsThe shells to stack
Note
The shells must be ordered in the given direction
Parameters
directionThe stacking direction
loggerA logging instance for debugging

Member Function Documentation

◆ applyToVolume()

void Acts::CylinderStackPortalShell::applyToVolume ( )
overridevirtual

Instruct the shell to register the portals with the volume, handing over shared ownership in the process.

Note
The target volume depends on the shell type, e.g. composite shells like the CylinerStackPortalShell register portals to the correct volumes.

Implements Acts::PortalShellBase.

◆ isValid()

bool Acts::CylinderStackPortalShell::isValid ( ) const
overridevirtual

Check if a portal is valid, e.g.

if non of the portals has two unconnected sides.

Returns
True if the shell is valid, false otherwise

Implements Acts::PortalShellBase.

◆ label()

std::string Acts::CylinderStackPortalShell::label ( ) const
overridevirtual

Get a label for the portal shell for debugging purposes.

Returns
A label for the portal shell

Implements Acts::PortalShellBase.

◆ portal()

std::shared_ptr< Portal > Acts::CylinderStackPortalShell::portal ( Face face)
finalvirtual

Retrieve a shared_ptr for the portal associated to the given face.

Can be nullptr if unset.

Parameters
faceThe face to retrieve the portal for
Returns
The portal associated to the face

Implements Acts::CylinderPortalShell.

◆ setPortal()

void Acts::CylinderStackPortalShell::setPortal ( std::shared_ptr< Portal > portal,
Face face )
finalvirtual

Set the portal associated to the given face.

Parameters
portalThe portal to set
faceThe face to set the portal

Implements Acts::CylinderPortalShell.

◆ size()

std::size_t Acts::CylinderStackPortalShell::size ( ) const
finalvirtual

Get the number of portals in the shell.

This number depends on the volume type

Returns
The number of portals in the shell

Implements Acts::PortalShellBase.