ATLAS Offline Software
Loading...
Searching...
No Matches
ActsDetectorElement.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 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/GeometryContext.hpp"
19
20// STL
21#include <memory>
22
23namespace InDetDD {
24class TRT_BaseElement;
27}
28
29namespace Trk {
30class Surface;
31}
32
33namespace Acts {
34class SurfaceBounds;
35}
36
38class IdentityHelper;
39
42
43class ActsDetectorElement : public ActsTrk::IDetectorElement, public GeoVDetectorElement {
44public:
47
48
50
54 const Acts::Transform3 &trf, const InDetDD::TRT_BaseElement &detElem,
55 const Identifier &id // we need explicit ID here b/c of straws
56 );
57
60 const InDetDD::HGTD_DetectorElement &detElem,
61 const Identifier &id // explicit id is needed for HGTD
62 );
63
65 virtual ~ActsDetectorElement() = default;
66
68 Identifier identify() const override final;
69
71 DetectorType detectorType() const override final;
72
75
76 virtual unsigned int storeAlignedTransforms(const ActsTrk::DetectorAlignStore& alignStore) const override;
77
78 virtual const Acts::Transform3 &
79 localToGlobalTransform(const Acts::GeometryContext &gctx) const final override;
80
81 virtual const Acts::Transform3 &
82 localToGlobalTransform(const ActsTrk::DetectorAlignStore* store) const final override;
84 virtual const Acts::Surface &surface() const final override;
86 virtual bool isSensitive() const final override { return true; }
87
89 virtual Acts::Surface &surface() final override;
90
94
96 double thickness() const;
97
99
103 const Acts::Transform3 &getDefaultTransform() const;
104
107 const GeoVDetectorElement *upstreamDetectorElement() const;
108
109 Amg::Transform3D localToGlobal(const ActsTrk::DetectorAlignStore* store) const;
110private:
112 DetectorType m_type{DetectorType::UnDefined};
115 const GeoVDetectorElement *m_detElement{nullptr};
117 std::shared_ptr<const Acts::SurfaceBounds> m_bounds{};
119 double m_thickness{0.};
121 std::shared_ptr<Acts::Surface> m_surface{};
122
123 std::unique_ptr<const Amg::Transform3D> m_trtTrf{};
124
126};
127
128namespace ActsTrk{
129 template <> inline Amg::Transform3D
131 return m_parent->localToGlobal(store);
132 }
133}
134
135#endif
Eigen::Affine3d Transform3D
ActsDetectorElement(const InDetDD::SiDetectorElement &detElem)
std::unique_ptr< const Amg::Transform3D > m_trtTrf
ActsTrk::GeometryContext::AlignmentStore AlignmentStore
const Acts::Transform3 & getDefaultTransform() const
Returns default transform.
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.
virtual bool isSensitive() const final override
Returns whether the detector element is sensitive.
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.
double thickness() const
Returns the thickness of the module.
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.
Amg::Transform3D localToGlobal(const ActsTrk::DetectorAlignStore *store) const
virtual const Acts::Transform3 & localToGlobalTransform(const Acts::GeometryContext &gctx) const final override
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