|
ATLAS Offline Software
|
#include <SiDetElementBoundaryLink_xk.h>
◆ AxisDirection
◆ IntersectionStatus
◆ SiDetElementBoundaryLink_xk() [1/2]
Definition at line 27 of file SiDetElementBoundaryLink_xk.cxx.
38 double x[4],
y[4],
z[4];
39 double Ax[3] = {1., 0., 0.};
40 double Ay[3] = {0., 1., 0.};
54 auto corners = annulusBounds->
corners();
56 x[0] = corners[0].first;
57 y[0] = corners[0].second -
m_dR;
60 x[1] = corners[1].first;
61 y[1] = corners[1].second -
m_dR;
64 x[2] = corners[2].first;
65 y[2] = corners[2].second -
m_dR;
68 x[3] = corners[3].first;
69 y[3] = corners[3].second -
m_dR;
89 x[0] =
AF.x()*Swmax+
AE.x()*Sl;
90 y[0] =
AF.y()*Swmax+
AE.y()*Sl;
91 z[0] =
AF.z()*Swmax+
AE.z()*Sl;
93 x[1] =
AF.x()*Swmin-
AE.x()*Sl;
94 y[1] =
AF.y()*Swmin-
AE.y()*Sl;
95 z[1] =
AF.z()*Swmin-
AE.z()*Sl;
97 x[2] =-
AF.x()*Swmin-
AE.x()*Sl;
98 y[2] =-
AF.y()*Swmin-
AE.y()*Sl;
99 z[2] =-
AF.z()*Swmin-
AE.z()*Sl;
101 x[3] =-
AF.x()*Swmax+
AE.x()*Sl;
102 y[3] =-
AF.y()*Swmax+
AE.y()*Sl;
103 z[3] =-
AF.z()*Swmax+
AE.z()*Sl;
144 constexpr std::array<std::pair<int, int>, 4>
combinations = {
145 {{0, 1}, {1, 2}, {2, 3}, {3, 0}}};
146 for (
unsigned int bound = 0; bound <
combinations.size(); bound++) {
153 double x1 =
x[firstCornerIndex]*Ax[0]+
y[firstCornerIndex]*Ax[1]+
z[firstCornerIndex]*Ax[2];
154 double y1 =
x[firstCornerIndex]*Ay[0]+
y[firstCornerIndex]*Ay[1]+
z[firstCornerIndex]*Ay[2];
155 double x2 =
x[secondCornerIndex]*Ax[0]+
y[secondCornerIndex]*Ax[1]+
z[secondCornerIndex]*Ax[2];
156 double y2 =
x[secondCornerIndex]*Ay[0]+
y[secondCornerIndex]*Ay[1]+
z[secondCornerIndex]*Ay[2];
◆ SiDetElementBoundaryLink_xk() [2/2]
◆ ~SiDetElementBoundaryLink_xk()
InDet::SiDetElementBoundaryLink_xk::~SiDetElementBoundaryLink_xk |
( |
| ) |
|
|
default |
◆ detElement()
◆ intersect()
Definition at line 178 of file SiDetElementBoundaryLink_xk.cxx.
195 int direction = InDet::SiDetElementBoundaryLink_xk::AxisDirection::PositiveX;
199 constexpr std::array<int, 3> otherDirections = {
200 InDet::SiDetElementBoundaryLink_xk::AxisDirection::NegativeY,
201 InDet::SiDetElementBoundaryLink_xk::AxisDirection::NegativeX,
202 InDet::SiDetElementBoundaryLink_xk::AxisDirection::PositiveY};
204 for (
const auto& testDirection : otherDirections) {
208 direction = testDirection;
215 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::Outside;
227 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::NotInsideNorOutside;
232 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::Outside;
238 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::Inside;
246 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::NotInsideNorOutside;
250 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::Outside;
253 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::Inside;
258 return InDet::SiDetElementBoundaryLink_xk::IntersectionStatus::NotInsideNorOutside;
◆ operator=()
◆ m_bound
double InDet::SiDetElementBoundaryLink_xk::m_bound[4][3] {} |
|
protected |
◆ m_detelement
◆ m_dR
double InDet::SiDetElementBoundaryLink_xk::m_dR |
|
protected |
◆ m_ITkGeometry
bool InDet::SiDetElementBoundaryLink_xk::m_ITkGeometry |
|
protected |
The documentation for this class was generated from the following files:
constexpr double tolerance
virtual Amg::Vector3D sensorCenter() const
Return the centre of a sensor in the local reference frame.
const Amg::Vector3D & etaAxis() const
virtual double length() const =0
Method to calculate length of a module.
Trk::Surface & surface()
Element Surface.
#define AmgSymMatrix(dim)
Eigen::Affine3d Transform3D
virtual double maxWidth() const =0
Method to calculate maximum width of a module.
const InDetDD::SiDetectorElement * m_detelement
Amg::Vector2D localPosition() const
Access method for the local coordinates, local parameter definitions differ for each surface type.
virtual const Trk::SurfaceBounds & bounds() const =0
Element boundary.
Eigen::Matrix< double, 3, 1 > Vector3D
def combinations(items, n)
virtual double minWidth() const =0
Method to calculate minimum width of a module.
const Amg::Vector3D & phiAxis() const
std::array< std::pair< double, double >, 4 > corners() const
Returns the four corners of the bounds.
bool nearBondGap(const Amg::Vector2D &localPosition, double etaTol) const
Test if near bond gap within tolerances.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.