Belle II Software development
CDCGeometry.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#pragma once
9
10#include <vector>
11#include <string>
12
13#include <TObject.h>
14
15namespace Belle2 {
20
21 class GearDir;
22
26
27 class CDCGeometry: public TObject {
28
29 public:
30
31
35 class Rib : public TObject {
36
37 public:
38
42 Rib() {}
43
47 Rib(int id, double length, double width, double thick,
48 double rotx, double roty, double rotz,
49 double x, double y, double z,
50 int offset, int ndiv):
51 m_id(id), m_length(length), m_width(width), m_thick(thick),
52 m_rotx(rotx), m_roty(roty), m_rotz(rotz), m_x(x), m_y(y), m_z(z),
53 m_offset(offset), m_ndiv(ndiv)
54 {}
55
56
60 ~Rib() {}
61
65 int getId() const {return m_id;}
66
67
71 double getLength() const { return m_length;}
72
76 double getWidth() const { return m_width;}
77
81 double getThick() const { return m_thick;}
82
86 double getRotX() const { return m_rotx;}
90 double getRotY() const { return m_roty;}
94 double getRotZ() const { return m_rotz;}
95
99 double getX() const { return m_x;}
103 double getY() const { return m_y;}
107 double getZ() const { return m_z;}
108
112 int getOffset() const { return m_offset;}
116 int getNDiv() const { return m_ndiv;}
117
118
119 private:
120 int m_id;
121 double m_length;
122 double m_width;
123 double m_thick;
124 double m_rotx;
125 double m_roty;
126 double m_rotz;
127 double m_x;
128 double m_y;
129 double m_z;
131 int m_ndiv;
132
133
136 };
137
141 class Rib2 : public TObject {
142
143 public:
144
148 Rib2() {}
149
153 Rib2(int id, double length, double width, double thick,
154 double width2, double thick2, double rotx, double roty, double rotz,
155 double x, double y, double z,
156 int ndiv):
157 m_id(id), m_length(length), m_width(width), m_thick(thick),
158 m_width2(width2), m_thick2(thick2),
159 m_rotx(rotx), m_roty(roty), m_rotz(rotz),
160 m_x(x), m_y(y), m_z(z), m_ndiv(ndiv)
161 {}
162
163
167 ~Rib2() {}
168
172 int getId() const {return m_id;}
173
174
178 double getLength() const { return m_length;}
179
183 double getWidth() const { return m_width;}
184
188 double getThick() const { return m_thick;}
189
193 double getWidth2() const { return m_width2;}
194
198 double getThick2() const { return m_thick2;}
199
203 double getRotX() const { return m_rotx;}
204
208 double getRotY() const { return m_roty;}
209
213 double getRotZ() const { return m_rotz;}
214
218 double getX() const { return m_x;}
222 double getY() const { return m_y;}
226 double getZ() const { return m_z;}
227
231 int getNDiv() const { return m_ndiv;}
232
233
234 private:
235 int m_id;
236 double m_length;
237 double m_width;
238 double m_thick;
239 double m_width2;
240 double m_thick2;
241 double m_rotx;
242 double m_roty;
243 double m_rotz;
244 double m_x;
245 double m_y;
246 double m_z;
247 int m_ndiv;
248
249
252 };
253
257 class Rib3 : public TObject {
258
259 public:
260
264 Rib3() {}
265
269 Rib3(int id, double length, double width, double thick,
270 double r, double x, double y, double z,
271 double rx, double ry, double rz, int offset,
272 int ndiv):
273 m_id(id), m_length(length), m_width(width), m_thick(thick),
274 m_r(r), m_x(x), m_y(y), m_z(z),
275 m_rx(rx), m_ry(ry), m_rz(rz), m_offset(offset), m_ndiv(ndiv)
276 {}
277
278
282 ~Rib3() {}
283
287 int getId() const {return m_id;}
288
289
293 double getLength() const { return m_length;}
294
298 double getWidth() const { return m_width;}
299
303 double getThick() const { return m_thick;}
304
308 double getR() const { return m_r;}
309
313 double getX() const { return m_x;}
317 double getY() const { return m_y;}
321 double getZ() const { return m_z;}
322
326 double getRx() const { return m_rx;}
330 double getRy() const { return m_ry;}
334 double getRz() const { return m_rz;}
335
339 int getOffset() const { return m_offset;}
340
344 int getNDiv() const { return m_ndiv;}
345
346
347 private:
348 int m_id;
349 double m_length;
350 double m_width;
351 double m_thick;
352 double m_r;
353 double m_x;
354 double m_y;
355 double m_z;
356 double m_rx;
357 double m_ry;
358 double m_rz;
360 int m_ndiv;
361
362
365 };
366
370 class Rib4 : public TObject {
371
372 public:
373
377 Rib4() {}
378
382 Rib4(int id, double length, double width, double thick,
383 double length2, double width2, double thick2,
384 double x, double y, double z,
385 double x2, double y2, double z2, int offset,
386 int ndiv):
387 m_id(id), m_length(length), m_width(width), m_thick(thick),
388 m_length2(length2), m_width2(width2), m_thick2(thick2),
389 m_x(x), m_y(y), m_z(z),
390 m_x2(x2), m_y2(y2), m_z2(z2), m_offset(offset), m_ndiv(ndiv)
391 {}
392
393
397 ~Rib4() {}
398
402 int getId() const {return m_id;}
403
404
408 double getLength() const { return m_length;}
409
413 double getWidth() const { return m_width;}
414
418 double getThick() const { return m_thick;}
419
423 double getLength2() const { return m_length2;}
424
428 double getWidth2() const { return m_width2;}
429
433 double getThick2() const { return m_thick2;}
434
438 double getX() const { return m_x;}
442 double getY() const { return m_y;}
446 double getZ() const { return m_z;}
447
451 double getX2() const { return m_x2;}
455 double getY2() const { return m_y2;}
459 double getZ2() const { return m_z2;}
460
464 int getOffset() const { return m_offset;}
465
469 int getNDiv() const { return m_ndiv;}
470
471
472 private:
473 int m_id;
474 double m_length;
475 double m_width;
476 double m_thick;
477 double m_length2;
478 double m_width2;
479 double m_thick2;
480 double m_x;
481 double m_y;
482 double m_z;
483 double m_x2;
484 double m_y2;
485 double m_z2;
487 int m_ndiv;
488
489
492 };
493
497 class Rib5 : public TObject {
498
499 public:
500
504 Rib5() {}
505
509 Rib5(int id, double dr, double dz, double width, double thick, double rin,
510 double x, double y, double z,
511 double rotx, double roty, double rotz, int offset,
512 int ndiv):
513 m_id(id), m_dr(dr), m_dz(dz), m_width(width), m_thick(thick),
514 m_rin(rin), m_x(x), m_y(y), m_z(z),
515 m_rotx(rotx), m_roty(roty), m_rotz(rotz), m_offset(offset), m_ndiv(ndiv)
516 {}
517
518
522 ~Rib5() {}
523
527 int getId() const {return m_id;}
528
529
533 double getDr() const { return m_dr;}
534
538 double getDz() const { return m_dz;}
539
543 double getWidth() const { return m_width;}
544
548 double getThick() const { return m_thick;}
549
553 double getRin() const { return m_rin;}
554
558 double getX() const { return m_x;}
562 double getY() const { return m_y;}
566 double getZ() const { return m_z;}
567
571 double getRotx() const { return m_rotx;}
575 double getRoty() const { return m_roty;}
579 double getRotz() const { return m_rotz;}
580
584 int getOffset() const { return m_offset;}
585
589 int getNDiv() const { return m_ndiv;}
590
591
592 private:
593 int m_id;
594 double m_dr;
595 double m_dz;
596 double m_width;
597 double m_thick;
598 double m_rin;
599 double m_x;
600 double m_y;
601 double m_z;
602 double m_rotx;
603 double m_roty;
604 double m_rotz;
606 int m_ndiv;
607
608
611 };
612
616 class Cover : public TObject {
617
618 public:
619
623 Cover() {}
624
628 Cover(int id, double rmin1, double rmin2,
629 double rmax1, double rmax2,
630 double thick, double z):
631 m_id(id), m_rmin1(rmin1), m_rmin2(rmin2), m_rmax1(rmax1),
632 m_rmax2(rmax2), m_thick(thick), m_z(z)
633 {}
634
635
640
644 int getId() const {return m_id;}
648 double getRmin1() const { return m_rmin1;}
649
653 double getRmin2() const { return m_rmin2;}
654
658 double getRmax1() const { return m_rmax1;}
659
663 double getRmax2() const { return m_rmax2;}
664
668 double getThick() const { return m_thick;}
669
673 double getZ() const { return m_z;}
674
675
676
677 private:
678 int m_id;
679 double m_rmin1;
680 double m_rmin2;
681 double m_rmax1;
682 double m_rmax2;
683 double m_thick;
684 double m_z;
685
686
689 };
690
694 class Cover2 : public TObject {
695
696 public:
697
702
706 Cover2(int id, double rmin, double rmax,
707 double phis, double dphi,
708 double thick, double z):
709 m_id(id), m_rmin(rmin), m_rmax(rmax), m_phis(phis),
710 m_dphi(dphi), m_thick(thick), m_z(z)
711 {}
712
713
718
722 int getId() const {return m_id;}
726 double getRmin() const { return m_rmin;}
727
731 double getRmax() const { return m_rmax;}
732
736 double getPhis() const { return m_phis;}
737
741 double getDphi() const { return m_dphi;}
742
746 double getThick() const { return m_thick;}
747
751 double getZ() const { return m_z;}
752
753
754
755 private:
756 int m_id;
757 double m_rmin;
758 double m_rmax;
759 double m_phis;
760 double m_dphi;
761 double m_thick;
762 double m_z;
763
764
767 };
768
772 class NeutronShield : public TObject {
773
774 public:
775
780
784 NeutronShield(int id, double rmin1, double rmin2,
785 double rmax1, double rmax2,
786 double thick, double z):
787 m_id(id), m_rmin1(rmin1), m_rmin2(rmin2), m_rmax1(rmax1),
788 m_rmax2(rmax2), m_thick(thick), m_z(z)
789 {}
790
791
796
800 int getId() const {return m_id;}
804 double getRmin1() const { return m_rmin1;}
805
809 double getRmin2() const { return m_rmin2;}
810
814 double getRmax1() const { return m_rmax1;}
815
819 double getRmax2() const { return m_rmax2;}
820
824 double getThick() const { return m_thick;}
825
829 double getZ() const { return m_z;}
830
831
832
833 private:
834 int m_id;
835 double m_rmin1;
836 double m_rmin2;
837 double m_rmax1;
838 double m_rmax2;
839 double m_thick;
840 double m_z;
841
842
845 };
846
850 class Frontend : public TObject {
851
852 public:
853
858
862 Frontend(int id, double rmin, double rmax, double zfwd, double zbwd):
863 m_id(id), m_rmin(rmin), m_rmax(rmax), m_zfwd(zfwd), m_zbwd(zbwd)
864 {}
865
866
874 int getId() const {return m_id;}
878 double getRmin() const { return m_rmin;}
882 double getRmax() const { return m_rmax;}
883
887 double getZfwd() const { return m_zfwd;}
888
892 double getZbwd() const { return m_zbwd;}
893
894
895 private:
896 int m_id;
897 double m_rmin;
898 double m_rmax;
899 double m_zfwd;
900 double m_zbwd;
901
904 };
905
906
910 class MotherVolume : public TObject {
911
912 public:
913
918
923
927 void appendNode(double rmin, double rmax, double z);
928
932 int getNNodes() const { return m_rmin.size();}
936 std::vector<double> getRmin() const { return m_rmin;}
940 std::vector<double> getRmax() const { return m_rmax;}
944 std::vector<double> getZ() const { return m_z;}
945
946
947 private:
948 std::vector<double> m_rmin;
949 std::vector<double> m_rmax;
950 std::vector<double> m_z;
951
954 };
955
959 class SenseLayer : public TObject {
960
961 public:
962
967 {}
968
973 double r, double zfwd, double zbwd,
974 double dZfwd, double dZbwd,
975 double offset, int nWires, double nShifts) :
976 m_id(id), m_r(r),
977 m_zfwd(zfwd), m_zbwd(zbwd),
978 m_dZfwd(dZfwd), m_dZbwd(dZbwd),
979 m_offset(offset),
980 m_nWires(nWires),
981 m_nShifts(nShifts)
982 {
983 }
984
989
993 int getId() const { return m_id;}
994
998 double getR() const {return m_r;}
999
1003 double getZfwd() const { return m_zfwd;}
1004
1008 double getZbwd() const { return m_zbwd;}
1009
1013 void setDZfwd(double dz) {m_dZfwd = dz;}
1014
1018 double getDZfwd() const {return m_dZfwd;}
1019
1023 void setDZbwd(double dz) {m_dZbwd = dz;}
1024
1028 double getDZbwd() const {return m_dZbwd;}
1029
1033 void setOffset(double offset) {m_offset = offset;}
1034
1038 double getOffset() const {return m_offset;}
1039
1043 void setNShifts(int n) {m_nShifts = n;}
1044
1048 int getNShifts() const {return m_nShifts;}
1049
1053 void setNWires(int n) {m_nWires = n;}
1054
1058 int getNWires() const { return m_nWires;}
1059
1060
1061 private:
1062
1063 int m_id;
1064 double m_r;
1065 double m_zfwd;
1066 double m_zbwd;
1067 double m_dZfwd;
1068 double m_dZbwd;
1069 double m_offset;
1071 double m_nShifts;
1072
1075 };
1076
1080 class FieldLayer : public TObject {
1081
1082 public:
1083
1088
1093 double r, double zfwd, double zbwd):
1094 m_id(id), m_r(r),
1095 m_zfwd(zfwd), m_zbwd(zbwd)
1096 {
1097 }
1098
1103
1107 int getId() const { return m_id;}
1108
1112 double getR() const {return m_r;}
1113
1117 double getZfwd() const { return m_zfwd;}
1118
1122 double getZbwd() const { return m_zbwd;}
1123
1124 private:
1125
1126 int m_id;
1127 double m_r;
1128 double m_zfwd;
1129 double m_zbwd;
1130
1133 };
1134
1138 class OuterWall : public TObject {
1139
1140 public:
1141
1146
1150 OuterWall(const std::string& name, int id,
1151 double rmin, double rmax, double zfwd, double zbwd):
1152 m_name(name), m_id(id), m_rmin(rmin),
1153 m_rmax(rmax), m_zfwd(zfwd), m_zbwd(zbwd)
1154 {
1155 }
1156
1161
1165 std::string getName() const { return m_name;}
1166
1170 int getId() const { return m_id;}
1171
1175 double getRmin() const { return m_rmin;}
1176
1180 double getRmax() const {return m_rmax;}
1181
1185 double getZfwd() const { return m_zfwd;}
1186
1190 double getZbwd() const { return m_zbwd;}
1191
1192 private:
1193
1194 std::string m_name;
1195 int m_id;
1196 double m_rmin;
1197 double m_rmax;
1198 double m_zfwd;
1199 double m_zbwd;
1200
1201
1204 };
1205
1209 class InnerWall : public TObject {
1210
1211 public:
1212
1217
1221 InnerWall(const std::string& name, int id,
1222 double rmin, double rmax, double zfwd, double zbwd):
1223 m_name(name), m_id(id), m_rmin(rmin),
1224 m_rmax(rmax), m_zfwd(zfwd), m_zbwd(zbwd)
1225 {
1226 }
1227
1232
1236 std::string getName() const { return m_name;}
1237
1241 int getId() const { return m_id;}
1242
1246 double getRmin() const { return m_rmin;}
1247
1251 double getRmax() const {return m_rmax;}
1252
1256 double getZfwd() const { return m_zfwd;}
1257
1261 double getZbwd() const { return m_zbwd;}
1262
1263 private:
1264
1265 std::string m_name;
1266 int m_id;
1267 double m_rmin;
1268 double m_rmax;
1269
1270 double m_zfwd;
1271 double m_zbwd;
1272
1273
1276 };
1277
1281 class EndPlateLayer : public TObject {
1282
1283 public:
1284
1289
1293 EndPlateLayer(const std::string& name, int ilay,
1294 double rmin, double rmax, double zfwd, double zbwd):
1295 m_name(name), m_layer(ilay), m_rmin(rmin),
1296 m_rmax(rmax), m_zfwd(zfwd), m_zbwd(zbwd)
1297 {
1298 }
1299
1304
1308 std::string getName() const { return m_name;}
1309
1313 int getILayer() const { return m_layer;}
1314
1318 double getRmin() const { return m_rmin;}
1319
1323 double getRmax() const {return m_rmax;}
1324
1328 double getZfwd() const { return m_zfwd;}
1329
1333 double getZbwd() const { return m_zbwd;}
1334
1335 private:
1336
1337 std::string m_name;
1339 double m_rmin;
1340 double m_rmax;
1341 double m_zfwd;
1342 double m_zbwd;
1343
1346 };
1347
1351 class EndPlate : public TObject {
1352
1353 public:
1358
1362 explicit EndPlate(int i) : m_id(i) {};
1363
1368
1372 void appendNew(const std::string& name, int ilay,
1373 double rmin, double rmax, double zfwd, double zbwd)
1374 {
1375 EndPlateLayer eplayer(name, ilay, rmin, rmax, zfwd, zbwd);
1376 m_endPlateLayers.push_back(eplayer);
1377 }
1378
1382 int getNEndPlateLayers() const {return m_endPlateLayers.size();}
1383
1387 int getId() const {return m_id;}
1388
1396 std::vector<EndPlateLayer> getEndPlateLayers() const {return m_endPlateLayers;}
1397 private:
1398 int m_id;
1399 std::vector<EndPlateLayer> m_endPlateLayers;
1400
1403 };
1404
1409
1413 explicit CDCGeometry(const GearDir&);
1414
1418 ~CDCGeometry();
1419
1423 void read(const GearDir&);
1424
1429
1433 double getGlobalOffsetX() const { return m_globalOffsetX;}
1434
1438 double getGlobalOffsetY() const { return m_globalOffsetY;}
1439
1443 double getGlobalOffsetZ() const { return m_globalOffsetZ;}
1444
1448 double getGlobalOffsetA() const { return m_globalOffsetA;}
1449
1453 double getGlobalOffsetB() const { return m_globalOffsetB;}
1454
1458 double getGlobalOffsetC() const { return m_globalOffsetC;}
1459
1463 double getFiducialRmin() const { return m_fiducialRmin;}
1464
1468 double getFiducialRmax() const { return m_fiducialRmax;}
1469
1474
1478 std::vector<OuterWall> getOuterWalls() const { return m_outerWalls;}
1479
1483 OuterWall getOuterWall(int i) const { return m_outerWalls.at(i);}
1484
1488 std::vector<InnerWall> getInnerWalls() const { return m_innerWalls;}
1489
1493 InnerWall getInnerWall(int i) const { return m_innerWalls.at(i);}
1494
1498 int getNEndplates() const { return m_endplates.size();}
1499
1503 EndPlate getEndPlate(int i) const {return m_endplates.at(i);};
1504
1508 std::vector<EndPlate> getEndPlates() const { return m_endplates;}
1509
1513 int getNFrontends() const {return m_frontends.size();}
1514
1518 std::vector<Frontend> getFrontends() const {return m_frontends;}
1519
1523 SenseLayer getSenseLayer(int i) const { return m_senseLayers.at(i);}
1524
1528 std::vector<SenseLayer> getSenseLayers() const { return m_senseLayers;}
1529
1533 int getNSenseLayers() const { return m_senseLayers.size();}
1534
1538 double getSenseDiameter() const { return m_senseWireDiameter;}
1539
1543 double getSenseTension() const { return m_senseWireTension;}
1544
1548 int getNSenseWires() const { return m_senseWireNumbers;}
1549
1553 FieldLayer getFieldLayer(int i) const { return m_fieldLayers.at(i);}
1554
1558 std::vector<FieldLayer> getFieldLayers() const { return m_fieldLayers;}
1559
1563 int getNFieldLayers() const { return m_fieldLayers.size();}
1564
1565
1569 std::vector<NeutronShield> getNeutronShields() const { return m_neutronShields;}
1570
1574 std::vector<Cover> getCovers() const { return m_covers;}
1575
1579 std::vector<Cover2> getCover2s() const { return m_cover2s;}
1580
1584 std::vector<Rib> getRibs() const { return m_ribs;}
1585
1589 std::vector<Rib2> getRib2s() const { return m_rib2s;}
1590
1594 std::vector<Rib3> getRib3s() const { return m_rib3s;}
1595
1599 std::vector<Rib4> getRib4s() const { return m_rib4s;}
1600
1604 std::vector<Rib5> getRib5s() const { return m_rib5s;}
1605
1606
1610 double getFieldDiameter() const { return m_fieldWireDiameter;}
1611
1615 int getNFieldWires() const { return m_fieldWireNumbers;}
1616
1621
1625 double getClockFrequency() const { return m_clockFrequency;}
1626
1631
1632
1637
1642
1647
1652
1657
1662
1663
1664 private:
1665
1666 double m_globalPhiRotation = 0.0;
1667 double m_globalOffsetX = 0.0;
1668 double m_globalOffsetY = 0.0;
1669 double m_globalOffsetZ = 0.0;
1670 double m_globalOffsetA = 0.0;
1671 double m_globalOffsetB = 0.0;
1672 double m_globalOffsetC = 0.0;
1676 std::vector<SenseLayer> m_senseLayers;
1677 std::vector<FieldLayer> m_fieldLayers;
1678 std::vector<InnerWall> m_innerWalls;
1679 std::vector<OuterWall> m_outerWalls;
1680 std::vector<EndPlate> m_endplates;
1681 std::vector<Frontend> m_frontends;
1682 std::vector<NeutronShield> m_neutronShields;
1683 std::vector<Cover> m_covers;
1684 std::vector<Cover2> m_cover2s;
1685 std::vector<Rib> m_ribs;
1686 std::vector<Rib2> m_rib2s;
1687 std::vector<Rib3> m_rib3s;
1688 std::vector<Rib4> m_rib4s;
1689 std::vector<Rib5> m_rib5s;
1690
1691 double m_senseWireDiameter = 0.003;
1693 double m_senseWireTension = 50.0;
1694 double m_fieldWireDiameter = 0.0126;
1696 double m_feedThroughLength = 1.5;
1699
1700 ushort m_maxNSenseLayers = 56;
1701 ushort m_maxNFieldLayers = 55;
1705 ushort m_maxNCellsPerLayer = 384;
1706
1708
1709 };
1710
1711} // end of namespace Belle2
1712
double getDphi() const
Get the maximum radius 2 of the cover2.
double m_phis
the maximum radius 1 of the cover2.
int getId() const
Get the cover2 Id.
double getPhis() const
Get the maximum radius 1 of the cover2.
double m_thick
the z-position of the cover2.
double getZ() const
Get the z-position of the cover2.
double m_dphi
the maximum radius 2 of the cover2.
double getThick() const
Get the thickness of the cover2.
double getRmax() const
Get the minimum radius 2 of the cover2.
double m_rmax
the mimnum radius 2 of the cover2.
Cover2(int id, double rmin, double rmax, double phis, double dphi, double thick, double z)
Constructor.
double m_z
the thickness of the cover2.
double getRmin() const
Get the minimum radius 1 of the cover2.
ClassDef(Cover2, 1)
Makes objects storable.
double m_rmin
the mimnum radius 1 of the cover2.
double getRmin1() const
Get the minimum radius 1 of the cover.
double m_rmin1
the mimnum radius 1 of the cover.
double getRmax1() const
Get the maximum radius 1 of the cover.
int getId() const
Get the cover Id.
double m_rmin2
the mimnum radius 2 of the cover.
double m_thick
the z-position of the cover.
ClassDef(Cover, 1)
Makes objects storable.
Cover(int id, double rmin1, double rmin2, double rmax1, double rmax2, double thick, double z)
Constructor.
double getZ() const
Get the z-position of the cover.
double getRmin2() const
Get the minimum radius 2 of the cover.
double m_rmax2
the maximum radius 2 of the cover.
double getThick() const
Get the thickness of the cover.
double m_rmax1
the maximum radius 1 of the cover.
double m_z
the thickness of the cover.
double getRmax2() const
Get the maximum radius 2 of the cover.
Endplate layer geometry parameters.
int getILayer() const
Get ILayer.
EndPlateLayer(const std::string &name, int ilay, double rmin, double rmax, double zfwd, double zbwd)
Constructor.
ClassDef(EndPlateLayer, 1)
Makes objects storable.
double getZbwd() const
Get bwd z-position.
std::string getName() const
Get name.
double getRmax() const
Get Rmax.
double getRmin() const
Get Rmin.
double getZfwd() const
Get fwd z-position.
Endplate geometry parameters.
void appendNew(const std::string &name, int ilay, double rmin, double rmax, double zfwd, double zbwd)
Add new endplate layer.
int getNEndPlateLayers() const
Get the number of endplate layers.
std::vector< EndPlateLayer > m_endPlateLayers
Endplate layers.
std::vector< EndPlateLayer > getEndPlateLayers() const
Get the list of endplate layers.
EndPlate(int i)
Constructor.
EndPlateLayer getEndPlateLayer(int i) const
Get i-th endplate layer.
ClassDef(EndPlate, 1)
Makes objects storable.
Field layer geometry parameters.
double getR() const
Get Radius.
double getZbwd() const
Get bwd z-position.
ClassDef(FieldLayer, 1)
Makes objects storable.
FieldLayer(int id, double r, double zfwd, double zbwd)
Constructor.
double getZfwd() const
Get fwd z-position.
Frontend(int id, double rmin, double rmax, double zfwd, double zbwd)
Constructor.
int getId() const
Get the frontend layer Id.
double getZbwd() const
Get the backward z-position of the frontend layer.
int m_id
Frontend layer id.
double getRmax() const
Get the maximum radius of the frontend layer.
double m_rmax
the maximum radius of the frontend layer.
ClassDef(Frontend, 1)
Makes objects storable.
double m_zfwd
the forawrd z-position of the frontend layer.
double getRmin() const
Get the minimum radius of the frontend layer.
double m_rmin
the mimnum radius of the frontend layer.
double getZfwd() const
Get the forward z-position of the frontend layer.
double m_zbwd
the forawrd z-position of the frontend layer.
Inner wall geometry parameters.
ClassDef(InnerWall, 1)
Makes objects storable.
double getZbwd() const
Get bwd z-position.
std::string getName() const
Get name.
InnerWall(const std::string &name, int id, double rmin, double rmax, double zfwd, double zbwd)
Constructor.
double getRmax() const
Get Rmax.
double getRmin() const
Get Rmin.
double getZfwd() const
Get fwd z-position.
Mother volume geometry parameters.
std::vector< double > m_z
Z-cordinates list of the mother volume.
std::vector< double > getZ() const
Get the list of the z coordinates.
std::vector< double > getRmin() const
Get the list of the Rmin coordinates.
std::vector< double > m_rmin
Rmin list of the mother volume.
ClassDef(MotherVolume, 1)
Makes objects storable.
int getNNodes() const
Get the number of the mother volume nodes.
std::vector< double > m_rmax
Rmax list of the mother volume.
void appendNode(double rmin, double rmax, double z)
Append a new node.
std::vector< double > getRmax() const
Get the list of the Rmax coordinates.
double getRmin1() const
Get the minimum radius 1 of the shield.
double m_rmin1
the mimnum radius 1 of the shield.
double getRmax1() const
Get the maximum radius 1 of the shield.
int getId() const
Get the shield Id.
double m_rmin2
the mimnum radius 2 of the shield.
double m_thick
the z-position of the shield.
double getZ() const
Get the z-position of the shield.
double getRmin2() const
Get the minimum radius 2 of the shield.
double m_rmax2
the maximum radius 2 of the shield.
NeutronShield(int id, double rmin1, double rmin2, double rmax1, double rmax2, double thick, double z)
Constructor.
double getThick() const
Get the thickness of the shield.
double m_rmax1
the maximum radius 1 of the shield.
double m_z
the thickness of the shield.
double getRmax2() const
Get the maximum radius 2 of the shield.
ClassDef(NeutronShield, 1)
Makes objects storable.
Outer wall geometry parameters.
ClassDef(OuterWall, 1)
Makes objects storable.
OuterWall(const std::string &name, int id, double rmin, double rmax, double zfwd, double zbwd)
Constructor.
double getZbwd() const
Get bwd z-position.
std::string getName() const
Get name.
double getRmax() const
Get Rmax.
double getRmin() const
Get Rmin.
double getZfwd() const
Get fwd z-position.
double getWidth() const
Get the width of the rib2.
double getThick2() const
Get the thickness of the rib2.
ClassDef(Rib2, 1)
Makes objects storable.
double m_rotx
rotation angle w.r.t.
double getX() const
Get the x-position of the rib2.
double m_roty
rotation angle w.r.t.
int m_ndiv
Number of division.
double getRotX() const
Get the rotation angle w.r.t x-axis of the rib2.
int getId() const
Get the rib2 Id.
double m_width2
width of the rib2.
double m_width
width of the rib2.
double m_thick2
thickness of the rib2.
double m_x
the y-position of the rib2.
double m_thick
thickness of the rib2.
Rib2(int id, double length, double width, double thick, double width2, double thick2, double rotx, double roty, double rotz, double x, double y, double z, int ndiv)
Constructor.
double getWidth2() const
Get the width of the rib2.
double getZ() const
Get the z-position of the rib2.
double getRotY() const
Get the rotation angle w.r.t y-axis of the rib2.
double getY() const
Get the y-position of the rib2.
double getThick() const
Get the thickness of the rib2.
double m_length
length of the rib2.
double m_z
the z-position of the rib2.
double m_rotz
rotation angle w.r.t.
double getRotZ() const
Get the rotation angle w.r.t z-axis of the rib2.
double m_y
the y-position of the rib2.
int getNDiv() const
Get number of division of the rib2.
double getLength() const
Get the length of the rib2.
int getOffset() const
Get number of division of the rib3.
double getWidth() const
Get the width of the rib3.
double getRy() const
Get the y-position of the rib3.
Rib3(int id, double length, double width, double thick, double r, double x, double y, double z, double rx, double ry, double rz, int offset, int ndiv)
Constructor.
double getX() const
Get the x-position of the rib3.
int m_ndiv
Number of division.
int getId() const
Get the rib3 Id.
double m_ry
the y-position of the rib3.
double m_width
width of the rib3.
double getR() const
Get the width of the rib3.
double getRx() const
Get the x-position of the rib3.
double m_x
the y-position of the rib3.
double m_thick
thickness of the rib3.
double getRz() const
Get the z-position of the rib3.
double getZ() const
Get the z-position of the rib3.
int m_offset
Number of division.
double getY() const
Get the y-position of the rib3.
double getThick() const
Get the thickness of the rib3.
double m_length
length of the rib3.
double m_z
the z-position of the rib3.
double m_rz
the z-position of the rib3.
double m_y
the y-position of the rib3.
double m_r
width of the rib3.
int getNDiv() const
Get number of division of the rib3.
double m_rx
the y-position of the rib3.
double getLength() const
Get the length of the rib3.
ClassDef(Rib3, 1)
Makes objects storable.
int getOffset() const
Get number of division of the rib4.
double getWidth() const
Get the width of the rib4.
double getLength2() const
Get the length of the rib4.
double getThick2() const
Get the thickness of the rib4.
double getY2() const
Get the y-position of the rib4.
double m_x2
the y-position of the rib4.
double getX() const
Get the x-position of the rib4.
int m_ndiv
Number of division.
int getId() const
Get the rib4 Id.
double m_width2
width of the rib4.
double m_width
width of the rib4.
double m_thick2
thickness of the rib4.
double m_x
the y-position of the rib4.
double m_thick
thickness of the rib4.
double getX2() const
Get the x-position of the rib4.
double m_y2
the y-position of the rib4.
Rib4(int id, double length, double width, double thick, double length2, double width2, double thick2, double x, double y, double z, double x2, double y2, double z2, int offset, int ndiv)
Constructor.
double getWidth2() const
Get the width of the rib4.
double getZ() const
Get the z-position of the rib4.
int m_offset
Number of division.
double getY() const
Get the y-position of the rib4.
double getThick() const
Get the thickness of the rib4.
double m_length
length of the rib4.
double m_z2
the z-position of the rib4.
double getZ2() const
Get the z-position of the rib4.
double m_z
the z-position of the rib4.
double m_y
the y-position of the rib4.
double m_length2
length of the rib4.
int getNDiv() const
Get number of division of the rib4.
double getLength() const
Get the length of the rib4.
ClassDef(Rib4, 1)
Makes objects storable.
int getOffset() const
Get number of division of the rib5.
double getWidth() const
Get the width of the rib5.
Rib5(int id, double dr, double dz, double width, double thick, double rin, double x, double y, double z, double rotx, double roty, double rotz, int offset, int ndiv)
Constructor.
double m_rotx
the y-position of the rib5.
double m_rin
length of the rib5.
double getX() const
Get the x-position of the rib5.
double m_roty
the y-position of the rib5.
int m_ndiv
Number of division.
int getId() const
Get the rib5 Id.
double m_dz
length of the rib5.
double m_width
width of the rib5.
double m_x
the y-position of the rib5.
double m_thick
thickness of the rib5.
double m_dr
length of the rib5.
double getZ() const
Get the z-position of the rib5.
int m_offset
Number of division.
double getRotz() const
Get the z-position of the rib5.
double getY() const
Get the y-position of the rib5.
double getThick() const
Get the thickness of the rib5.
double getRin() const
Get the length of the rib5.
double getDz() const
Get the length of the rib5.
double m_z
the z-position of the rib5.
double getRotx() const
Get the x-position of the rib5.
double m_rotz
the z-position of the rib5.
double m_y
the y-position of the rib5.
ClassDef(Rib5, 1)
Makes objects storable.
double getRoty() const
Get the y-position of the rib5.
int getNDiv() const
Get number of division of the rib5.
double getDr() const
Get the length of the rib5.
int getOffset() const
Get number of division of the rib.
double getWidth() const
Get the width of the rib.
Definition CDCGeometry.h:76
double m_rotx
the y-position of the rib.
double getX() const
Get the x-position of the rib.
Definition CDCGeometry.h:99
double m_roty
the y-position of the rib.
int m_ndiv
Number of division.
double getRotX() const
Get the x-position of the rib.
Definition CDCGeometry.h:86
int getId() const
Get the rib Id.
Definition CDCGeometry.h:65
double m_width
width of the rib.
Rib(int id, double length, double width, double thick, double rotx, double roty, double rotz, double x, double y, double z, int offset, int ndiv)
Constructor.
Definition CDCGeometry.h:47
double m_x
the y-position of the rib.
double m_thick
thickness of the rib.
ClassDef(Rib, 2)
Makes objects storable.
double getZ() const
Get the z-position of the rib.
int m_offset
Number of division.
double getRotY() const
Get the y-position of the rib.
Definition CDCGeometry.h:90
double getY() const
Get the y-position of the rib.
double getThick() const
Get the thickness of the rib.
Definition CDCGeometry.h:81
double m_length
length of the rib.
double m_z
the z-position of the rib.
double m_rotz
the z-position of the rib.
double getRotZ() const
Get the z-position of the rib.
Definition CDCGeometry.h:94
double m_y
the y-position of the rib.
int getNDiv() const
Get number of division of the rib.
double getLength() const
Get the length of the rib.
Definition CDCGeometry.h:71
Sense layer geometry parameters.
int getNShifts() const
Get Nshifts.
void setOffset(double offset)
Set offset.
double getDZfwd() const
Get fwd dz.
void setDZfwd(double dz)
Set fwd dz.
void setNWires(int n)
Set number of wires.
double getDZbwd() const
Get bwd dz.
SenseLayer()
Default constructor.
SenseLayer(int id, double r, double zfwd, double zbwd, double dZfwd, double dZbwd, double offset, int nWires, double nShifts)
Constructor.
void setDZbwd(double dz)
Set bwd dz.
int getNWires() const
Get number of wires.
void setNShifts(int n)
Set Nshifts.
double getR() const
Get Radius.
double getZbwd() const
Get bwd z-position.
double getOffset() const
Get offset.
ClassDef(SenseLayer, 1)
Makes objects storable.
double getZfwd() const
Get fwd z-position.
double getGlobalOffsetY() const
Get the global y offset of CDC wrt Belle2 coord.
FieldLayer getFieldLayer(int i) const
Get the i-th field layer.
double m_globalOffsetB
Offset angle b of the whole cdc wrt B2 coord system (rad).
OuterWall getOuterWall(int i) const
Get the i-th outer wall.
ushort m_maxNSuperLayers
Maximum number of Super Layers.
std::vector< Rib2 > getRib2s() const
Get the list of rib2s.
double getFiducialRmin() const
Get the fiducial Rmin of CDC sensitive volume.
MotherVolume m_mother
CDC mother volume.
double m_globalPhiRotation
Global rotation in phi (rad).
std::vector< Rib > getRibs() const
Get the list of ribs.
int m_senseWireNumbers
Number of sense wires.
std::vector< Rib5 > m_rib5s
Rib5s.
double getGlobalOffsetX() const
Get the global x offset of CDC wrt Belle2 coord.
double m_globalOffsetZ
Offset z of the whole cdc wrt B2 coord system (cm).
int m_fieldWireNumbers
Number of field wires.
std::vector< InnerWall > getInnerWalls() const
Get the list of inner walls.
ushort getOffsetOfFirstLayer() const
Get the offset of the first layer.
~CDCGeometry()
Destructor.
std::vector< Rib5 > getRib5s() const
Get the list of rib5s.
std::vector< FieldLayer > getFieldLayers() const
Get the list of field layers.
double getFiducialRmax() const
Get the fiducial Rmax of CDC sensitive volume.
std::vector< NeutronShield > m_neutronShields
Neutron shields.
double getClockFrequency() const
Get the clock frequency.
ushort getMaxNumberOfSuperLayers() const
Get the maximum number of super layers.
ClassDef(CDCGeometry, 5)
ClassDef, must be the last term before the closing {}.
double m_globalOffsetX
Offset x of the whole cdc wrt B2 coord system (cm).
int getNFieldWires() const
Get the number of field wires.
std::vector< Rib3 > getRib3s() const
Get the list of rib3s.
std::vector< Cover2 > getCover2s() const
Get the list of covers.
int getNFrontends() const
Get the number of frontend layers.
CDCGeometry()
Default constructor.
MotherVolume getMotherVolume() const
Get the mother volume geometry of CDC.
double m_feedThroughLength
Feedthrough length (cm).
int getNSenseWires() const
Get the number of sense wires.
double getSenseDiameter() const
Get the diameter of sense wire.
ushort m_maxNSenseLayers
Maximum number of Sense Wire Layers.
std::vector< Cover2 > m_cover2s
Cover2s.
double m_senseWireDiameter
Sense wire diameter (cm).
double getGlobalOffsetB() const
Get the global offset angle b of CDC wrt Belle2 coord.
std::vector< Frontend > getFrontends() const
Get the list of frontend layers.
double getGlobalOffsetA() const
Get the global offset angle a of CDC wrt Belle2 coord.
double m_clockFrequency
Clock frequency.
InnerWall getInnerWall(int i) const
Get the i-th inner wall.
double getFieldDiameter() const
Get the diameter of field wire.
std::vector< Cover > m_covers
Covers.
ushort getMaxNumberOfCellsPerLayer() const
Get the maximum number of cells in one layer.
EndPlate getEndPlate(int i) const
Get the i-th endplate.
double m_globalOffsetY
Offset y of the whole cdc wrt B2 coord system (cm).
std::vector< EndPlate > m_endplates
Endplate.
ushort m_firstSuperLayerOffset
Offset of the first super layer (for reduced CDC studies)
ushort getNumberOfSenseLayers() const
Get the number of sense layers.
std::vector< InnerWall > m_innerWalls
Inner wall.
int getNFieldLayers() const
Get the number of field layers.
double getGlobalPhiRotation() const
Get the global phi rotation of CDC.
double getGlobalOffsetC() const
Get the global offset angle c of CDC wrt Belle2 coord.
std::vector< Rib4 > getRib4s() const
Get the list of rib4s.
double m_fiducialRmin
Minimum radius of the CDC fiducial volume.
double m_fieldWireDiameter
Field wire diameter (cm).
std::vector< OuterWall > m_outerWalls
Outer wall.
std::vector< NeutronShield > getNeutronShields() const
Get the list of neutron shields.
std::vector< Frontend > m_frontends
Electronics board.
double m_globalOffsetC
Offset angle c of the whole cdc wrt B2 coord system (rad).
std::vector< SenseLayer > m_senseLayers
Sense layer.
int getNSenseLayers() const
Get the number of sense layers.
std::vector< EndPlate > getEndPlates() const
Get the list of endplates.
double getFeedthroughLength() const
Get the length of feedthrough.
double m_fiducialRmax
Maximum radius of the CDC fiducial volume.
double getSenseTension() const
Get the tension applied to sense wire.
std::vector< SenseLayer > getSenseLayers() const
Get the list of sense layers.
std::vector< FieldLayer > m_fieldLayers
Field layer.
ushort m_maxNCellsPerLayer
Maximum number wires within a layer.
std::vector< Rib > m_ribs
Ribs.
ushort getNumberOfFieldLayers() const
Get the number of field layers.
ushort m_maxNFieldLayers
Maximum number of Field Wire Layers.
void read(const GearDir &)
Get geometry parameters from Gearbox.
int getNEndplates() const
Get the number of endplates.
std::vector< Rib4 > m_rib4s
Rib4s.
double getGlobalOffsetZ() const
Get the global z offset of CDC wrt Belle2 coord.
double m_globalOffsetA
Offset angle a of the whole cdc wrt B2 coord system (rad).
ushort m_firstLayerOffset
Offset of the first layer (for reduced CDC studies)
ushort getOffsetOfFirstSuperLayer() const
Get the offset of the first super layer.
std::vector< OuterWall > getOuterWalls() const
Get the list of outer walls.
std::vector< Cover > getCovers() const
Get the list of covers.
SenseLayer getSenseLayer(int i) const
Get i-th sense layer.
double m_nominalSpaceResolution
Nominal space resolution.
double getNominalSpaceResolution() const
Get the nominal space resolution.
double m_senseWireTension
Sense wire tension (gW).
std::vector< Rib2 > m_rib2s
Rib2s.
std::vector< Rib3 > m_rib3s
Rib3s.
GearDir is the basic class used for accessing the parameter store.
Definition GearDir.h:31
Abstract base class for different kinds of events.