Belle II Software development
EKLMGeometry.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11/* KLM headers. */
12#include <klm/dataobjects/eklm/EKLMElementNumbers.h>
13
14/* ROOT headers. */
15#include <TObject.h>
16
17/* CLHEP headers. */
18#include <CLHEP/Geometry/Point3D.h>
19
20namespace Belle2 {
29 class EKLMGeometry : public TObject {
30
31 public:
32
36 class EndcapStructureGeometry : public TObject {
37
38 public:
39
44
49
53 double getPhi() const
54 {
55 return m_Phi;
56 }
57
62 void setPhi(double phi)
63 {
64 m_Phi = phi;
65 }
66
70 int getNSides() const
71 {
72 return m_NSides;
73 }
74
79 void setNSides(int nSides)
80 {
81 m_NSides = nSides;
82 }
83
84 private:
85
87 double m_Phi = 0;
88
90 int m_NSides = 0;
91
94
95 };
96
100 class ElementPosition : public TObject {
101
102 public:
103
108
112 double getInnerR() const
113 {
114 return m_InnerR;
115 }
116
121 void setInnerR(double innerR)
122 {
123 m_InnerR = innerR;
124 }
125
129 double getOuterR() const
130 {
131 return m_OuterR;
132 }
133
138 void setOuterR(double outerR)
139 {
140 m_OuterR = outerR;
141 }
142
146 double getLength() const
147 {
148 return m_Length;
149 }
150
155 void setLength(double length)
156 {
157 m_Length = length;
158 }
159
163 double getX() const
164 {
165 return m_X;
166 }
167
172 void setX(double x)
173 {
174 m_X = x;
175 }
176
180 double getY() const
181 {
182 return m_Y;
183 }
184
189 void setY(double y)
190 {
191 m_Y = y;
192 }
193
197 double getZ() const
198 {
199 return m_Z;
200 }
201
206 void setZ(double z)
207 {
208 m_Z = z;
209 }
210
211 private:
212
214 double m_InnerR = 0;
215
217 double m_OuterR = 0;
218
220 double m_Length = 0;
221
223 double m_X = 0;
224
226 double m_Y = 0;
227
229 double m_Z = 0;
230
233
234 };
235
239 class SectorSupportGeometry : public TObject {
240
241 public:
242
247
251 double getThickness() const
252 {
253 return m_Thickness;
254 }
255
260 void setThickness(double thickness)
261 {
262 m_Thickness = thickness;
263 }
264
268 double getDeltaLY() const
269 {
270 return m_DeltaLY;
271 }
272
277 void setDeltaLY(double deltaLY)
278 {
279 m_DeltaLY = deltaLY;
280 }
281
285 double getCornerX() const
286 {
287 return m_CornerX;
288 }
289
294 void setCornerX(double cornerX)
295 {
296 m_CornerX = cornerX;
297 }
298
302 double getCorner1LX() const
303 {
304 return m_Corner1LX;
305 }
306
311 void setCorner1LX(double corner1LX)
312 {
313 m_Corner1LX = corner1LX;
314 }
315
319 double getCorner1Width() const
320 {
321 return m_Corner1Width;
322 }
323
328 void setCorner1Width(double corner1Width)
329 {
330 m_Corner1Width = corner1Width;
331 }
332
336 double getCorner1Thickness() const
337 {
338 return m_Corner1Thickness;
339 }
340
345 void setCorner1Thickness(double corner1Thickness)
346 {
347 m_Corner1Thickness = corner1Thickness;
348 }
349
353 double getCorner1Z() const
354 {
355 return m_Corner1Z;
356 }
357
362 void setCorner1Z(double corner1Z)
363 {
364 m_Corner1Z = corner1Z;
365 }
366
370 double getCorner2LX() const
371 {
372 return m_Corner2LX;
373 }
374
379 void setCorner2LX(double corner2LX)
380 {
381 m_Corner2LX = corner2LX;
382 }
383
387 double getCorner2LY() const
388 {
389 return m_Corner2LY;
390 }
391
396 void setCorner2LY(double corner2LY)
397 {
398 m_Corner2LY = corner2LY;
399 }
400
404 double getCorner2Thickness() const
405 {
406 return m_Corner2Thickness;
407 }
408
413 void setCorner2Thickness(double corner2Thickness)
414 {
415 m_Corner2Thickness = corner2Thickness;
416 }
417
421 double getCorner2Z() const
422 {
423 return m_Corner2Z;
424 }
425
430 void setCorner2Z(double corner2Z)
431 {
432 m_Corner2Z = corner2Z;
433 }
434
438 double getCorner3LX() const
439 {
440 return m_Corner3LX;
441 }
442
447 void setCorner3LX(double corner3LX)
448 {
449 m_Corner3LX = corner3LX;
450 }
451
455 double getCorner3LY() const
456 {
457 return m_Corner3LY;
458 }
459
464 void setCorner3LY(double corner3LY)
465 {
466 m_Corner3LY = corner3LY;
467 }
468
472 double getCorner3Thickness() const
473 {
474 return m_Corner3Thickness;
475 }
476
481 void setCorner3Thickness(double corner3Thickness)
482 {
483 m_Corner3Thickness = corner3Thickness;
484 }
485
489 double getCorner3Z() const
490 {
491 return m_Corner3Z;
492 }
493
498 void setCorner3Z(double corner3Z)
499 {
500 m_Corner3Z = corner3Z;
501 }
502
506 double getCorner4LX() const
507 {
508 return m_Corner4LX;
509 }
510
515 void setCorner4LX(double corner4LX)
516 {
517 m_Corner4LX = corner4LX;
518 }
519
523 double getCorner4LY() const
524 {
525 return m_Corner4LY;
526 }
527
532 void setCorner4LY(double corner4LY)
533 {
534 m_Corner4LY = corner4LY;
535 }
536
540 double getCorner4Thickness() const
541 {
542 return m_Corner4Thickness;
543 }
544
549 void setCorner4Thickness(double corner4Thickness)
550 {
551 m_Corner4Thickness = corner4Thickness;
552 }
553
557 double getCorner4Z() const
558 {
559 return m_Corner4Z;
560 }
561
566 void setCorner4Z(double corner4Z)
567 {
568 m_Corner4Z = corner4Z;
569 }
570
574 double getCornerAngle() const
575 {
576 return m_CornerAngle;
577 }
578
583 void setCornerAngle(double cornerAngle)
584 {
585 m_CornerAngle = cornerAngle;
586 }
587
592 {
593 return m_Corner1A;
594 }
595
601 {
602 m_Corner1A = corner1A;
603 }
604
609 {
610 return m_Corner1AInner;
611 }
612
618 {
619 m_Corner1AInner = corner1AInner;
620 }
621
626 {
627 return m_Corner1B;
628 }
629
635 {
636 m_Corner1B = corner1B;
637 }
638
643 {
644 return m_Corner1BInner;
645 }
646
652 {
653 m_Corner1BInner = corner1BInner;
654 }
655
660 {
661 return m_Corner2Inner;
662 }
663
669 {
670 m_Corner2Inner = corner2Inner;
671 }
672
677 {
678 return m_Corner3;
679 }
680
686 {
687 m_Corner3 = corner3;
688 }
689
694 {
695 return m_Corner3Inner;
696 }
697
703 {
704 m_Corner3Inner = corner3Inner;
705 }
706
711 {
712 return m_Corner3Prism;
713 }
714
720 {
721 m_Corner3Prism = corner3Prism;
722 }
723
728 {
729 return m_Corner4;
730 }
731
737 {
738 m_Corner4 = corner4;
739 }
740
745 {
746 return m_Corner4Inner;
747 }
748
754 {
755 m_Corner4Inner = corner4Inner;
756 }
757
762 {
763 return m_Corner4Prism;
764 }
765
771 {
772 m_Corner4Prism = corner4Prism;
773 }
774
775 private:
776
778 double m_Thickness = 0;
779
781 double m_DeltaLY = 0;
782
784 double m_CornerX = 0;
785
787 double m_Corner1LX = 0;
788
790 double m_Corner1Width = 0;
791
794
796 double m_Corner1Z = 0;
797
799 double m_Corner2LX = 0;
800
802 double m_Corner2LY = 0;
803
806
808 double m_Corner2Z = 0;
809
811 double m_Corner3LX = 0;
812
814 double m_Corner3LY = 0;
815
818
820 double m_Corner3Z = 0;
821
823 double m_Corner4LX = 0;
824
826 double m_Corner4LY = 0;
827
830
832 double m_Corner4Z = 0;
833
834 /* The following data members are not stored in the database. */
835
837 double m_CornerAngle = 0;
838
841
844
847
850
853
856
859
862
865
868
871
874
875 };
876
880 class PlasticSheetGeometry : public TObject {
881
882 public:
883
888
892 double getWidth() const
893 {
894 return m_Width;
895 }
896
901 void setWidth(double width)
902 {
903 m_Width = width;
904 }
905
909 double getDeltaL() const
910 {
911 return m_DeltaL;
912 }
913
918 void setDeltaL(double deltaL)
919 {
920 m_DeltaL = deltaL;
921 }
922
923 private:
924
926 double m_Width = 0;
927
929 double m_DeltaL = 0;
930
933
934 };
935
939 class SegmentSupportGeometry : public TObject {
940
941 public:
942
947
951 double getTopWidth() const
952 {
953 return m_TopWidth;
954 }
955
960 void setTopWidth(double topWidth)
961 {
962 m_TopWidth = topWidth;
963 }
964
968 double getTopThickness() const
969 {
970 return m_TopThickness;
971 }
972
977 void setTopThickness(double topThickness)
978 {
979 m_TopThickness = topThickness;
980 }
981
985 double getMiddleWidth() const
986 {
987 return m_MiddleWidth;
988 }
989
994 void setMiddleWidth(double middleWidth)
995 {
996 m_MiddleWidth = middleWidth;
997 }
998
1002 double getMiddleThickness() const
1003 {
1004 return m_MiddleThickness;
1005 }
1006
1011 void setMiddleThickness(double middleThickness)
1012 {
1013 m_MiddleThickness = middleThickness;
1014 }
1015
1016 private:
1017
1019 double m_TopWidth = 0;
1020
1022 double m_TopThickness = 0;
1023
1025 double m_MiddleWidth = 0;
1026
1029
1032
1033 };
1034
1038 class SegmentSupportPosition : public TObject {
1039
1040 public:
1041
1046
1050 double getDeltaLRight() const
1051 {
1052 return m_DeltaLRight;
1053 }
1054
1059 void setDeltaLRight(double deltaLRight)
1060 {
1061 m_DeltaLRight = deltaLRight;
1062 }
1063
1067 double getDeltaLLeft() const
1068 {
1069 return m_DeltaLLeft;
1070 }
1071
1076 void setDeltaLLeft(double deltaLLeft)
1077 {
1078 m_DeltaLLeft = deltaLLeft;
1079 }
1080
1084 double getLength() const
1085 {
1086 return m_Length;
1087 }
1088
1093 void setLength(double length)
1094 {
1095 m_Length = length;
1096 }
1097
1101 double getX() const
1102 {
1103 return m_X;
1104 }
1105
1110 void setX(double x)
1111 {
1112 m_X = x;
1113 }
1114
1118 double getY() const
1119 {
1120 return m_Y;
1121 }
1122
1127 void setY(double y)
1128 {
1129 m_Y = y;
1130 }
1131
1135 double getZ() const
1136 {
1137 return m_Z;
1138 }
1139
1144 void setZ(double z)
1145 {
1146 m_Z = z;
1147 }
1148
1149 private:
1150
1152 double m_DeltaLRight = 0;
1153
1155 double m_DeltaLLeft = 0;
1156
1158 double m_Length = 0;
1159
1161 double m_X = 0;
1162
1164 double m_Y = 0;
1165
1167 double m_Z = 0;
1168
1171
1172 };
1173
1177 class StripGeometry : public TObject {
1178
1179 public:
1180
1184 StripGeometry();
1185
1189 double getWidth() const
1190 {
1191 return m_Width;
1192 }
1193
1198 void setWidth(double width)
1199 {
1200 m_Width = width;
1201 }
1202
1206 double getThickness() const
1207 {
1208 return m_Thickness;
1209 }
1210
1215 void setThickness(double thickness)
1216 {
1217 m_Thickness = thickness;
1218 }
1219
1223 double getGrooveDepth() const
1224 {
1225 return m_GrooveDepth;
1226 }
1227
1232 void setGrooveDepth(double grooveDepth)
1233 {
1234 m_GrooveDepth = grooveDepth;
1235 }
1236
1240 double getGrooveWidth() const
1241 {
1242 return m_GrooveWidth;
1243 }
1244
1249 void setGrooveWidth(double grooveWidth)
1250 {
1251 m_GrooveWidth = grooveWidth;
1252 }
1253
1258 {
1260 }
1261
1266 void setNoScintillationThickness(double thickness)
1267 {
1268 m_NoScintillationThickness = thickness;
1269 }
1270
1274 double getRSSSize() const
1275 {
1276 return m_RSSSize;
1277 }
1278
1283 void setRSSSize(double rssSize)
1284 {
1285 m_RSSSize = rssSize;
1286 }
1287
1288 private:
1289
1291 double m_Width = 0;
1292
1294 double m_Thickness = 0;
1295
1297 double m_GrooveDepth = 0;
1298
1300 double m_GrooveWidth = 0;
1301
1304
1306 double m_RSSSize = 0;
1307
1310
1311 };
1312
1316 class Point : public TObject {
1317
1318 public:
1319
1323 Point();
1324
1328 double getX() const
1329 {
1330 return m_X;
1331 }
1332
1337 void setX(double x)
1338 {
1339 m_X = x;
1340 }
1341
1345 double getY() const
1346 {
1347 return m_Y;
1348 }
1349
1354 void setY(double y)
1355 {
1356 m_Y = y;
1357 }
1358
1359 private:
1360
1362 double m_X = 0;
1363
1365 double m_Y = 0;
1366
1369
1370 };
1371
1375 class ShieldDetailGeometry : public TObject {
1376
1377 public:
1378
1383
1388
1393
1398
1402 double getLengthX() const
1403 {
1404 return m_LengthX;
1405 }
1406
1411 void setLengthX(double lengthX)
1412 {
1413 m_LengthX = lengthX;
1414 }
1415
1419 double getLengthY() const
1420 {
1421 return m_LengthY;
1422 }
1423
1428 void setLengthY(double lengthY)
1429 {
1430 m_LengthY = lengthY;
1431 }
1432
1436 int getNPoints() const
1437 {
1438 return m_NPoints;
1439 }
1440
1445 void setNPoints(int nPoints);
1446
1451 const Point* getPoint(int i) const;
1452
1458 void setPoint(int i, const Point& point);
1459
1460 private:
1461
1463 double m_LengthX = 0;
1464
1466 double m_LengthY = 0;
1467
1469 int m_NPoints = 0;
1470
1472 Point* m_Points = nullptr; //[m_NPoints]
1473
1476
1477 };
1478
1482 class ShieldGeometry : public TObject {
1483
1484 public:
1485
1490
1494 double getThickness() const
1495 {
1496 return m_Thickness;
1497 }
1498
1503 void setThickness(double thickness)
1504 {
1505 m_Thickness = thickness;
1506 }
1507
1512 {
1513 return &m_DetailA;
1514 }
1515
1520 void setDetailA(const ShieldDetailGeometry& geometry)
1521 {
1522 m_DetailA = geometry;
1523 }
1524
1529 {
1530 return &m_DetailB;
1531 }
1532
1537 void setDetailB(const ShieldDetailGeometry& geometry)
1538 {
1539 m_DetailB = geometry;
1540 }
1541
1546 {
1547 return &m_DetailC;
1548 }
1549
1554 void setDetailC(const ShieldDetailGeometry& geometry)
1555 {
1556 m_DetailC = geometry;
1557 }
1558
1563 {
1564 return &m_DetailD;
1565 }
1566
1571 void setDetailD(const ShieldDetailGeometry& geometry)
1572 {
1573 m_DetailD = geometry;
1574 }
1575
1580 {
1581 return &m_DetailACenter;
1582 }
1583
1589 void setDetailACenter(double x, double y);
1590
1595 {
1596 return &m_DetailBCenter;
1597 }
1598
1604 void setDetailBCenter(double x, double y);
1605
1610 {
1611 return &m_DetailCCenter;
1612 }
1613
1619 void setDetailCCenter(double x, double y);
1620
1621 private:
1622
1624 double m_Thickness = 0;
1625
1628
1631
1634
1637
1638 /* The following data members are not stored in the database. */
1639
1642
1645
1648
1651
1652 };
1653
1657 EKLMGeometry();
1658
1662 EKLMGeometry(const EKLMGeometry& geometry);
1663
1667 ~EKLMGeometry();
1668
1672 EKLMGeometry& operator=(const EKLMGeometry& geometry);
1673
1678 {
1679 return m_BeamBackgroundStudy;
1680 }
1681
1685 int getNSections() const
1686 {
1687 return m_NSections;
1688 }
1689
1693 int getNLayers() const
1694 {
1695 return m_NLayers;
1696 }
1697
1702 int getNDetectorLayers(int section) const;
1703
1707 int getNSectors() const
1708 {
1709 return m_NSectors;
1710 }
1711
1715 int getNPlanes() const
1716 {
1717 return m_NPlanes;
1718 }
1719
1723 int getNSegments() const
1724 {
1725 return m_NSegments;
1726 }
1727
1732 {
1734 }
1735
1739 int getNStrips() const
1740 {
1741 return m_NStrips;
1742 }
1743
1750 void checkDetectorLayerNumber(int section, int layer) const;
1751
1758 void checkDetectorLayer(int section, int layer) const;
1759
1764 void checkSegmentSupport(int support) const;
1765
1770 void checkStripSegment(int strip) const;
1771
1775 double getSolenoidZ() const
1776 {
1777 return m_SolenoidZ;
1778 }
1779
1784 {
1786 }
1787
1792 {
1793 return &m_SectionPosition;
1794 }
1795
1800 {
1801 return &m_LayerPosition;
1802 }
1803
1807 double getLayerShiftZ() const
1808 {
1809 return m_LayerShiftZ;
1810 }
1811
1816 {
1817 return &m_SectorPosition;
1818 }
1819
1824 {
1826 }
1827
1832 {
1834 }
1835
1840 {
1841 return &m_PlanePosition;
1842 }
1843
1848 {
1849 return &m_PlasticSheetGeometry;
1850 }
1851
1856 {
1858 }
1859
1865 const SegmentSupportPosition*
1866 getSegmentSupportPosition(int plane, int support) const;
1867
1872 {
1873 return &m_StripGeometry;
1874 }
1875
1880 const ElementPosition* getStripPosition(int strip) const;
1881
1886 {
1887 return &m_ShieldGeometry;
1888 }
1889
1890 protected:
1891
1894
1897
1900
1903
1905 int* m_NDetectorLayers; //[m_NSections]
1906
1909
1912
1915
1918
1921
1924
1927
1930
1933
1936
1939
1942
1945
1948
1951
1954
1956 SegmentSupportPosition* m_SegmentSupportPosition; //[m_NSegmentSupportElementsSector]
1957
1960
1963
1966
1969
1970 };
1971
1973}
EKLM element numbers.
Position information for the elements of detector.
Definition: EKLMGeometry.h:100
void setInnerR(double innerR)
Set inner radius.
Definition: EKLMGeometry.h:121
void setOuterR(double outerR)
Set outer radius.
Definition: EKLMGeometry.h:138
double getX() const
Get X coordinate.
Definition: EKLMGeometry.h:163
void setZ(double z)
Set Z coordinate.
Definition: EKLMGeometry.h:206
void setLength(double length)
Set length.
Definition: EKLMGeometry.h:155
double getOuterR() const
Get outer radius.
Definition: EKLMGeometry.h:129
double getInnerR() const
Get inner radius.
Definition: EKLMGeometry.h:112
void setY(double y)
Set Y coordinate.
Definition: EKLMGeometry.h:189
double getZ() const
Get Z coordinate.
Definition: EKLMGeometry.h:197
void setX(double x)
Set X coordinate.
Definition: EKLMGeometry.h:172
ClassDef(ElementPosition, 1)
Class version.
double getY() const
Get Y coordinate.
Definition: EKLMGeometry.h:180
double getLength() const
Get length.
Definition: EKLMGeometry.h:146
Endcap srtucture geometry parameters.
Definition: EKLMGeometry.h:36
void setPhi(double phi)
Set starting angle of the octagonal endcap structure shape.
Definition: EKLMGeometry.h:62
ClassDef(EndcapStructureGeometry, 1)
Class version.
double getPhi() const
Get starting angle of the octagonal endcap structure shape.
Definition: EKLMGeometry.h:53
int getNSides() const
Get number of sides.
Definition: EKLMGeometry.h:70
int m_NSides
The number of sides (=8 : octagonal).
Definition: EKLMGeometry.h:90
double m_Phi
The starting angle of the octagonal endcap structure shape.
Definition: EKLMGeometry.h:87
void setNSides(int nSides)
Set number of sides.
Definition: EKLMGeometry.h:79
Plastic sheet geometry data.
Definition: EKLMGeometry.h:880
ClassDef(PlasticSheetGeometry, 1)
Class version.
double m_DeltaL
Distance from edge of last strip to edge of plastic sheet.
Definition: EKLMGeometry.h:929
void setDeltaL(double deltaL)
Set Delta L (edge of last strip - edge of plastic sheet distance).
Definition: EKLMGeometry.h:918
double getDeltaL() const
Get Delta L (edge of last strip - edge of plastic sheet distance).
Definition: EKLMGeometry.h:909
void setWidth(double width)
Set width.
Definition: EKLMGeometry.h:901
ClassDef(Point, 1)
Class version.
double getX() const
Get X coordinate.
void setY(double y)
Set Y coordinate.
double m_X
X coordinate.
void setX(double x)
Set X coordinate.
double m_Y
Y coordinate.
double getY() const
Get Y coordinate.
Sector support geometry data.
Definition: EKLMGeometry.h:239
double getCorner2Thickness() const
Get corner 2 thickness.
Definition: EKLMGeometry.h:404
void setCornerX(double cornerX)
Set coordinate X of corner 1.
Definition: EKLMGeometry.h:294
double getCorner2LY() const
Get corner 2 Y length.
Definition: EKLMGeometry.h:387
void setCorner1LX(double corner1LX)
Set corner 1 X length.
Definition: EKLMGeometry.h:311
void setCorner3Prism(const HepGeom::Point3D< double > &corner3Prism)
Set coordinates of the corner of corner 3 prism.
Definition: EKLMGeometry.h:719
double getCorner4Thickness() const
Get corner 4 thickness.
Definition: EKLMGeometry.h:540
double m_Corner1Thickness
Corner 1 thickness.
Definition: EKLMGeometry.h:793
HepGeom::Point3D< double > m_Corner3Prism
Coordinates of the corner of corner 3 prism.
Definition: EKLMGeometry.h:861
double m_Corner2Z
Corner 2 Z coordinate.
Definition: EKLMGeometry.h:808
HepGeom::Point3D< double > m_Corner3
Corner 3 coordinates.
Definition: EKLMGeometry.h:855
double getCorner1Z() const
Get corner 1 Z coordinate.
Definition: EKLMGeometry.h:353
void setCorner1A(const HepGeom::Point3D< double > &corner1A)
Set corner 1A coordinates.
Definition: EKLMGeometry.h:600
double getCornerX() const
Get coordinate X of corner 1.
Definition: EKLMGeometry.h:285
const HepGeom::Point3D< double > & getCorner3Inner() const
Get corner 3 coordinates (inner side).
Definition: EKLMGeometry.h:693
void setCorner2LY(double corner2LY)
Set corner 2 Y length.
Definition: EKLMGeometry.h:396
void setCorner4Thickness(double corner4Thickness)
Set corner 4 thickness.
Definition: EKLMGeometry.h:549
double getCorner4LX() const
Get corner 4 X length.
Definition: EKLMGeometry.h:506
HepGeom::Point3D< double > m_Corner3Inner
Corner 3 coordinates (inner side).
Definition: EKLMGeometry.h:858
double m_Corner2Thickness
Corner 2 thickness.
Definition: EKLMGeometry.h:805
void setCorner1AInner(const HepGeom::Point3D< double > &corner1AInner)
Set corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:617
void setThickness(double thickness)
Set thickness.
Definition: EKLMGeometry.h:260
void setCorner1Z(double corner1Z)
Set corner 1 Z coordinate.
Definition: EKLMGeometry.h:362
void setCorner3Inner(const HepGeom::Point3D< double > &corner3Inner)
Set corner 3 coordinates (inner side).
Definition: EKLMGeometry.h:702
void setCornerAngle(double cornerAngle)
Set corner 1 angle.
Definition: EKLMGeometry.h:583
void setCorner1BInner(const HepGeom::Point3D< double > &corner1BInner)
Set corner 1B coordinates (inner side).
Definition: EKLMGeometry.h:651
double getCorner1LX() const
Get corner 1 X length.
Definition: EKLMGeometry.h:302
double m_Corner4Z
Corner 4 Z coordinate.
Definition: EKLMGeometry.h:832
double getCorner3LX() const
Get corner 3 X length.
Definition: EKLMGeometry.h:438
const HepGeom::Point3D< double > & getCorner1B() const
Get corner 1B coordinates.
Definition: EKLMGeometry.h:625
void setCorner1Thickness(double corner1Thickness)
Set corner 1 thickness.
Definition: EKLMGeometry.h:345
double m_Corner1Z
Corner 1 Z coordinate.
Definition: EKLMGeometry.h:796
double getCornerAngle() const
Get corner 1 angle.
Definition: EKLMGeometry.h:574
double m_Corner4Thickness
Corner 4 thickness.
Definition: EKLMGeometry.h:829
void setCorner1B(const HepGeom::Point3D< double > &corner1B)
Set corner 1B coordinates.
Definition: EKLMGeometry.h:634
double m_DeltaLY
outerR - Y of upper edge of BoxY.
Definition: EKLMGeometry.h:781
double getCorner4LY() const
Get corner 4 Y length.
Definition: EKLMGeometry.h:523
const HepGeom::Point3D< double > & getCorner3Prism() const
Get coordinates of the corner of corner 3 prism.
Definition: EKLMGeometry.h:710
const HepGeom::Point3D< double > & getCorner4() const
Get corner 4 coordinates.
Definition: EKLMGeometry.h:727
void setCorner2Thickness(double corner2Thickness)
Set corner 2 thickness.
Definition: EKLMGeometry.h:413
HepGeom::Point3D< double > m_Corner4Prism
Coordinates of the corner of corner 4 prism.
Definition: EKLMGeometry.h:870
double getCorner2LX() const
Get corner 2 X length.
Definition: EKLMGeometry.h:370
HepGeom::Point3D< double > m_Corner1BInner
Corner 1B coordinates (inner side).
Definition: EKLMGeometry.h:849
void setCorner4(const HepGeom::Point3D< double > &corner4)
Set corner 4 coordinates.
Definition: EKLMGeometry.h:736
const HepGeom::Point3D< double > & getCorner4Inner() const
Get corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:744
void setCorner3LY(double corner3LY)
Set corner 3 Y length.
Definition: EKLMGeometry.h:464
const HepGeom::Point3D< double > & getCorner4Prism() const
Get coordinates of the corner of corner 4 prism.
Definition: EKLMGeometry.h:761
void setDeltaLY(double deltaLY)
Set outerR - Y of upper edge of BoxY.
Definition: EKLMGeometry.h:277
void setCorner4LY(double corner4LY)
Set corner 4 Y length.
Definition: EKLMGeometry.h:532
double getThickness() const
Get thickness.
Definition: EKLMGeometry.h:251
HepGeom::Point3D< double > m_Corner4
Corner 4 coordinates.
Definition: EKLMGeometry.h:864
HepGeom::Point3D< double > m_Corner4Inner
Corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:867
void setCorner3LX(double corner3LX)
Set corner 3 X length.
Definition: EKLMGeometry.h:447
const HepGeom::Point3D< double > & getCorner3() const
Get corner 3 coordinates.
Definition: EKLMGeometry.h:676
double getCorner4Z() const
Get corner 4 Z coordinate.
Definition: EKLMGeometry.h:557
void setCorner4Z(double corner4Z)
Set corner 4 Z coordinate.
Definition: EKLMGeometry.h:566
double m_CornerX
Coordinate X of corner 1.
Definition: EKLMGeometry.h:784
const HepGeom::Point3D< double > & getCorner1BInner() const
Get corner 1B coordinates (inner side).
Definition: EKLMGeometry.h:642
HepGeom::Point3D< double > m_Corner1B
Corner 1B coordinates.
Definition: EKLMGeometry.h:846
void setCorner3(const HepGeom::Point3D< double > &corner3)
Set corner 3 coordinates.
Definition: EKLMGeometry.h:685
double getCorner3Z() const
Get corner 3 Z coordinate.
Definition: EKLMGeometry.h:489
const HepGeom::Point3D< double > & getCorner1A() const
Get corner 1A coordinates.
Definition: EKLMGeometry.h:591
double getCorner3Thickness() const
Get corner 3 thickness.
Definition: EKLMGeometry.h:472
void setCorner4Inner(const HepGeom::Point3D< double > &corner4Inner)
Set corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:753
void setCorner2Inner(const HepGeom::Point3D< double > &corner2Inner)
Set corner 2 coordinates (inner side).
Definition: EKLMGeometry.h:668
void setCorner3Thickness(double corner3Thickness)
Set corner 3 thickness.
Definition: EKLMGeometry.h:481
HepGeom::Point3D< double > m_Corner1A
Corner 1A coordinates.
Definition: EKLMGeometry.h:840
void setCorner4Prism(const HepGeom::Point3D< double > &corner4Prism)
Set coordinates of the corner of corner 4 prism.
Definition: EKLMGeometry.h:770
double getDeltaLY() const
Get outerR - Y of upper edge of BoxY.
Definition: EKLMGeometry.h:268
HepGeom::Point3D< double > m_Corner2Inner
Corner 2 coordinates (inner side) (corner of prism, too).
Definition: EKLMGeometry.h:852
const HepGeom::Point3D< double > & getCorner1AInner() const
Get corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:608
double m_Corner3Z
Corner 3 Z coordinate.
Definition: EKLMGeometry.h:820
const HepGeom::Point3D< double > & getCorner2Inner() const
Get corner 2 coordinates (inner side).
Definition: EKLMGeometry.h:659
void setCorner3Z(double corner3Z)
Set corner 3 Z coordinate.
Definition: EKLMGeometry.h:498
double getCorner3LY() const
Get corner 3 Y length.
Definition: EKLMGeometry.h:455
ClassDef(SectorSupportGeometry, 1)
Class version.
void setCorner2LX(double corner2LX)
Set corner 2 X length.
Definition: EKLMGeometry.h:379
double getCorner1Width() const
Get corner 1 width.
Definition: EKLMGeometry.h:319
void setCorner2Z(double corner2Z)
Set corner 2 Z coordinate.
Definition: EKLMGeometry.h:430
double m_Corner3Thickness
Corner 3 thickness.
Definition: EKLMGeometry.h:817
double getCorner1Thickness() const
Get corner 1 thickness.
Definition: EKLMGeometry.h:336
void setCorner1Width(double corner1Width)
Set corner 1 width.
Definition: EKLMGeometry.h:328
void setCorner4LX(double corner4LX)
Set corner 4 X length.
Definition: EKLMGeometry.h:515
double getCorner2Z() const
Get corner 2 Z coordinate.
Definition: EKLMGeometry.h:421
HepGeom::Point3D< double > m_Corner1AInner
Corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:843
Segment support geometry data.
Definition: EKLMGeometry.h:939
double getMiddleWidth() const
Get middle part width.
Definition: EKLMGeometry.h:985
double getTopThickness() const
Get top part thickness.
Definition: EKLMGeometry.h:968
void setMiddleWidth(double middleWidth)
Set middle part width.
Definition: EKLMGeometry.h:994
double m_MiddleThickness
Middle box thickness.
void setMiddleThickness(double middleThickness)
Set middle part thickness.
void setTopWidth(double topWidth)
Set top part width.
Definition: EKLMGeometry.h:960
double getTopWidth() const
Get top part width.
Definition: EKLMGeometry.h:951
void setTopThickness(double topThickness)
Set top part thickness.
Definition: EKLMGeometry.h:977
double getMiddleThickness() const
Get middle part thickness.
ClassDef(SegmentSupportGeometry, 1)
Class version.
ClassDef(SegmentSupportPosition, 1)
Class version.
double getX() const
Get X coordinate.
void setZ(double z)
Set Z coordinate.
void setDeltaLLeft(double deltaLLeft)
Set left DeltaL.
void setDeltaLRight(double deltaLRight)
Set right Delta L.
void setLength(double length)
Set length.
void setY(double y)
Set Y coordinate.
double m_DeltaLRight
Right (X-plane) delta L.
double getZ() const
Get Z coordinate.
void setX(double x)
Set X coordinate.
double getY() const
Get Y coordinate.
double m_DeltaLLeft
Left (X-plane) delta L.
double getDeltaLRight() const
Get right Delta L.
double getDeltaLLeft() const
Get left Delta L.
Shield layer detail geometry data.
void setPoint(int i, const Point &point)
Set point.
void setLengthY(double lengthY)
Set Y length.
ClassDef(ShieldDetailGeometry, 1)
Class version.
const Point * getPoint(int i) const
Get point.
double getLengthY() const
Get Y length.
int getNPoints() const
Get number of points.
double getLengthX() const
Get X length.
void setLengthX(double lengthX)
Set X length.
ShieldDetailGeometry & operator=(const ShieldDetailGeometry &geometry)
Operator =.
Definition: EKLMGeometry.cc:92
void setNPoints(int nPoints)
Set number of points.
Shield layer geometry data.
const ShieldDetailGeometry * getDetailA() const
Get detail A geometry.
const ShieldDetailGeometry * getDetailB() const
Get detail B geometry.
Point m_DetailACenter
Detail A center.
void setDetailA(const ShieldDetailGeometry &geometry)
Set detail A geometry.
void setDetailB(const ShieldDetailGeometry &geometry)
Set detail B geometry.
void setThickness(double thickness)
Set thickness.
void setDetailACenter(double x, double y)
Set detail A center.
void setDetailCCenter(double x, double y)
Set detail C center.
const Point * getDetailCCenter() const
Get detail C center.
ShieldDetailGeometry m_DetailC
Detail C.
ShieldDetailGeometry m_DetailB
Detail B.
Point m_DetailCCenter
Detail C center.
double getThickness() const
Get thickness.
const ShieldDetailGeometry * getDetailD() const
Get detail D geometry.
Point m_DetailBCenter
Detail B center.
void setDetailD(const ShieldDetailGeometry &geometry)
Set detail D geometry.
const Point * getDetailACenter() const
Get detail A center.
const Point * getDetailBCenter() const
Get detail B center.
void setDetailBCenter(double x, double y)
Set detail B center.
const ShieldDetailGeometry * getDetailC() const
Get detail C geometry.
ShieldDetailGeometry m_DetailD
Detail D.
ShieldDetailGeometry m_DetailA
Detail A.
void setDetailC(const ShieldDetailGeometry &geometry)
Set detail C geometry.
ClassDef(ShieldGeometry, 1)
Class version.
double getWidth() const
Get width.
void setNoScintillationThickness(double thickness)
Set nonscintillating layer thickness.
double m_NoScintillationThickness
Non-scintillating layer thickness.
void setThickness(double thickness)
Set thickness.
ClassDef(StripGeometry, 1)
Class version.
void setRSSSize(double rssSize)
Set "SiPM" size.
double m_RSSSize
Radiation study SiPM size.
double getNoScintillationThickness() const
Get nonscintillating layer thickness.
double getGrooveDepth() const
Get groove depth.
double getThickness() const
Get thickness.
void setWidth(double width)
Set width.
double getRSSSize() const
Get "SiPM" size.
void setGrooveDepth(double grooveDepth)
Set groove depth.
double getGrooveWidth() const
Get groove width.
void setGrooveWidth(double grooveWidth)
Set groove width.
Class to store EKLM geometry data in the database.
Definition: EKLMGeometry.h:29
const EndcapStructureGeometry * getEndcapStructureGeometry() const
Get endcap structure geometry data.
const ElementPosition * getLayerPosition() const
Get position data for layers.
int m_NSegments
Number of segments in one plane.
EKLMGeometry()
Constructor.
const PlasticSheetGeometry * getPlasticSheetGeometry() const
Get plastic sheet geometry data.
ShieldGeometry m_ShieldGeometry
Shield layer details geometry data.
const ShieldGeometry * getShieldGeometry() const
Get shield layer details geometry data.
int getNPlanes() const
Get number of planes.
int getNSections() const
Get number of sections.
int m_NLayers
Number of layers in one section.
const SegmentSupportPosition * getSegmentSupportPosition(int plane, int support) const
Get position data for segment support structure.
bool m_BeamBackgroundStudy
ROOT streamer.
SectorSupportGeometry m_SectorSupportGeometry
Sector support geometry data.
double getLayerShiftZ() const
Get Z distance between two layers.
int getNLayers() const
Get number of layers.
const ElementPosition * getPlanePosition() const
Get position data for planes.
void checkDetectorLayer(int section, int layer) const
Check if detector layer number is correct (fatal error if not).
const ElementPosition * getStripPosition(int strip) const
Get position data for strips.
const SegmentSupportGeometry * getSegmentSupportGeometry() const
Get segment support geometry data.
const SectorSupportGeometry * getSectorSupportGeometry() const
Get sector support geometry data.
const ElementPosition * getSectorPosition() const
Get position data for sectors.
ElementPosition m_SectionPosition
Position data for sections.
int m_NPlanes
Number of planes in one sector.
ElementPosition m_SectorSupportPosition
Position data for sector support structure.
int getNDetectorLayers(int section) const
Get number of detector layers.
void checkSegmentSupport(int support) const
Check if segment support number is correct (fatal error if not).
double m_SolenoidZ
Solenoid center Z coordinate.
int getNSegments() const
Get number of segments.
ElementPosition m_PlanePosition
Position data for planes.
ElementPosition m_LayerPosition
Position data for layers.
int m_NStrips
Number of strips in one plane.
bool beamBackgroundStudy() const
Whether to perform beam-background study.
int getNStrips() const
Get number of strips.
double m_LayerShiftZ
Z distance between two layers.
int m_NSectors
Number of sectors in one layer.
const EKLMElementNumbers * m_ElementNumbers
Element numbers.
double getSolenoidZ() const
Get solenoid center Z coordinate.
int * m_NDetectorLayers
Number of detector layers.
int m_NSections
Number of sections.
~EKLMGeometry()
Destructor.
const ElementPosition * getSectorSupportPosition() const
Get position data for sector support structure.
PlasticSheetGeometry m_PlasticSheetGeometry
Plastic sheet geometry data.
int getNSectors() const
Get number of sectors.
ClassDef(Belle2::EKLMGeometry, 6)
Class version.
ElementPosition m_SectorPosition
Position data for sectors.
SegmentSupportPosition * m_SegmentSupportPosition
Position data for segment support structure.
const StripGeometry * getStripGeometry() const
Get strip geometry data.
int getNSegmentSupportElementsSector() const
Get number of segment support elements *in one sector).
ElementPosition * m_StripPosition
Position data for strips.
const ElementPosition * getSectionPosition() const
Get position data for sections.
StripGeometry m_StripGeometry
Strip geometry data.
EndcapStructureGeometry m_EndcapStructureGeometry
Section structure geometry data.
EKLMGeometry & operator=(const EKLMGeometry &geometry)
Operator =.
SegmentSupportGeometry m_SegmentSupportGeometry
Segment support geometry data.
void checkStripSegment(int strip) const
Check if number of strip in a segment is correct (fatal error if not).
void checkDetectorLayerNumber(int section, int layer) const
Check if number of detector layers is correct (fatal error if not).
int m_NSegmentSupportElementsSector
Number of segment support elements in one sector.
Abstract base class for different kinds of events.