Belle II Software  release-05-01-25
AlignmentChecker.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Kirill Chilikin *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 /* Own header. */
12 #include <klm/eklm/geometry/AlignmentChecker.h>
13 
14 /* KLM headers. */
15 #include <klm/dbobjects/eklm/EKLMAlignment.h>
16 #include <klm/eklm/geometry/Polygon2D.h>
17 
18 /* Belle 2 headers. */
19 #include <framework/gearbox/Unit.h>
20 #include <framework/logging/Logger.h>
21 
22 using namespace Belle2;
23 
25  m_PrintOverlaps(printOverlaps),
26  m_GeoDat(&(EKLM::GeometryData::Instance())),
27  m_ElementNumbers(&(EKLMElementNumbers::Instance()))
28 {
29  int iPlane, iSegmentSupport;
30  const EKLMGeometry::SectorSupportGeometry* sectorSupportGeometry =
32  const EKLMGeometry::ElementPosition* sectorSupportPosition =
34  m_LineCorner1 = new LineSegment2D(sectorSupportGeometry->getCorner1AInner(),
35  sectorSupportGeometry->getCorner1BInner());
36  m_ArcOuter = new Arc2D(
37  0, 0, sectorSupportPosition->getOuterR() -
38  sectorSupportGeometry->getThickness(),
39  atan2(sectorSupportGeometry->getCorner2Inner().y(),
40  sectorSupportGeometry->getCorner2Inner().x()),
41  atan2(sectorSupportGeometry->getCorner1BInner().y(),
42  sectorSupportGeometry->getCorner1BInner().x()));
43  m_Line23 = new LineSegment2D(sectorSupportGeometry->getCorner2Inner(),
44  sectorSupportGeometry->getCorner3Inner());
45  m_ArcInner = new Arc2D(
46  0, 0, sectorSupportPosition->getInnerR() +
47  sectorSupportGeometry->getThickness(),
48  atan2(sectorSupportGeometry->getCorner3Inner().y(),
49  sectorSupportGeometry->getCorner3Inner().x()),
50  atan2(sectorSupportGeometry->getCorner4Inner().y(),
51  sectorSupportGeometry->getCorner4Inner().x()));
52  m_Line41 = new LineSegment2D(sectorSupportGeometry->getCorner4Inner(),
53  sectorSupportGeometry->getCorner1AInner());
55  for (iPlane = 1; iPlane <= m_GeoDat->getNPlanes(); iPlane++) {
56  m_SegmentSupport[iPlane - 1] =
57  new Polygon2D*[m_GeoDat->getNSegments() + 1];
58  for (iSegmentSupport = 1; iSegmentSupport <= m_GeoDat->getNSegments() + 1;
59  iSegmentSupport++)
60  m_SegmentSupport[iPlane - 1][iSegmentSupport - 1] = nullptr;
61  }
62 }
63 
65 {
66  int iPlane, iSegmentSupport;
67  delete m_LineCorner1;
68  delete m_ArcOuter;
69  delete m_Line23;
70  delete m_ArcInner;
71  delete m_Line41;
72  for (iPlane = 1; iPlane <= m_GeoDat->getNPlanes(); iPlane++) {
73  for (iSegmentSupport = 1; iSegmentSupport <= m_GeoDat->getNSegments() + 1;
74  iSegmentSupport++) {
75  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1] != nullptr)
76  delete m_SegmentSupport[iPlane - 1][iSegmentSupport - 1];
77  }
78  delete[] m_SegmentSupport[iPlane - 1];
79  }
80  delete[] m_SegmentSupport;
81 }
82 
84 checkSectorAlignment(int section, int layer, int sector,
85  const KLMAlignmentData* sectorAlignment) const
86 {
87  int iPlane, iSegmentSupport, iSegment, j;
88  double lx, ly;
89  HepGeom::Point3D<double> supportRectangle[4];
90  HepGeom::Transform3D t;
91  const EKLMGeometry::SegmentSupportPosition* segmentSupportPos;
92  const EKLMGeometry::SegmentSupportGeometry* segmentSupportGeometry =
93  m_GeoDat->getSegmentSupportGeometry();
94  KLMAlignmentData segmentAlignment(0, 0, 0, 0, 0, 0);
95  for (iPlane = 1; iPlane <= m_GeoDat->getNPlanes(); iPlane++) {
96  for (iSegmentSupport = 1; iSegmentSupport <= m_GeoDat->getNSegments() + 1;
97  iSegmentSupport++) {
98  segmentSupportPos =
99  m_GeoDat->getSegmentSupportPosition(iPlane, iSegmentSupport);
100  lx = 0.5 * (segmentSupportPos->getLength() -
101  segmentSupportPos->getDeltaLLeft() -
102  segmentSupportPos->getDeltaLRight());
103  ly = 0.5 * (segmentSupportGeometry->getMiddleWidth());
104  supportRectangle[0].setX(lx);
105  supportRectangle[0].setY(ly);
106  supportRectangle[0].setZ(0);
107  supportRectangle[1].setX(-lx);
108  supportRectangle[1].setY(ly);
109  supportRectangle[1].setZ(0);
110  supportRectangle[2].setX(-lx);
111  supportRectangle[2].setY(-ly);
112  supportRectangle[2].setZ(0);
113  supportRectangle[3].setX(lx);
114  supportRectangle[3].setY(-ly);
115  supportRectangle[3].setZ(0);
116  t = HepGeom::Translate3D(
117  0.5 * (segmentSupportPos->getDeltaLLeft() -
118  segmentSupportPos->getDeltaLRight()) +
119  segmentSupportPos->getX(), segmentSupportPos->getY(), 0);
120  if (iPlane == 1)
121  t = HepGeom::Rotate3D(180. * CLHEP::deg,
122  HepGeom::Vector3D<double>(1., 1., 0.)) * t;
123  t = HepGeom::Translate3D(sectorAlignment->getDeltaU() * CLHEP::cm / Unit::cm,
124  sectorAlignment->getDeltaV() * CLHEP::cm / Unit::cm,
125  0) *
126  HepGeom::RotateZ3D(sectorAlignment->getDeltaGamma() *
127  CLHEP::rad / Unit::rad) * t;
128  for (j = 0; j < 4; j++)
129  supportRectangle[j] = t * supportRectangle[j];
130  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1] != nullptr)
131  delete m_SegmentSupport[iPlane - 1][iSegmentSupport - 1];
132  m_SegmentSupport[iPlane - 1][iSegmentSupport - 1] =
133  new Polygon2D(supportRectangle, 4);
134  }
135  }
136  for (iPlane = 1; iPlane <= m_GeoDat->getNPlanes(); iPlane++) {
137  for (iSegmentSupport = 1; iSegmentSupport <= m_GeoDat->getNSegments() + 1;
138  iSegmentSupport++) {
139  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1]->hasIntersection(
140  *m_LineCorner1)) {
141  if (m_PrintOverlaps)
142  B2ERROR("Segment support overlaps with corner 1."
143  << LogVar("Section", section) << LogVar("Layer", layer)
144  << LogVar("Sector", sector)
145  << LogVar("Segment support", iSegmentSupport));
146  return false;
147  }
148  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1]->hasIntersection(
149  *m_ArcOuter)) {
150  if (m_PrintOverlaps)
151  B2ERROR("Segment support overlaps with outer arc."
152  << LogVar("Section", section) << LogVar("Layer", layer)
153  << LogVar("Sector", sector)
154  << LogVar("Segment support", iSegmentSupport));
155  return false;
156  }
157  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1]->hasIntersection(
158  *m_Line23)) {
159  if (m_PrintOverlaps)
160  B2ERROR("Segment support overlaps with line 2-3."
161  << LogVar("Section", section) << LogVar("Layer", layer)
162  << LogVar("Sector", sector)
163  << LogVar("Segment support", iSegmentSupport));
164  return false;
165  }
166  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1]->hasIntersection(
167  *m_ArcInner)) {
168  if (m_PrintOverlaps)
169  B2ERROR("Segment support overlaps with inner arc."
170  << LogVar("Section", section) << LogVar("Layer", layer)
171  << LogVar("Sector", sector)
172  << LogVar("Segment support", iSegmentSupport));
173  return false;
174  }
175  if (m_SegmentSupport[iPlane - 1][iSegmentSupport - 1]->hasIntersection(
176  *m_Line41)) {
177  if (m_PrintOverlaps)
178  B2ERROR("Segment support overlaps with line 4-1."
179  << LogVar("Section", section) << LogVar("Layer", layer)
180  << LogVar("Sector", sector)
181  << LogVar("Segment support", iSegmentSupport));
182  return false;
183  }
184  }
185  }
186  for (iPlane = 1; iPlane <= m_GeoDat->getNPlanes(); iPlane++) {
187  for (iSegment = 1; iSegment <= m_GeoDat->getNSegments(); iSegment++) {
188  if (!checkSegmentAlignment(section, layer, sector, iPlane, iSegment,
189  sectorAlignment, &segmentAlignment, true))
190  return false;
191  }
192  }
193  return true;
194 }
195 
197 checkSegmentAlignment(int section, int layer, int sector, int plane, int segment,
198  const KLMAlignmentData* sectorAlignment,
199  const KLMAlignmentData* segmentAlignment,
200  bool calledFromSectorCheck) const
201 {
202  /* cppcheck-suppress variableScope */
203  int i, j, iStrip;
204  /* cppcheck-suppress variableScope */
205  double lx, ly;
206  HepGeom::Point3D<double> stripRectangle[4];
207  HepGeom::Transform3D t;
208  const EKLMGeometry::StripGeometry* stripGeometry =
209  m_GeoDat->getStripGeometry();
210  if (!calledFromSectorCheck) {
211  if (!checkSectorAlignment(section, layer, sector, sectorAlignment))
212  return false;
213  }
214  ly = 0.5 * stripGeometry->getWidth();
215  for (i = 1; i <= m_ElementNumbers->getNStripsSegment(); i++) {
216  iStrip = m_ElementNumbers->getNStripsSegment() * (segment - 1) + i;
217  const EKLMGeometry::ElementPosition* stripPosition =
218  m_GeoDat->getStripPosition(iStrip);
219  lx = 0.5 * stripPosition->getLength();
220  stripRectangle[0].setX(lx);
221  stripRectangle[0].setY(ly);
222  stripRectangle[0].setZ(0);
223  stripRectangle[1].setX(-lx);
224  stripRectangle[1].setY(ly);
225  stripRectangle[1].setZ(0);
226  stripRectangle[2].setX(-lx);
227  stripRectangle[2].setY(-ly);
228  stripRectangle[2].setZ(0);
229  stripRectangle[3].setX(lx);
230  stripRectangle[3].setY(-ly);
231  stripRectangle[3].setZ(0);
232  t = HepGeom::Translate3D(segmentAlignment->getDeltaU() * CLHEP::cm / Unit::cm,
233  segmentAlignment->getDeltaV() * CLHEP::cm / Unit::cm,
234  0) *
235  HepGeom::Translate3D(stripPosition->getX(), stripPosition->getY(), 0) *
236  HepGeom::RotateZ3D(segmentAlignment->getDeltaGamma() *
237  CLHEP::rad / Unit::rad);
238  if (plane == 1)
239  t = HepGeom::Rotate3D(180. * CLHEP::deg,
240  HepGeom::Vector3D<double>(1., 1., 0.)) * t;
241  t = HepGeom::Translate3D(sectorAlignment->getDeltaU() * CLHEP::cm / Unit::cm,
242  sectorAlignment->getDeltaV() * CLHEP::cm / Unit::cm,
243  0) *
244  HepGeom::RotateZ3D(sectorAlignment->getDeltaGamma() *
245  CLHEP::rad / Unit::rad) * t;
246  for (j = 0; j < 4; j++)
247  stripRectangle[j] = t * stripRectangle[j];
248  Polygon2D stripPolygon(stripRectangle, 4);
249  if (stripPolygon.hasIntersection(*m_LineCorner1)) {
250  if (m_PrintOverlaps)
251  B2ERROR("Strip overlaps with corner 1."
252  << LogVar("Section", section) << LogVar("Layer", layer)
253  << LogVar("Sector", sector) << LogVar("Plane", plane)
254  << LogVar("Strip", iStrip));
255  return false;
256  }
257  if (stripPolygon.hasIntersection(*m_ArcOuter)) {
258  if (m_PrintOverlaps)
259  B2ERROR("Strip overlaps with outer arc."
260  << LogVar("Section", section) << LogVar("Layer", layer)
261  << LogVar("Sector", sector) << LogVar("Plane", plane)
262  << LogVar("Strip", iStrip));
263  B2ERROR("Overlap (section " << section << ", layer " << layer <<
264  ", sector " << sector << ", plane " << plane <<
265  "): strip " << iStrip << ", outer arc.");
266  return false;
267  }
268  if (stripPolygon.hasIntersection(*m_Line23)) {
269  if (m_PrintOverlaps)
270  B2ERROR("Strip overlaps with line 2-3."
271  << LogVar("Section", section) << LogVar("Layer", layer)
272  << LogVar("Sector", sector) << LogVar("Plane", plane)
273  << LogVar("Strip", iStrip));
274  return false;
275  }
276  if (stripPolygon.hasIntersection(*m_ArcInner)) {
277  if (m_PrintOverlaps)
278  B2ERROR("Strip overlaps with inner arc."
279  << LogVar("Section", section) << LogVar("Layer", layer)
280  << LogVar("Sector", sector) << LogVar("Plane", plane)
281  << LogVar("Strip", iStrip));
282  B2ERROR("Overlap (section " << section << ", layer " << layer <<
283  ", sector " << sector << ", plane " << plane <<
284  "): strip " << iStrip << ", inner arc.");
285  return false;
286  }
287  if (stripPolygon.hasIntersection(*m_Line41)) {
288  if (m_PrintOverlaps)
289  B2ERROR("Strip overlaps with line 4-1."
290  << LogVar("Section", section) << LogVar("Layer", layer)
291  << LogVar("Sector", sector) << LogVar("Plane", plane)
292  << LogVar("Strip", iStrip));
293  return false;
294  }
295  for (j = 0; j <= m_GeoDat->getNSegments(); j++) {
296  if (stripPolygon.hasIntersection(*m_SegmentSupport[plane - 1][j])) {
297  if (m_PrintOverlaps)
298  B2ERROR("Strip overlaps with segment support."
299  << LogVar("Section", section) << LogVar("Layer", layer)
300  << LogVar("Sector", sector) << LogVar("Plane", plane)
301  << LogVar("Strip", iStrip)
302  << LogVar("Segment support", j + 1));
303  return false;
304  }
305  }
306  }
307  return true;
308 }
309 
311  const EKLMAlignment* alignment,
312  const EKLMSegmentAlignment* segmentAlignment) const
313 {
314  int iSection, iLayer, iSector, iPlane, iSegment, sector, segment;
315  for (iSection = 1; iSection <= m_GeoDat->getNSections(); iSection++) {
316  for (iLayer = 1; iLayer <= m_GeoDat->getNDetectorLayers(iSection);
317  iLayer++) {
318  for (iSector = 1; iSector <= m_GeoDat->getNSectors(); iSector++) {
319  sector = m_ElementNumbers->sectorNumber(iSection, iLayer, iSector);
320  const KLMAlignmentData* sectorAlignment =
321  alignment->getModuleAlignment(sector);
322  if (sectorAlignment == nullptr)
323  B2FATAL("Incomplete alignment data.");
324  if (!checkSectorAlignment(iSection, iLayer, iSector, sectorAlignment))
325  return false;
326  for (iPlane = 1; iPlane <= m_GeoDat->getNPlanes(); iPlane++) {
327  for (iSegment = 1; iSegment <= m_GeoDat->getNSegments(); iSegment++) {
328  segment = m_ElementNumbers->segmentNumber(
329  iSection, iLayer, iSector, iPlane, iSegment);
330  const KLMAlignmentData* segmentAlignmentData =
331  segmentAlignment->getSegmentAlignment(segment);
332  if (segmentAlignment == nullptr)
333  B2FATAL("Incomplete alignment data.");
334  if (!checkSegmentAlignment(iSection, iLayer, iSector, iPlane,
335  iSegment, sectorAlignment,
336  segmentAlignmentData, false))
337  return false;
338  }
339  }
340  }
341  }
342  }
343  return true;
344 }
345 
Belle2::Unit::cm
static const double cm
Standard units with the value = 1.
Definition: Unit.h:57
Belle2::EKLMGeometry::getNSegments
int getNSegments() const
Get number of segments.
Definition: EKLMGeometry.h:1725
Belle2::EKLMElementNumbers
EKLM element numbers.
Definition: EKLMElementNumbers.h:34
Belle2::EKLMGeometry::SegmentSupportPosition::getY
double getY() const
Get Y coordinate.
Definition: EKLMGeometry.h:1128
Belle2::EKLMGeometry::SegmentSupportGeometry
Segment support geometry data.
Definition: EKLMGeometry.h:949
Belle2::EKLMGeometry::SegmentSupportPosition::getDeltaLRight
double getDeltaLRight() const
Get right Delta L.
Definition: EKLMGeometry.h:1060
Belle2::EKLMGeometry::getNPlanes
int getNPlanes() const
Get number of planes.
Definition: EKLMGeometry.h:1717
Belle2::EKLM::AlignmentChecker::checkSegmentAlignment
bool checkSegmentAlignment(int section, int layer, int sector, int plane, int segment, const KLMAlignmentData *sectorAlignment, const KLMAlignmentData *segmentAlignment, bool calledFromSectorCheck) const
Check segment alignment.
Definition: AlignmentChecker.cc:197
Belle2::EKLMGeometry::SegmentSupportPosition::getLength
double getLength() const
Get length.
Definition: EKLMGeometry.h:1094
Belle2::EKLMGeometry::SectorSupportGeometry
Sector support geometry data.
Definition: EKLMGeometry.h:249
Belle2::KLMAlignmentData::getDeltaV
float getDeltaV() const
Get shift in V.
Definition: KLMAlignmentData.h:104
Belle2::EKLMGeometry::SectorSupportGeometry::getCorner4Inner
const HepGeom::Point3D< double > & getCorner4Inner() const
Get corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:754
Belle2::EKLM::Arc2D
2D arc.
Definition: Arc2D.h:35
Belle2::EKLMGeometry::ElementPosition
Position information for the elements of detector.
Definition: EKLMGeometry.h:110
Belle2::EKLM::AlignmentChecker::AlignmentChecker
AlignmentChecker(bool printOverlaps)
Constructor.
Definition: AlignmentChecker.cc:24
Belle2::EKLMGeometry::SegmentSupportGeometry::getMiddleWidth
double getMiddleWidth() const
Get middle part width.
Definition: EKLMGeometry.h:995
Belle2::EKLMGeometry::ElementPosition::getInnerR
double getInnerR() const
Get inner radius.
Definition: EKLMGeometry.h:122
Belle2::EKLMAlignment
Class to store EKLM alignment data in the database.
Definition: EKLMAlignment.h:40
Belle2::EKLM::AlignmentChecker::checkSectorAlignment
bool checkSectorAlignment(int section, int layer, int sector, const KLMAlignmentData *sectorAlignment) const
Check sector alignment.
Definition: AlignmentChecker.cc:84
Belle2::EKLMGeometry::SegmentSupportPosition
Segment support position.
Definition: EKLMGeometry.h:1048
Belle2::Unit::rad
static const double rad
Standard of [angle].
Definition: Unit.h:60
Belle2::KLMAlignmentData::getDeltaU
float getDeltaU() const
Get shift in U.
Definition: KLMAlignmentData.h:87
Belle2::EKLMGeometry::SectorSupportGeometry::getCorner1AInner
const HepGeom::Point3D< double > & getCorner1AInner() const
Get corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:618
Belle2::EKLM::Polygon2D::hasIntersection
bool hasIntersection(const LineSegment2D &lineSegment) const
Check whether polygon has an intersection with a line segment or this line segment is fully inside th...
Definition: Polygon2D.cc:65
Belle2::EKLM::AlignmentChecker::m_SegmentSupport
Polygon2D *** m_SegmentSupport
Segment support.
Definition: AlignmentChecker.h:129
Belle2::EKLMGeometry::SegmentSupportPosition::getDeltaLLeft
double getDeltaLLeft() const
Get left Delta L.
Definition: EKLMGeometry.h:1077
Belle2::EKLM::AlignmentChecker::m_ArcOuter
Arc2D * m_ArcOuter
Sector support edge: outer arc.
Definition: AlignmentChecker.h:117
Belle2::EKLMGeometry::SectorSupportGeometry::getThickness
double getThickness() const
Get thickness.
Definition: EKLMGeometry.h:261
Belle2::EKLM::AlignmentChecker::m_LineCorner1
LineSegment2D * m_LineCorner1
Sector support edge: corner 1 line.
Definition: AlignmentChecker.h:114
Belle2::EKLM::LineSegment2D
2D line segment.
Definition: LineSegment2D.h:38
Belle2::EKLM::AlignmentChecker::m_Line41
LineSegment2D * m_Line41
Sector support edge: line between corners 4 and 1.
Definition: AlignmentChecker.h:126
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::EKLM::AlignmentChecker::m_ArcInner
Arc2D * m_ArcInner
Sector support edge: inner arc.
Definition: AlignmentChecker.h:123
LogVar
Class to store variables with their name which were sent to the logging service.
Definition: LogVariableStream.h:24
Belle2::EKLMGeometry::ElementPosition::getX
double getX() const
Get X coordinate.
Definition: EKLMGeometry.h:173
Belle2::EKLMGeometry::SectorSupportGeometry::getCorner3Inner
const HepGeom::Point3D< double > & getCorner3Inner() const
Get corner 3 coordinates (inner side).
Definition: EKLMGeometry.h:703
Belle2::EKLM::GeometryData
EKLM geometry data.
Definition: GeometryData.h:40
Belle2::KLMAlignmentData::getDeltaGamma
float getDeltaGamma() const
Get rotation in alpha.
Definition: KLMAlignmentData.h:172
Belle2::EKLMSegmentAlignment
Class to store EKLM alignment data in the database.
Definition: EKLMSegmentAlignment.h:40
Belle2::EKLM::AlignmentChecker::~AlignmentChecker
~AlignmentChecker()
Destructor.
Definition: AlignmentChecker.cc:64
Belle2::EKLMGeometry::getSectorSupportPosition
const ElementPosition * getSectorSupportPosition() const
Get position data for sector support structure.
Definition: EKLMGeometry.h:1825
Belle2::EKLMGeometry::StripGeometry
Strip geometry data.
Definition: EKLMGeometry.h:1187
Belle2::EKLMGeometry::SegmentSupportPosition::getX
double getX() const
Get X coordinate.
Definition: EKLMGeometry.h:1111
Belle2::EKLMGeometry::getSectorSupportGeometry
const SectorSupportGeometry * getSectorSupportGeometry() const
Get sector support geometry data.
Definition: EKLMGeometry.h:1833
Belle2::EKLMSegmentAlignment::getSegmentAlignment
const KLMAlignmentData * getSegmentAlignment(uint16_t segment) const
Get segment alignment data.
Definition: EKLMSegmentAlignment.cc:36
Belle2::EKLMGeometry::StripGeometry::getWidth
double getWidth() const
Get width.
Definition: EKLMGeometry.h:1199
Belle2::EKLM::AlignmentChecker::m_Line23
LineSegment2D * m_Line23
Sector support edge: line between corners 2 and 3.
Definition: AlignmentChecker.h:120
Belle2::EKLM::AlignmentChecker::checkAlignment
bool checkAlignment(const EKLMAlignment *alignment, const EKLMSegmentAlignment *segmentAlignment) const
Check alignment.
Definition: AlignmentChecker.cc:310
Belle2::EKLMGeometry::ElementPosition::getOuterR
double getOuterR() const
Get outer radius.
Definition: EKLMGeometry.h:139
Belle2::EKLM::AlignmentChecker::m_GeoDat
const GeometryData * m_GeoDat
Geometry data.
Definition: AlignmentChecker.h:108
HepGeom::Point3D< double >
Belle2::KLMAlignmentData
KLM Alignment data.
Definition: KLMAlignmentData.h:33
Belle2::EKLMGeometry::SectorSupportGeometry::getCorner1BInner
const HepGeom::Point3D< double > & getCorner1BInner() const
Get corner 1B coordinates (inner side).
Definition: EKLMGeometry.h:652
Belle2::EKLMGeometry::ElementPosition::getLength
double getLength() const
Get length.
Definition: EKLMGeometry.h:156
Belle2::EKLMGeometry::SectorSupportGeometry::getCorner2Inner
const HepGeom::Point3D< double > & getCorner2Inner() const
Get corner 2 coordinates (inner side).
Definition: EKLMGeometry.h:669
Belle2::EKLMGeometry::ElementPosition::getY
double getY() const
Get Y coordinate.
Definition: EKLMGeometry.h:190
Belle2::EKLM::Polygon2D
2D polygon.
Definition: Polygon2D.h:39