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 localToGlobalTransform(const Acts::GeometryContext &gctx) const final override;
81
83 virtual const Acts::Surface &surface() const final override;
85 virtual bool isSensitive() const final override { return true; }
86
88 virtual Acts::Surface &surface() final override;
89
93
95 double thickness() const;
96
98
102 const Acts::Transform3 &getDefaultTransform() const;
103
106 const GeoVDetectorElement *upstreamDetectorElement() const;
107
108 Amg::Transform3D localToGlobal(const ActsTrk::DetectorAlignStore* store) const;
109private:
111 DetectorType m_type{DetectorType::UnDefined};
114 const GeoVDetectorElement *m_detElement{nullptr};
116 std::shared_ptr<const Acts::SurfaceBounds> m_bounds{};
118 double m_thickness{0.};
120 std::shared_ptr<Acts::Surface> m_surface{};
121
122 std::unique_ptr<const Amg::Transform3D> m_trtTrf{};
123
125};
126
127namespace ActsTrk{
128 template <> inline Amg::Transform3D
130 return m_parent->localToGlobal(store);
131 }
132}
133
134#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. Returns the number of cached elements.
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