Belle II Software  release-08-01-10
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 
20 namespace 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 
107  ElementPosition();
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 
600  void setCorner1A(const HepGeom::Point3D<double>& corner1A)
601  {
602  m_Corner1A = corner1A;
603  }
604 
609  {
610  return m_Corner1AInner;
611  }
612 
617  void setCorner1AInner(const HepGeom::Point3D<double>& corner1AInner)
618  {
619  m_Corner1AInner = corner1AInner;
620  }
621 
626  {
627  return m_Corner1B;
628  }
629 
634  void setCorner1B(const HepGeom::Point3D<double>& corner1B)
635  {
636  m_Corner1B = corner1B;
637  }
638 
643  {
644  return m_Corner1BInner;
645  }
646 
651  void setCorner1BInner(const HepGeom::Point3D<double>& corner1BInner)
652  {
653  m_Corner1BInner = corner1BInner;
654  }
655 
660  {
661  return m_Corner2Inner;
662  }
663 
668  void setCorner2Inner(const HepGeom::Point3D<double>& corner2Inner)
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 
702  void setCorner3Inner(const HepGeom::Point3D<double>& corner3Inner)
703  {
704  m_Corner3Inner = corner3Inner;
705  }
706 
711  {
712  return m_Corner3Prism;
713  }
714 
719  void setCorner3Prism(const HepGeom::Point3D<double>& corner3Prism)
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 
753  void setCorner4Inner(const HepGeom::Point3D<double>& corner4Inner)
754  {
755  m_Corner4Inner = corner4Inner;
756  }
757 
762  {
763  return m_Corner4Prism;
764  }
765 
770  void setCorner4Prism(const HepGeom::Point3D<double>& corner4Prism)
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 
793  double m_Corner1Thickness = 0;
794 
796  double m_Corner1Z = 0;
797 
799  double m_Corner2LX = 0;
800 
802  double m_Corner2LY = 0;
803 
805  double m_Corner2Thickness = 0;
806 
808  double m_Corner2Z = 0;
809 
811  double m_Corner3LX = 0;
812 
814  double m_Corner3LY = 0;
815 
817  double m_Corner3Thickness = 0;
818 
820  double m_Corner3Z = 0;
821 
823  double m_Corner4LX = 0;
824 
826  double m_Corner4LY = 0;
827 
829  double m_Corner4Thickness = 0;
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 
1028  double m_MiddleThickness = 0;
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 
1387  ShieldDetailGeometry(const ShieldDetailGeometry& geometry);
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 
1489  ShieldGeometry();
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 
1579  const Point* getDetailACenter() const
1580  {
1581  return &m_DetailACenter;
1582  }
1583 
1589  void setDetailACenter(double x, double y);
1590 
1594  const Point* getDetailBCenter() const
1595  {
1596  return &m_DetailBCenter;
1597  }
1598 
1604  void setDetailBCenter(double x, double y);
1605 
1609  const Point* getDetailCCenter() const
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 
1677  bool beamBackgroundStudy() const
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  {
1785  return &m_EndcapStructureGeometry;
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  {
1825  return &m_SectorSupportPosition;
1826  }
1827 
1832  {
1833  return &m_SectorSupportGeometry;
1834  }
1835 
1840  {
1841  return &m_PlanePosition;
1842  }
1843 
1848  {
1849  return &m_PlasticSheetGeometry;
1850  }
1851 
1856  {
1857  return &m_SegmentSupportGeometry;
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 
1923  double m_SolenoidZ;
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
const HepGeom::Point3D< double > & getCorner3() const
Get corner 3 coordinates.
Definition: EKLMGeometry.h:676
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
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
const HepGeom::Point3D< double > & getCorner1B() const
Get corner 1B coordinates.
Definition: EKLMGeometry.h:625
double m_Corner4Z
Corner 4 Z coordinate.
Definition: EKLMGeometry.h:832
double getCorner3LX() const
Get corner 3 X length.
Definition: EKLMGeometry.h:438
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 > & getCorner2Inner() const
Get corner 2 coordinates (inner side).
Definition: EKLMGeometry.h:659
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
void setCorner3LY(double corner3LY)
Set corner 3 Y length.
Definition: EKLMGeometry.h:464
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
const HepGeom::Point3D< double > & getCorner4Prism() const
Get coordinates of the corner of corner 4 prism.
Definition: EKLMGeometry.h:761
double getThickness() const
Get thickness.
Definition: EKLMGeometry.h:251
HepGeom::Point3D< double > m_Corner4
Corner 4 coordinates.
Definition: EKLMGeometry.h:864
const HepGeom::Point3D< double > & getCorner1AInner() const
Get corner 1A coordinates (inner side).
Definition: EKLMGeometry.h:608
HepGeom::Point3D< double > m_Corner4Inner
Corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:867
const HepGeom::Point3D< double > & getCorner4Inner() const
Get corner 4 coordinates (inner side).
Definition: EKLMGeometry.h:744
void setCorner3LX(double corner3LX)
Set corner 3 X length.
Definition: EKLMGeometry.h:447
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
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 > & getCorner4() const
Get corner 4 coordinates.
Definition: EKLMGeometry.h:727
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
const HepGeom::Point3D< double > & getCorner1BInner() const
Get corner 1B coordinates (inner side).
Definition: EKLMGeometry.h:642
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
double m_Corner3Z
Corner 3 Z coordinate.
Definition: EKLMGeometry.h:820
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
const HepGeom::Point3D< double > & getCorner3Inner() const
Get corner 3 coordinates (inner side).
Definition: EKLMGeometry.h:693
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
const HepGeom::Point3D< double > & getCorner1A() const
Get corner 1A coordinates.
Definition: EKLMGeometry.h:591
double getCorner1Thickness() const
Get corner 1 thickness.
Definition: EKLMGeometry.h:336
void setCorner1Width(double corner1Width)
Set corner 1 width.
Definition: EKLMGeometry.h:328
const HepGeom::Point3D< double > & getCorner3Prism() const
Get coordinates of the corner of corner 3 prism.
Definition: EKLMGeometry.h:710
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.
Point m_DetailACenter
Detail A center.
void setDetailA(const ShieldDetailGeometry &geometry)
Set detail A geometry.
void setDetailB(const ShieldDetailGeometry &geometry)
Set detail B geometry.
const Point * getDetailBCenter() const
Get detail B center.
void setThickness(double thickness)
Set thickness.
void setDetailACenter(double x, double y)
Set detail A center.
const ShieldDetailGeometry * getDetailB() const
Get detail B geometry.
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.
const ShieldDetailGeometry * getDetailC() const
Get detail C geometry.
double getThickness() const
Get thickness.
const Point * getDetailACenter() const
Get detail A center.
Point m_DetailBCenter
Detail B center.
void setDetailD(const ShieldDetailGeometry &geometry)
Set detail D geometry.
const ShieldDetailGeometry * getDetailA() const
Get detail A geometry.
void setDetailBCenter(double x, double y)
Set detail B center.
ShieldDetailGeometry m_DetailD
Detail D.
ShieldDetailGeometry m_DetailA
Detail A.
void setDetailC(const ShieldDetailGeometry &geometry)
Set detail C geometry.
const ShieldDetailGeometry * getDetailD() const
Get detail D 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 ElementPosition * getSectorSupportPosition() const
Get position data for sector support structure.
const StripGeometry * getStripGeometry() const
Get strip geometry data.
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.
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.
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.
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).
const ElementPosition * getPlanePosition() const
Get position data for planes.
double m_SolenoidZ
Solenoid center Z coordinate.
int getNSegments() const
Get number of segments.
ElementPosition m_PlanePosition
Position data for planes.
const ElementPosition * getLayerPosition() const
Get position data for layers.
ElementPosition m_LayerPosition
Position data for layers.
int m_NStrips
Number of strips in one plane.
const ElementPosition * getSectorPosition() const
Get position data for sectors.
bool beamBackgroundStudy() const
Whether to perform beam-background study.
const ShieldGeometry * getShieldGeometry() const
Get shield layer details geometry data.
int getNStrips() const
Get number of strips.
double m_LayerShiftZ
Z distance between two layers.
const SegmentSupportGeometry * getSegmentSupportGeometry() const
Get segment support geometry data.
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.
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 EndcapStructureGeometry * getEndcapStructureGeometry() const
Get endcap structure geometry data.
int getNSegmentSupportElementsSector() const
Get number of segment support elements *in one sector).
ElementPosition * m_StripPosition
Position data for strips.
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).
const SectorSupportGeometry * getSectorSupportGeometry() const
Get sector support geometry data.
const ElementPosition * getSectionPosition() const
Get position data for sections.
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.