45 const GeoMaterial* ether =
m_mat_mgr->getMaterial(
"special::Ether");
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;
56 const GeoMaterial* material =
m_mat_mgr->getMaterialForVolume(matName,volume);
57 GeoNameTag* tag =
new GeoNameTag(
"TMT");
60 GeoTrf::RotateX3D traprot(180.*Gaudi::Units::deg);
62 int halfNModule =
m_gmt_mgr->PixelNModule()/2;
64 for (
int ii = 0; ii <
m_gmt_mgr->PixelTMTNumParts(); ii++) {
67 double xbase1 =
m_gmt_mgr->PixelTMTBaseX1(ii);
68 double xbase2 =
m_gmt_mgr->PixelTMTBaseX2(ii);
69 double w1 =
m_gmt_mgr->PixelTMTWidthX1(ii);
70 double w2 =
m_gmt_mgr->PixelTMTWidthX2(ii);
71 double widthy =
m_gmt_mgr->PixelTMTWidthY(ii);
72 double ypos =
m_gmt_mgr->PixelTMTPosY(ii);
73 bool perModule =
m_gmt_mgr->PixelTMTPerModule(ii);
84 double zpos = 0.5*(z1+z2);
85 double xpos = 0.5*(xbase1 + xbase2 - 0.5*(w2+w1));
88 if (w1 != w2 || xbase1 != xbase2) {
89 theta = std::atan((xbase2 - xbase1 - 0.5*(w2-w1))/
length);
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++) {
130 double zshift =
m_gmt_mgr->PixelModuleZPosition(1) * 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);
GeoPixelTMT(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)