54 GeoModelIO::ReadGeoModel* sqliteReader,
55 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
56 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
111 double safety = generalParameters->
safety();
112 double safetyTmp = safety * Gaudi::Units::cm;
167 const GeoShapeShift & moduleEnvelope = (*moduleEnvelopeShape << GeoTrf::TranslateZ3D(
m_moduleShift) );
169 GeoLogVol * moduleLog =
new GeoLogVol(
getName(), &moduleEnvelope,
m_materials->gasMaterial());
181 GeoFullPhysVol * module=
nullptr;
185 module= new GeoFullPhysVol(m_logVolume);
187 if (
m_connector !=
nullptr)
module->add(m_connector->getVolume());
188 module->add(m_hybrid->getVolume());
189 module->add(m_spine->getVolume());
190 module->add(m_subspineL->getVolume());
191 module->add(m_subspineR->getVolume());
199 double positionZ =
m_sensor->sensorOffset();
203 GeoTrf::Translation3D vecB(positionX,0,0);
205 GeoTrf::Transform3D rotB = GeoTrf::RotateX3D(rotation)*GeoTrf::RotateZ3D(180*Gaudi::Units::degree);
208 GeoAlignableTransform *bottomTransform
209 =
new GeoAlignableTransform(GeoTrf::Transform3D(vecB*rotB)*GeoTrf::TranslateZ3D(positionZ));
212 id.setSide(bottomSideNumber);
213 module->add(new GeoNameTag("Sensor_Side#"+intToString(bottomSideNumber)));
214 module->add(new GeoIdentifierTag(600+bottomSideNumber));
215 module->add(bottomTransform);
216 GeoVPhysVol * bottomSensorPV =
m_sensor->build(
id);
217 module->add(bottomSensorPV);
220 m_detectorManager->addAlignableTransform(0,
id.getWaferId(), bottomTransform, bottomSensorPV);
224 module->add(new GeoTransform(GeoTrf::Transform3D(vecB*rotB)));
225 module->add(m_sensor->getInactive());
229 positionX=-positionX;
231 GeoTrf::RotateX3D rotT(rotation);
233 GeoTrf::Translation3D vecT(positionX,0,0);
236 GeoAlignableTransform *topTransform
237 =
new GeoAlignableTransform(GeoTrf::Transform3D(vecT*rotT)*GeoTrf::TranslateZ3D(positionZ));
240 id.setSide(topSideNumber);
241 module->add(new GeoNameTag("Sensor_Side#"+intToString(topSideNumber)));
242 module->add(new GeoIdentifierTag(600+topSideNumber));
243 module->add(topTransform);
244 GeoVPhysVol * topSensorPV =
m_sensor->build(
id);
245 module->add(topSensorPV);
248 m_detectorManager->addAlignableTransform(0,
id.getWaferId(), topTransform, topSensorPV);
251 module->add(new GeoTransform(GeoTrf::Transform3D(vecT*rotT)));
252 module->add(m_sensor->getInactive());
258 id.setSide(bottomSideNumber);
262 std::string key=
"FwdSensor_Side#"+std::to_string(bottomSideNumber)+
"_"+std::to_string(
id.getBarrelEC())+
"_"+std::to_string(
id.getLayerDisk())+
"_"+std::to_string(
id.getEtaModule())+
"_"+std::to_string(
id.getPhiModule());
266 id.setSide(topSideNumber);
270 key=
"FwdSensor_Side#"+std::to_string(topSideNumber)+
"_"+std::to_string(
id.getBarrelEC())+
"_"+std::to_string(
id.getLayerDisk())+
"_"+std::to_string(
id.getEtaModule())+
"_"+std::to_string(
id.getPhiModule());
SCT_FwdModule(const std::string &name, int ringType, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX)
SCT_UniqueComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr, GeoModelIO::ReadGeoModel *sqliteReader=nullptr, std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > mapFPV=nullptr, std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > mapAX=nullptr)