20 #include "GeoModelRead/ReadGeoModel.h"
21 #include "GeoModelKernel/GeoBox.h"
22 #include "GeoModelKernel/GeoLogVol.h"
23 #include "GeoModelKernel/GeoPhysVol.h"
24 #include "GeoModelKernel/GeoFullPhysVol.h"
25 #include "GeoModelKernel/GeoNameTag.h"
26 #include "GeoModelKernel/GeoIdentifierTag.h"
27 #include "GeoModelKernel/GeoTransform.h"
28 #include "GeoModelKernel/GeoShape.h"
29 #include "GeoModelKernel/GeoShapeUnion.h"
30 #include "GeoModelKernel/GeoShapeShift.h"
31 #include "GeoModelKernel/GeoDefinitions.h"
32 #include "GaudiKernel/SystemOfUnits.h"
41 GeoModelIO::ReadGeoModel* sqliteReader,
42 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
43 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
83 const double t_hybrid =
m_hybrid->thickness();
84 const double w_hybrid =
m_hybrid->width();
87 const double t_pigtail =
m_pigtail->thickness();
88 const double w_pigtail =
m_pigtail->width();
89 const double l_pigtail =
m_pigtail->length();
91 const double t_sensor =
m_sensor->thickness();
92 const double w_sensor =
m_sensor->width();
93 const double l_sensor =
m_sensor->length();
98 const double sensorPosX = 0.0;
99 const double sensorPosY = 0.0;
100 const double sensorPosZ = 0.0;
103 const double hybridPosY = 0.0;
106 const double pigtailPosX = hybridPosX + 0.5*t_hybrid - 0.5*t_pigtail;
107 const double pigtailPosY = -0.5*w_hybrid - 0.5*w_pigtail;
108 const double pigtailPosZ = hybridPosZ;
114 const double w_ose1 = w_sensor +
m_safety;
115 const double t_ose1 = t_sensor +
m_safety;
116 const double l_ose1 = l_sensor +
m_safety;
118 const double t_ose2 = t_hybrid +
m_safety;
119 const double w_ose2 = w_hybrid + w_pigtail +
m_safety;
120 const double l_ose2 = l_pigtail +
m_safety;
122 const double ose2PosX = hybridPosX;
123 const double ose2PosY = hybridPosY - 0.5*w_pigtail;
124 const double ose2PosZ = hybridPosZ;
129 m_hybridPos =
new GeoTransform(GeoTrf::Translate3D(hybridPosX, hybridPosY, hybridPosZ));
130 m_pigtailPos =
new GeoTransform(GeoTrf::Translate3D(pigtailPosX, pigtailPosY, pigtailPosZ));
144 m_sensorPos =
new GeoTransform(GeoTrf::Translate3D(sensorPosX, sensorPosY, sensorPosZ));
149 const GeoBox * ose1Shape =
new GeoBox(0.5 * t_ose1,
152 const GeoBox * ose2Shape =
new GeoBox(0.5 * t_ose2,
156 const GeoShape & OuterSideEnvelopeShape = (*ose1Shape).
157 add(*ose2Shape << GeoTrf::Translate3D(ose2PosX, ose2PosY, ose2PosZ));
159 const GeoLogVol * OuterSideEnvelopeLog =
new GeoLogVol(
"OuterSideEnvelope",
160 &OuterSideEnvelopeShape,
167 return OuterSideEnvelopeLog;
181 GeoFullPhysVol * outerSide =
new GeoFullPhysVol(
m_logVolume);
187 outerSide->add(
new GeoIdentifierTag(1000));
189 outerSide->add(
m_sensor->build(
id));
193 outerSide->add(
m_hybrid->getVolume());