|
ACTS
Experiment-independent tracking
|
Composite portal links can graft together other portal link instances, for example grids that could not be merged due to invalid binnings. More...
#include <Acts/Geometry/CompositePortalLink.hpp>
Public Types | |
| using | PortalLinkRange |
| Type alias for range of portal links with const dereferencing transform. | |
Public Member Functions | |
| CompositePortalLink (std::unique_ptr< PortalLinkBase > a, std::unique_ptr< PortalLinkBase > b, AxisDirection direction, bool flatten=true) | |
| Construct a composite portal from two arbitrary other portal links. | |
| CompositePortalLink (std::vector< std::unique_ptr< PortalLinkBase > > links, AxisDirection direction, bool flatten=true) | |
| Construct a composite portal from any number of arbitrary other portal links. | |
| std::size_t | depth () const |
| Get the depth of the composite tree. | |
| PortalLinkRange | links () const |
| Get the range of children. | |
| std::unique_ptr< GridPortalLink > | makeGrid (const GeometryContext &gctx, const Logger &logger) const |
| (Potentially) create a grid portal link that represents this composite portal link. | |
| Result< const TrackingVolume * > | resolveVolume (const GeometryContext &gctx, const Vector2 &position, double tolerance=s_onSurfaceTolerance) const override |
| Resolve the volume for a 2D position. | |
| Result< const TrackingVolume * > | resolveVolume (const GeometryContext &gctx, const Vector3 &position, double tolerance=s_onSurfaceTolerance) const override |
| Resolve the volume for a 3D position. | |
| std::size_t | size () const |
| Get the number of children. | |
| void | toStream (std::ostream &os) const override |
| Print the composite portal link. | |
| Public Member Functions inherited from Acts::PortalLinkBase | |
| virtual | ~PortalLinkBase ()=default |
| Virtual destructor in case the object is held as a derived. | |
| void | setSurface (std::shared_ptr< RegularSurface > surface) |
| Setter for the surface. | |
| const RegularSurface & | surface () const |
| Getter for the associated surface. | |
| const std::shared_ptr< RegularSurface > & | surfacePtr () const |
| Getter for the underlying shared pointer. | |
Additional Inherited Members | |
| Static Public Member Functions inherited from Acts::PortalLinkBase | |
| static std::unique_ptr< PortalLinkBase > | merge (std::unique_ptr< PortalLinkBase > a, std::unique_ptr< PortalLinkBase > b, AxisDirection direction, const Logger &logger=getDummyLogger()) |
| Merge two portal link into a single one. | |
| Protected Member Functions inherited from Acts::PortalLinkBase | |
| PortalLinkBase (std::shared_ptr< RegularSurface > surface) | |
| Constructor from a surface. | |
| Static Protected Member Functions inherited from Acts::PortalLinkBase | |
| static void | checkMergePreconditions (const PortalLinkBase &a, const PortalLinkBase &b, AxisDirection direction) |
| Helper function to check a number of preconditions before merging is executed. | |
| Protected Attributes inherited from Acts::PortalLinkBase | |
| std::shared_ptr< RegularSurface > | m_surface |
| Surface associated with this portal link. | |
Composite portal links can graft together other portal link instances, for example grids that could not be merged due to invalid binnings.
During resolution, it will consult each of it's children and return the result on the first surface where the lookup position is within bounds.
Type alias for range of portal links with const dereferencing transform.
| Acts::CompositePortalLink::CompositePortalLink | ( | std::unique_ptr< PortalLinkBase > | a, |
| std::unique_ptr< PortalLinkBase > | b, | ||
| AxisDirection | direction, | ||
| bool | flatten = true ) |
Construct a composite portal from two arbitrary other portal links.
The only requirement is that the portal link surfaces are mergeable.
| a | The first portal link |
| b | The second portal link |
| direction | The binning direction |
| flatten | If true, the composite will flatten any nested composite |
| Acts::CompositePortalLink::CompositePortalLink | ( | std::vector< std::unique_ptr< PortalLinkBase > > | links, |
| AxisDirection | direction, | ||
| bool | flatten = true ) |
Construct a composite portal from any number of arbitrary other portal links.
The only requirement is that the portal link surfaces are mergeable.
| links | The portal links |
| direction | The binning direction |
| flatten | If true, the composite will flatten any nested composite |
| std::size_t Acts::CompositePortalLink::depth | ( | ) | const |
Get the depth of the composite tree.
| PortalLinkRange Acts::CompositePortalLink::links | ( | ) | const |
Get the range of children.
| std::unique_ptr< GridPortalLink > Acts::CompositePortalLink::makeGrid | ( | const GeometryContext & | gctx, |
| const Logger & | logger ) const |
(Potentially) create a grid portal link that represents this composite portal link.
| gctx | The geometry context |
| logger | The logger |
|
overridevirtual |
Resolve the volume for a 2D position.
position is assumed to be on surface | gctx | The geometry context |
| position | The 2D position |
| tolerance | The on-surface tolerance |
Implements Acts::PortalLinkBase.
|
overridevirtual |
Resolve the volume for a 3D position.
position is assumed to be on surface | gctx | The geometry context |
| position | The 3D position |
| tolerance | The tolerance |
Implements Acts::PortalLinkBase.
| std::size_t Acts::CompositePortalLink::size | ( | ) | const |
Get the number of children.
|
overridevirtual |