4#ifndef ActsGeoUtils_VolumePlacement_H
5#define ActsGeoUtils_VolumePlacement_H
13#include "GeoModelKernel/GeoAlignableTransform.h"
14#include "GeoModelKernel/GeoIntrusivePtr.h"
40 std::optional<Amg::Transform3D> addShift = std::nullopt);
46 std::optional<Amg::Transform3D> addShift = std::nullopt);
52 std::optional<Amg::Transform3D> addShift = std::nullopt);
56 void addChild(std::unique_ptr<VolumePlacement>&& child);
108 const std::size_t portalIdx);
Eigen::Affine3d Transform3D
base class interface providing the bare minimal interface extension.
ATLAS extension of the VolumePlacementBase interface.
Auxiliary class to store the aligned transforms of the volume and of the associated portals.
const VolumePlacement * m_parent
Back reference to the parent VolumePlacement.
CacheFlags m_flags
Flags to indicate which transform type is handled.
CacheFlags
Flag to indicate which kind of transform is handled by the AlignedCache.
AlignedCache(const CacheFlags flags, const DetectorType type, const VolumePlacement *parent)
Constructor for the cache storing the of the volume itself.
std::unique_ptr< AlignedCache > m_globToLocCache
Cache to handle the global -> local transform of the volume.
std::vector< std::unique_ptr< AlignedCache > > m_portalCaches
Cache to handle the local -> global transforms of the associated portals.
const Acts::Transform3 & globalToLocalTransform(const Acts::GeometryContext &gctx) const override final
GeoIntrusivePtr< GeoAlignableTransform > AlignableNode_t
Abrivation of an alignable GeoTransform.
Parent_t m_parent
Parent element which is following the alignment.
const Acts::Transform3 & localToGlobalTransform(const Acts::GeometryContext &gctx) const override final
std::unique_ptr< Acts::detail::PortalPlacement > m_surfacePlacement
Pipe the local -> global transform to a surface.
VolumePlacement(const DetectorType detType, const AlignableNode_t parentNode, std::optional< Amg::Transform3D > addShift=std::nullopt)
Constructor taking an Alignable transform from the geometry tree.
GeoIntrusivePtr< GeoTransform > m_refShift
Additional shift on top of the parent position.
void addChild(std::unique_ptr< VolumePlacement > &&child)
Add a child volume placement to this placement.
std::vector< std::unique_ptr< VolumePlacement > > m_children
Children spawning from this VolumePlacement.
unsigned storeAlignedTransforms(const DetectorAlignStore &store) const override final
DetectorType detectorType() const override final
void makePortalsAlignable(const Acts::GeometryContext &gctx, const std::vector< std::shared_ptr< Acts::RegularSurface > > &portalsToAlign) override final
const Acts::Transform3 & portalLocalToGlobal(const Acts::GeometryContext &gctx, const std::size_t portalIdx) const override final
std::variant< AlignableNode_t, const IDetectorElementBase *, const VolumePlacement * > Parent_t
Abrivation of the parent input types that are connected to the alignment system --> A direct alignabl...
std::unique_ptr< AlignedCache > m_locToGlobCache
Cache to handle the local -> global transform of the volume.
void connectCenterSurface(std::shared_ptr< Acts::RegularSurface > surface)
Connect an external surface and place it into the volume center.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
DetectorType
Simple enum to Identify the Type of the ACTS sub detector.
This class is not to needed in AthSimulation.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D