9#ifndef TRT_READOUTGEOMETRY_TRT_BASEELEMENT_H
10#define TRT_READOUTGEOMETRY_TRT_BASEELEMENT_H
22#include "Identifier/Identifier.h"
24#include "CLHEP/Geometry/Transform3D.h"
25#include "CLHEP/Geometry/Point3D.h"
Cached unique_ptr with atomic update.
Cached value with atomic update.
Eigen::Affine3d Transform3D
Cached value with atomic update.
Ensure that the extensions for the Vector3D are properly loaded.
This is a "hash" representation of an Identifier.
These are for internal use in TRT_RedoutGeometry.
Virtual base class of TRT readout elements.
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)
virtual const double & strawLength() const =0
Active straw length.
void updateAllCaches(GeoAlignmentStore *alignStore=nullptr) const
Update all caches.
const TRT_Conditions * m_conditions
virtual IdentifierHash identifyHash() const override final
identifier hash
unsigned int nStraws() const
Number of straws in the element.
virtual const Trk::SurfaceBounds & bounds() const override final
Straw layer bounds.
virtual const Trk::Surface & elementSurface() const =0
creates surface for detector element, to be implemented in derived class
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.
virtual TRT_BaseElement::Type type() const =0
Type information: returns BARREL or ENDCAP.
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.
virtual ~TRT_BaseElement()=default
Destructor:
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 Trk::DetectorElemType detectorType() const override final
TrkDetElementBase interface detectorTyoe.
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
const GeoTrf::Transform3D & defTransform() const
Get Default Transform (of module in barrel, layer in endcap) from GeoModel before alignment correctio...
std::vector< CxxUtils::CachedUniquePtr< SurfaceCacheBase > > m_strawSurfacesCache
helper element surface for the cache
Amg::Vector3D strawAxis(int straw) const
Straw axis.
const TRT_BaseElement & operator=(const TRT_BaseElement &right)
Illegal operations:
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.
This is the base class for all tracking detector elements with read-out relevant information.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 3, 1 > Vector3D
CachedUniquePtrT< const T > CachedUniquePtr
Ensure that the ATLAS eigen extensions are properly loaded.