41const HepGeom::Transform3D
57const std::vector<const Trk::Surface*>&
61 std::vector<const Trk::Surface*> tmp_surfaces;
62 tmp_surfaces.reserve(
nStraws());
63 for (
unsigned is = 0; is <
nStraws(); ++is) {
184 std::make_unique<Trk::StraightLineSurface>(*
this,
id));
188std::unique_ptr<SurfaceCacheBase>
197 return std::make_unique<SurfaceCacheBase>(sTransform, sCenter);
227 for (
unsigned int iStraw = 0; iStraw <
nStraws(); iStraw++) {
This is an Identifier helper class for the TRT subdetector.
Ensure that the extensions for the Vector3D are properly loaded.
const std::vector< const Trk::Surface * > & surfaces() const
Returns the full list of all detection surfaces associated to this detector element.
const HepGeom::Transform3D getAbsoluteTransform(int straw) const
This is an alias to strawTransform(int straw)
void updateAllCaches(GeoAlignmentStore *alignStore=nullptr) const
Update all caches.
const TRT_Conditions * m_conditions
unsigned int nStraws() const
Number of straws in the element.
virtual const Trk::SurfaceBounds & bounds() const override final
Straw layer bounds.
const TRT_ID * m_idHelper
std::unique_ptr< SurfaceCacheBase > createSurfaceCacheHelper(int straw, GeoAlignmentStore *alignStore=nullptr) const
virtual Identifier identify() const override final
identifier of this detector element:
TRT_BaseElement(const GeoVFullPhysVol *volume, const Identifier &id, const TRT_ID *idHelper, const TRT_Conditions *conditions)
Constructor:
virtual const Trk::Surface & surface() const override final
Element Surface: access to the Surface (straw layer)
virtual int strawDirection() const =0
StrawDirection.
void invalidate()
Invalidate cache.
virtual HepGeom::Transform3D calculateStrawTransform(int straw, GeoAlignmentStore *alignStore=nullptr) const =0
to be overloaded by the extended classes
const TRT_Conditions * conditions() const
Return the TRT_Conditions object associated to this Detector element.
CxxUtils::CachedValue< std::vector< const Trk::Surface * > > m_surfaces
void deleteCache()
Helper method for cache dealing.
virtual const Amg::Vector3D & normal() const override final
Element Surface: normal of a straw layer.
virtual const Amg::Transform3D & transform() const override final
Element Surface: Get Transform of element in Tracking frame: Amg.
virtual const Amg::Vector3D & center() const override final
Element Surface: center of a straw layer.
CxxUtils::CachedValue< SurfaceCache > m_surfaceCache
const Amg::Transform3D & strawTransform(unsigned int straw) const
Straw transform - fast access in array, in Tracking frame: Amg.
void invalidateOther() const
invalidate action on the cache
virtual const Trk::SurfaceBounds & strawBounds() const =0
the straw bounds
virtual void createSurfaceCache(GeoAlignmentStore *alignStore=nullptr) const =0
create the surface cache of the detector element, to be implementd in the deried class
std::vector< CxxUtils::CachedUniquePtr< SurfaceCacheBase > > m_strawSurfacesCache
helper element surface for the cache
Amg::Vector3D strawAxis(int straw) const
Straw axis.
CxxUtils::CachedUniquePtr< Trk::Surface > m_surface
const Amg::Vector3D & strawCenter(int straw) const
Straw Surface: Local -> global transform of the straw via integer.
std::vector< CxxUtils::CachedUniquePtr< Trk::StraightLineSurface > > m_strawSurfaces
const Trk::StraightLineSurface & strawSurface(int straw) const
Straw Surface: access to the surface via integer.
This class is an interface to conditions objects.
This is an Identifier helper class for the TRT subdetector.
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
Abstract base class for surface bounds to be specified.
Abstract Base Class for tracking surfaces.
TrkDetElementBase(const GeoVFullPhysVol *fullPhysVol)
Constructor from GeoVFullPhysVolume.
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.