|
ATLAS Offline Software
|
#include <ActsDetectorElement.h>
Definition at line 42 of file ActsDetectorElement.h.
◆ AlignmentStore
◆ DetectorType
◆ ActsDetectorElement() [1/3]
Definition at line 51 of file ActsDetectorElement.cxx.
52 GeoVDetectorElement{detElem.getMaterialGeom()},
68 auto rectangleBounds = std::make_shared<const Acts::RectangleBounds>(hlX, hlY);
71 m_surface = Acts::Surface::makeShared<Acts::PlaneSurface>(rectangleBounds, *
this);
81 auto trapezoidBounds =
82 std::make_shared<const Acts::TrapezoidBounds>(minHlX, maxHlX, hlY);
86 m_surface = Acts::Surface::makeShared<Acts::PlaneSurface>(trapezoidBounds, *
this);
93 if (annulus ==
nullptr) {
94 throw std::domain_error(
"ActsDetectorElement got inconsistent surface");
97 double phi = annulus->phiWidth();
98 double phiS = annulus->stereo();
99 double R = annulus->waferCentreR();
100 double maxR = annulus->maxR();
101 double minR = annulus->minR();
106 double phiMax =
phi / 2.;
107 double phiMin = -phiMax;
113 auto annulusBounds = std::make_shared<Acts::AnnulusBounds>(
114 minR, maxR, phiMin, phiMax, originStripXYRotated, phiAvg);
117 m_surface = Acts::Surface::makeShared<Acts::DiscSurface>(annulusBounds, *
this);
120 std::cout << boundsType << std::endl;
121 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 125 of file ActsDetectorElement.cxx.
128 GeoVDetectorElement{detElem.getMaterialGeom()},
129 m_type{DetectorType::Trt},
140 double innerTubeRadius{0.};
146 brlElem->getDescriptor()->innerTubeRadius() *
length_unit;
148 THROW_EXCEPTION(
"Cannot get tube radius for element in ActsDetectorElement c'tor");
153 std::make_shared<const Acts::LineBounds>(innerTubeRadius,
length);
156 m_surface = Acts::Surface::makeShared<Acts::StrawSurface>(lineBounds, *
this);
◆ ActsDetectorElement() [3/3]
Constructor for an HGTD surface.
Definition at line 159 of file ActsDetectorElement.cxx.
160 GeoVDetectorElement{detElem.getMaterialGeom()},
161 m_type{DetectorType::Hgtd},
174 auto rectangleBounds =
175 std::make_shared<const Acts::RectangleBounds>(hlX, hlY);
179 m_surface = Acts::Surface::makeShared<Acts::PlaneSurface>(rectangleBounds, *
this);
182 throw std::domain_error(
183 "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 259 of file ActsDetectorElement.cxx.
260 if (
const auto *detElem =
262 detElem !=
nullptr) {
263 return detElem->surface();
265 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 247 of file ActsDetectorElement.cxx.
◆ identify()
Identifier ActsDetectorElement::identify |
( |
| ) |
const |
|
finaloverridevirtual |
◆ 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 251 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 187 of file ActsDetectorElement.cxx.
192 case DetectorType::Hgtd:{
193 l2g=
m_detElement->getMaterialGeom()->getAbsoluteTransform(geoModelStore);
195 }
case DetectorType::Trt: {
209 extraTransform = design.
moduleShift() * extraTransform;
215 const Amg::Vector2D origin2D =
static_cast<const Acts::AnnulusBounds&
>(
m_surface->bounds()).moduleOrigin();
218 extraTransform = extraTransform * originTrf.inverse();
220 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_surface
std::shared_ptr<Acts::Surface> ActsDetectorElement::m_surface {} |
|
private |
◆ m_surfaces
std::vector<std::shared_ptr<const Acts::Surface> > ActsDetectorElement::m_surfaces {} |
|
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.
#define THROW_EXCEPTION(MSG)
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.
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 const Trk::SurfaceBounds & bounds() const =0
Element boundary.
double m_thickness
Thickness of this detector element.
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):