LDMX Software
tracking::geo::DetectorElement Class Reference

Public Member Functions

 DetectorElement (const std::shared_ptr< Acts::Surface > &surface, const Acts::Transform3 &default_transform, double thickness)
 
Acts::Transform3 uncorrectedTransform () const
 
const Acts::Transform3 & localToGlobalTransform (const Acts::GeometryContext &gctx) const override
 
const Acts::Surface & surface () const override
 
Acts::Surface & surface () override
 
bool isSensitive () const override
 
double thickness () const
 
Acts::GeometryIdentifier geometryId () const
 

Private Attributes

Acts::Transform3 m_transform_ = Acts::Transform3::Identity()
 
std::shared_ptr< Acts::Surface > m_surface_
 
double m_thickness_
 

Detailed Description

Definition at line 15 of file DetectorElement.h.

Constructor & Destructor Documentation

◆ DetectorElement()

tracking::geo::DetectorElement::DetectorElement ( const std::shared_ptr< Acts::Surface > & surface,
const Acts::Transform3 & default_transform,
double thickness )
inline

Definition at line 23 of file DetectorElement.h.

24 {
25 m_surface_ = surface;
26 m_thickness_ = thickness;
27
28 // This is the local to global transformation
29 m_transform_ = default_transform;
30 }

◆ ~DetectorElement()

tracking::geo::DetectorElement::~DetectorElement ( )
override

Definition at line 12 of file DetectorElement.cxx.

12{};

Member Function Documentation

◆ geometryId()

Acts::GeometryIdentifier tracking::geo::DetectorElement::geometryId ( ) const
inline

Definition at line 66 of file DetectorElement.h.

66 {
67 if (!m_surface_)
68 EXCEPTION_RAISE("BadGeometry", "DetectorElement:: surface not assigned");
69
70 return (m_surface_->geometryId());
71 }

◆ isSensitive()

bool tracking::geo::DetectorElement::isSensitive ( ) const
inlineoverride

Definition at line 60 of file DetectorElement.h.

60{ return true; }

◆ localToGlobalTransform()

const Acts::Transform3 & tracking::geo::DetectorElement::localToGlobalTransform ( const Acts::GeometryContext & gctx) const
override

Definition at line 14 of file DetectorElement.cxx.

15 {
16 if (!m_surface_)
17 EXCEPTION_RAISE("BadGeometry",
18 "DetectorElement:: Sensor/Element ID not set");
19
20 // The elementId will be valid only after tracking geometry is built
21 // I will use this fact to return the default transform in order to build
22 // always the same default tracking geometry and modify later the sensor
23 // transformations.
24
25 unsigned int element_id = unpackGeometryIdentifier(m_surface_->geometryId());
26
27 // Check if the elementId is valid
28 if (element_id > 9999) {
29 // elementId not valid: return default transformation
30 return m_transform_;
31 }
32
33 auto ctx = gctx.get<GeometryContext*>();
34
35 // Found the aligned transform for this sensor
36 if ((ctx->alignment_map_).count(element_id) > 0) {
37 const Acts::Transform3& c_transform = ctx->alignment_map_[element_id];
38
39 if (false) {
40 // TODO : Have this in the logging system
41 std::cout << "Aligned transform" << std::endl;
42 std::cout << c_transform.translation() << std::endl;
43 std::cout << c_transform.rotation() << std::endl;
44 std::cout << "Original transform" << std::endl;
45 std::cout << m_transform_.translation() << std::endl;
46 std::cout << m_transform_.rotation() << std::endl;
47 }
48
49 return c_transform;
50 }
51
52 else
53 return m_transform_;
54}
unsigned int unpackGeometryIdentifier(const Acts::GeometryIdentifier &geoId)
The geometry identifier will return vol=0 and lay=0 when it is not valid.
Definition GeoUtils.cxx:5

◆ surface() [1/2]

const Acts::Surface & tracking::geo::DetectorElement::surface ( ) const
override

Definition at line 56 of file DetectorElement.cxx.

56 {
57 if (!m_surface_)
58 EXCEPTION_RAISE(
59 "BadGeometry",
60 "DetectorElement::Attempted to return reference of null ptr");
61 return *m_surface_;
62}

◆ surface() [2/2]

Acts::Surface & tracking::geo::DetectorElement::surface ( )
override

Definition at line 63 of file DetectorElement.cxx.

63 {
64 if (!m_surface_)
65 EXCEPTION_RAISE(
66 "BadGeometry",
67 "DetectorElement::Attempted to return reference of null ptr");
68 return *m_surface_;
69}

◆ thickness()

double tracking::geo::DetectorElement::thickness ( ) const

Definition at line 73 of file DetectorElement.cxx.

73 {
74 // return m_thickness;
75 auto material = static_cast<const Acts::HomogeneousSurfaceMaterial*>(
76 m_surface_->surfaceMaterial());
77 return material->materialSlab(Acts::Vector2{0., 0.}).thickness();
78}

◆ uncorrectedTransform()

Acts::Transform3 tracking::geo::DetectorElement::uncorrectedTransform ( ) const
inline

Definition at line 36 of file DetectorElement.h.

36{ return m_transform_; }

Member Data Documentation

◆ m_surface_

std::shared_ptr<Acts::Surface> tracking::geo::DetectorElement::m_surface_
private

Definition at line 77 of file DetectorElement.h.

◆ m_thickness_

double tracking::geo::DetectorElement::m_thickness_
private

Definition at line 78 of file DetectorElement.h.

◆ m_transform_

Acts::Transform3 tracking::geo::DetectorElement::m_transform_ = Acts::Transform3::Identity()
private

Definition at line 75 of file DetectorElement.h.


The documentation for this class was generated from the following files: