54 GeoModelIO::ReadGeoModel* sqliteReader,
55 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
56 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
107 double safety = generalParameters->
safety();
108 double safetyTmp = safety * Gaudi::Units::cm;
163 const GeoShapeShift & moduleEnvelope = (*moduleEnvelopeShape << GeoTrf::TranslateZ3D(
m_moduleShift) );
165 GeoLogVol * moduleLog =
new GeoLogVol(
getName(), &moduleEnvelope,
m_materials->gasMaterial());
177 GeoFullPhysVol * module=
nullptr;
181 module= new GeoFullPhysVol(m_logVolume);
183 if (
m_connector !=
nullptr)
module->add(m_connector->getVolume());
184 module->add(m_hybrid->getVolume());
185 module->add(m_spine->getVolume());
186 module->add(m_subspineL->getVolume());
187 module->add(m_subspineR->getVolume());
195 double positionZ =
m_sensor->sensorOffset();
199 GeoTrf::Translation3D vecB(positionX,0,0);
201 GeoTrf::Transform3D rotB = GeoTrf::RotateX3D(rotation)*GeoTrf::RotateZ3D(180*Gaudi::Units::degree);
204 GeoAlignableTransform *bottomTransform
205 =
new GeoAlignableTransform(GeoTrf::Transform3D(vecB*rotB)*GeoTrf::TranslateZ3D(positionZ));
208 id.setSide(bottomSideNumber);
209 module->add(new GeoNameTag(std::format("Sensor_Side#{}",bottomSideNumber)));
210 module->add(new GeoIdentifierTag(600+bottomSideNumber));
211 module->add(bottomTransform);
212 GeoVPhysVol * bottomSensorPV =
m_sensor->build(
id);
213 module->add(bottomSensorPV);
216 m_detectorManager->addAlignableTransform(0,
id.getWaferId(), bottomTransform, bottomSensorPV);
220 module->add(new GeoTransform(GeoTrf::Transform3D(vecB*rotB)));
221 module->add(m_sensor->getInactive());
225 positionX=-positionX;
227 GeoTrf::RotateX3D rotT(rotation);
229 GeoTrf::Translation3D vecT(positionX,0,0);
232 GeoAlignableTransform *topTransform
233 =
new GeoAlignableTransform(GeoTrf::Transform3D(vecT*rotT)*GeoTrf::TranslateZ3D(positionZ));
236 id.setSide(topSideNumber);
237 module->add(new GeoNameTag(std::format("Sensor_Side#{}",topSideNumber)));
238 module->add(new GeoIdentifierTag(600+topSideNumber));
239 module->add(topTransform);
240 GeoVPhysVol * topSensorPV =
m_sensor->build(
id);
241 module->add(topSensorPV);
244 m_detectorManager->addAlignableTransform(0,
id.getWaferId(), topTransform, topSensorPV);
247 module->add(new GeoTransform(GeoTrf::Transform3D(vecT*rotT)));
248 module->add(m_sensor->getInactive());
253 id.setSide(bottomSideNumber);
257 std::string key=std::format(
"FwdSensor_Side#{}_{}_{}_{}_{}",bottomSideNumber,
id.getBarrelEC(),
id.getLayerDisk(),
id.getEtaModule(),
id.getPhiModule());
261 id.setSide(topSideNumber);
266 key=std::format(
"FwdSensor_Side#{}_{}_{}_{}_{}",topSideNumber,
id.getBarrelEC(),
id.getLayerDisk(),
id.getEtaModule(),
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)