11 #include "GeoModelKernel/GeoBox.h"
12 #include "GeoModelKernel/GeoTubs.h"
13 #include "GeoModelKernel/GeoTrap.h"
14 #include "GeoModelKernel/GeoLogVol.h"
15 #include "GeoModelKernel/GeoPhysVol.h"
16 #include "GeoModelKernel/GeoMaterial.h"
17 #include "GeoModelKernel/GeoNameTag.h"
18 #include "GeoModelKernel/GeoTransform.h"
19 #include "GeoModelKernel/GeoShapeShift.h"
20 #include "GeoModelKernel/GeoShapeUnion.h"
21 #include "GaudiKernel/SystemOfUnits.h"
27 GeoModelIO::ReadGeoModel* sqliteReader,
28 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
29 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX):
46 GeoBox* dummybox=
new GeoBox(4711., 4711., 4711.);
47 GeoLogVol* dummyTMT =
new GeoLogVol(
"TMT",dummybox,ether);
48 GeoPhysVol* theTMT =
new GeoPhysVol(dummyTMT);
55 double volume = 12647.7;
57 GeoNameTag*
tag =
new GeoNameTag(
"TMT");
84 double zpos = 0.5*(z1+z2);
85 double xpos = 0.5*(xbase1 + xbase2 - 0.5*(w2+w1));
88 if (w1 != w2 || xbase1 != xbase2) {
96 GeoIntrusivePtr<const GeoShape> shape{};
97 if (w1 == w2 &&
theta == 0) {
99 shape =
new GeoBox(0.5*w1, 0.5*widthy, 0.5*
length);
101 shape =
new GeoTrap(0.5*
length,
theta,
phi, 0.5*widthy, 0.5*w1, 0.5*w1, angleydzn,
102 0.5*widthy, 0.5*w2, 0.5*w2, angleydzp);
113 GeoLogVol* tmpLogVol=
new GeoLogVol(
"TMT",shape,material);
114 GeoPhysVol* tmpPhysVol=
new GeoPhysVol(tmpLogVol);
115 GeoTransform* trans =
new GeoTransform(GeoTrf::Translate3D(xpos,ypos,zpos));
119 theTMT->add(tmpPhysVol);
124 GeoLogVol* tmpLogVol=
new GeoLogVol(
"TMT",shape,material);
125 GeoPhysVol* tmpPhysVol=
new GeoPhysVol(tmpLogVol);
127 for (
int ii = 0; ii < halfNModule; ii++) {
132 GeoTransform* transPos =
new GeoTransform(GeoTrf::Translate3D(xpos,ypos,zpos+zshift));
134 theTMT->add(transPos);
135 theTMT->add(tmpPhysVol);
137 GeoTransform* transNeg =
new GeoTransform(GeoTrf::Translate3D(xpos,ypos,-(zpos+zshift))*GeoTrf::RotateX3D(180*
Gaudi::Units::deg));
139 theTMT->add(transNeg);
140 theTMT->add(tmpPhysVol);
153 const GeoShape * shiftedShape = &(*nextShape << trans);
155 lastShape = &(lastShape->add(*shiftedShape));
157 lastShape = shiftedShape;