 |
ATLAS Offline Software
|
#include <ActsDetectorElement.h>
Definition at line 44 of file ActsDetectorElement.h.
◆ AlignmentStore
◆ DetectorType
◆ ActsDetectorElement() [1/3]
Definition at line 53 of file ActsDetectorElement.cxx.
54 GeoVDetectorElement{detElem.getMaterialGeom()},
73 auto rectangleBounds = std::make_shared<const Acts::RectangleBounds>(hlX, hlY);
76 m_surface = Acts::Surface::makeShared<Acts::PlaneSurface>(rectangleBounds, *
this);
86 auto trapezoidBounds =
87 std::make_shared<const Acts::TrapezoidBounds>(minHlX, maxHlX, hlY);
91 m_surface = Acts::Surface::makeShared<Acts::PlaneSurface>(trapezoidBounds, *
this);
98 if (annulus ==
nullptr) {
99 throw std::domain_error(
"ActsDetectorElement got inconsistent surface");
102 double phi = annulus->phiWidth();
103 double phiS = annulus->stereo();
104 double R = annulus->waferCentreR();
105 double maxR = annulus->maxR();
106 double minR = annulus->minR();
111 double phiMax =
phi / 2.;
112 double phiMin = -phiMax;
118 auto annulusBounds = std::make_shared<Acts::AnnulusBounds>(
119 minR, maxR, phiMin, phiMax, originStripXYRotated, phiAvg);
122 m_surface = Acts::Surface::makeShared<Acts::DiscSurface>(annulusBounds, *
this);
125 std::cout << boundsType << std::endl;
126 throw std::domain_error(
"ActsDetectorElement does not support this surface type");
◆ ActsDetectorElement() [2/3]
Constructor for a straw surface.
- Parameters
-
transform | Transform to the straw system |
Definition at line 130 of file ActsDetectorElement.cxx.
133 GeoVDetectorElement{detElem.getMaterialGeom()},
135 m_type{DetectorType::Trt},
148 double innerTubeRadius{0.};
154 brlElem->getDescriptor()->innerTubeRadius() *
length_unit;
156 THROW_EXCEPTION(
"Cannot get tube radius for element in ActsDetectorElement c'tor");
161 std::make_shared<const Acts::LineBounds>(innerTubeRadius,
length);
164 m_surface = Acts::Surface::makeShared<Acts::StrawSurface>(lineBounds, *
this);
◆ ActsDetectorElement() [3/3]
Constructor for an HGTD surface.
Definition at line 167 of file ActsDetectorElement.cxx.
168 GeoVDetectorElement{detElem.getMaterialGeom()},
170 m_type{DetectorType::Hgtd},
184 auto rectangleBounds =
185 std::make_shared<const Acts::RectangleBounds>(hlX, hlY);
189 m_surface = Acts::Surface::makeShared<Acts::PlaneSurface>(rectangleBounds, *
this);
192 throw std::domain_error(
193 "ActsDetectorElement: the surface type of HGTD is not does not Rectangle, it is wrong");
◆ ~ActsDetectorElement()
virtual ActsDetectorElement::~ActsDetectorElement |
( |
| ) |
|
|
virtualdefault |
◆ atlasSurface()
Return a shared pointer on the ATLAS surface associated with this identifier,.
Definition at line 269 of file ActsDetectorElement.cxx.
270 if (
const auto *detElem =
272 detElem !=
nullptr) {
273 return detElem->surface();
275 throw std::domain_error(
"Cannot get surface for TRT element");
◆ detectorType()
◆ getDefaultTransform()
const Acts::Transform3 & ActsDetectorElement::getDefaultTransform |
( |
| ) |
const |
Returns default transform.
For TRT this is static and set in constructor. For silicon detectors it is calulated from GM, and stored. Thus the method is not const. The store is mutexed.
Definition at line 257 of file ActsDetectorElement.cxx.
◆ identify()
Identifier ActsDetectorElement::identify |
( |
| ) |
const |
|
finaloverridevirtual |
◆ identifyHash()
◆ identityHelper()
◆ storeAlignedTransforms()
◆ surface() [1/2]
const Acts::Surface & ActsDetectorElement::surface |
( |
| ) |
const |
|
finaloverridevirtual |
Return surface associated with this identifier, which should come from the.
Definition at line 261 of file ActsDetectorElement.cxx.
◆ surface() [2/2]
Acts::Surface & ActsDetectorElement::surface |
( |
| ) |
|
|
finaloverridevirtual |
◆ thickness()
double ActsDetectorElement::thickness |
( |
| ) |
const |
|
finaloverridevirtual |
◆ transform() [1/2]
const Acts::Transform3 & ActsDetectorElement::transform |
( |
const Acts::GeometryContext & |
gctx | ) |
const |
|
finaloverridevirtual |
◆ transform() [2/2]
Pixel or Sct
Definition at line 197 of file ActsDetectorElement.cxx.
202 case DetectorType::Hgtd:{
203 l2g=
m_detElement->getMaterialGeom()->getAbsoluteTransform(geoModelStore);
205 }
case DetectorType::Trt: {
219 extraTransform = design.
moduleShift() * extraTransform;
225 const Amg::Vector2D origin2D =
static_cast<const Acts::AnnulusBounds&
>(
m_surface->bounds()).moduleOrigin();
228 extraTransform = extraTransform * originTrf.inverse();
230 l2g =
m_detElement->getMaterialGeom()->getAbsoluteTransform(geoModelStore) * extraTransform;
◆ upstreamDetectorElement()
const GeoVDetectorElement * ActsDetectorElement::upstreamDetectorElement |
( |
| ) |
const |
◆ m_bounds
std::shared_ptr<const Acts::SurfaceBounds> ActsDetectorElement::m_bounds {} |
|
private |
◆ m_detElement
const GeoVDetectorElement* ActsDetectorElement::m_detElement {nullptr} |
|
private |
◆ m_explicitIdentifier
Identifier ActsDetectorElement::m_explicitIdentifier {} |
|
private |
◆ m_idHash
◆ m_surface
std::shared_ptr<Acts::Surface> ActsDetectorElement::m_surface {} |
|
private |
◆ m_thickness
double ActsDetectorElement::m_thickness {0.} |
|
private |
◆ m_trfCache
◆ m_trtTrf
◆ m_type
DetectorType ActsDetectorElement::m_type {DetectorType::UnDefined} |
|
private |
The documentation for this class was generated from the following files:
Ensure that the extensions for the Vector3D are properly loaded.
virtual const double & strawLength() const =0
Active straw length.
virtual double width() const =0
Method to calculate average width of a module.
Scalar phi() const
phi method
virtual const Amg::Transform3D moduleShift() const
const GeoVDetectorElement * m_detElement
Detector element as variant.
Eigen::Matrix< double, 2, 1 > Vector2D
virtual double length() const =0
Method to calculate length of a module.
DetectorType detectorType() const override final
Detector type.
constexpr double length_unit
double innerTubeRadius() const
Get inner tube radius of the straw.
std::unique_ptr< const Amg::Transform3D > m_trtTrf
virtual double length() const
Method to calculate length of a module.
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
const HGTD_ModuleDesign & design() const override final
access to the local description:
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
std::shared_ptr< const Acts::SurfaceBounds > m_bounds
Boundaries of the detector element.
virtual BoundsType type() const =0
Return the bounds type - for persistency optimization.
@ Pixel
Inner detector legacy.
const TRT_BarrelDescriptor * getDescriptor() const
Returns a pointer to a descriptor, giving common information on module construction:
Eigen::Affine3d Transform3D
std::shared_ptr< Acts::Surface > m_surface
Corresponding Surface.
virtual const Trk::SurfaceBounds & bounds() const override final
Return the boundaries of the element.
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
virtual double maxWidth() const =0
Method to calculate maximum width of a module.
virtual IdentifierHash identifyHash() const override final
identifier hash
virtual const Trk::SurfaceBounds & bounds() const =0
Element boundary.
double m_thickness
Thickness of this detector element.
#define THROW_EXCEPTION(MESSAGE)
ActsTrk::TransformCacheDetEle< ActsDetectorElement > m_trfCache
virtual double minWidth() const =0
Method to calculate minimum width of a module.
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
Identifier m_explicitIdentifier
Eigen::Translation< double, 3 > Translation3D
virtual double width() const
Method to calculate average width of a module.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
virtual Identifier identify() const override final
identifier of this detector element (inline)