ATLAS Offline Software
Loading...
Searching...
No Matches
ActsDetectorElement.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ACTSGEOMETRY_ACTSDETECTORELEMENT_H
6#define ACTSGEOMETRY_ACTSDETECTORELEMENT_H
7
8// Amg Eigen plugin includes
10
11#include "GeoModelKernel/GeoVDetectorElement.h"
14// ATHENA INCLUDES
16
17// ACTS
18#include "Acts/Geometry/DetectorElementBase.hpp"
19#include "Acts/Geometry/GeometryContext.hpp"
20
21// STL
22#include <iostream>
23
24namespace InDetDD {
25class TRT_BaseElement;
28}
29
30namespace Trk {
31class Surface;
32}
33
34namespace Acts {
35class SurfaceBounds;
36}
37
39class IdentityHelper;
40
43
44class ActsDetectorElement : public ActsTrk::IDetectorElement, public GeoVDetectorElement {
45public:
48
49
51
55 const Acts::Transform3 &trf, const InDetDD::TRT_BaseElement &detElem,
56 const Identifier &id // we need explicit ID here b/c of straws
57 );
58
61 const InDetDD::HGTD_DetectorElement &detElem,
62 const Identifier &id // explicit id is needed for HGTD
63 );
64
66 virtual ~ActsDetectorElement() = default;
67
69 Identifier identify() const override final;
70
72 DetectorType detectorType() const override final;
73
76
77 virtual unsigned int storeAlignedTransforms(const ActsTrk::DetectorAlignStore& alignStore) const override;
78
79 virtual const Acts::Transform3 &
80 transform(const Acts::GeometryContext &gctx) const final override;
81
83 virtual const Acts::Surface &surface() const final override;
84
86 virtual Acts::Surface &surface() final override;
87
91
93 virtual double thickness() const final override;
94
96
100 const Acts::Transform3 &getDefaultTransform() const;
101
104 const GeoVDetectorElement *upstreamDetectorElement() const;
105
106 Amg::Transform3D transform(const ActsTrk::DetectorAlignStore* store) const;
107private:
109 DetectorType m_type{DetectorType::UnDefined};
112 const GeoVDetectorElement *m_detElement{nullptr};
114 std::shared_ptr<const Acts::SurfaceBounds> m_bounds{};
116 double m_thickness{0.};
118 std::shared_ptr<Acts::Surface> m_surface{};
119
120 std::unique_ptr<const Amg::Transform3D> m_trtTrf{};
121
123};
124
125namespace ActsTrk{
126 template <> inline Amg::Transform3D
128 return m_parent->transform(store);
129 }
130}
131
132#endif
Eigen::Affine3d Transform3D
ActsDetectorElement(const InDetDD::SiDetectorElement &detElem)
std::unique_ptr< const Amg::Transform3D > m_trtTrf
ActsTrk::GeometryContext::AlignmentStore AlignmentStore
virtual double thickness() const final override
Returns the thickness of the module.
const Acts::Transform3 & getDefaultTransform() const
Returns default transform.
virtual const Acts::Transform3 & transform(const Acts::GeometryContext &gctx) const final override
ActsTrk::DetectorType DetectorType
const Trk::Surface & atlasSurface() const
Return a shared pointer on the ATLAS surface associated with this identifier,.
double m_thickness
Thickness of this detector element.
ActsTrk::TransformCacheDetEle< ActsDetectorElement > m_trfCache
DetectorType detectorType() const override final
Detector type.
virtual ~ActsDetectorElement()=default
Destructor.
std::shared_ptr< const Acts::SurfaceBounds > m_bounds
Boundaries of the detector element.
Identifier identify() const override final
Identifier.
IdentifierHash identifyHash() const
Identifier hash.
IdentityHelper identityHelper() const
std::shared_ptr< Acts::Surface > m_surface
Corresponding Surface.
const GeoVDetectorElement * m_detElement
Detector element as variant.
const GeoVDetectorElement * upstreamDetectorElement() const
Returns the underllying GeoModel detectorelement that this one is based on.
virtual const Acts::Surface & surface() const final override
Return surface associated with this identifier, which should come from the.
virtual unsigned int storeAlignedTransforms(const ActsTrk::DetectorAlignStore &alignStore) const override
Caches the aligned transformation in the provided store. Returns the number of cached elements.
ActsTrk::DetectorAlignStore AlignmentStore
Base class interface for the actual readout elements.
Amg::Transform3D fetchTransform(const DetectorAlignStore *store) const override final
This is a "hash" representation of an Identifier.
Class to hold geometrical description of an HGTD detector element.
Class to hold geometrical description of a silicon detector element.
Virtual base class of TRT readout elements.
Abstract Base Class for tracking surfaces.
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.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Message Stream Member.
Ensure that the ATLAS eigen extensions are properly loaded.
#define private