74 m_zMin = parameters->fwdZMin();
75 m_zMax = parameters->fwdZMax();
84 if(parameters->fwdThermalShieldMaterial(iElement) ==
"sct::FwdOTE") {
107 std::vector<SCT_FwdModule*> modules;
110 std::unique_ptr<SCT_FwdModule> module = std::make_unique<SCT_FwdModule>(std::format(
"FwdModule{}",iModuleType), iModuleType,
112 modules.push_back(module.get());
116 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
118 std::string name = std::format(
"Wheel{}{}",iWheel,((
m_endcap > 0) ?
"A" :
"C"));
119 m_wheels.push_back(std::make_unique<SCT_FwdWheel>(name, iWheel, modules,
m_endcap,
128 const GeoLogVol * forwardLog =
137 GeoFullPhysVol * forward=
nullptr;
142 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
146 forward->add(
new GeoNameTag(std::format(
"Wheel#{}",iWheel)));
147 forward->add(
new GeoIdentifierTag(iWheel));
148 GeoAlignableTransform * transform =
new GeoAlignableTransform(GeoTrf::TranslateZ3D(zpos));
149 forward->add(transform);
150 id.setLayerDisk(iWheel);
151 GeoVPhysVol * wheelPV = wheel->
build(
id);
152 forward->add(wheelPV);
155 m_detectorManager->addAlignableTransform(2,
id.getWaferId(), transform, wheelPV);
163 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(supportFrameZPos)));
176 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(supportFrameZPos)));
177 forward->add(cylinderServices.
getVolume());
195 double rStart = innerRadiusCooling;
197 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
199 double startPos =
m_wheels[iWheel]->zPosition();
202 int numPipes = 8 *
m_wheels[iWheel]->numRings();
206 numPipes, rStart, startPos, endPos,
211 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(coolingPipeZPos)));
234 double rStart = innerRadiusPowerTapes;
236 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
239 double startPos =
m_wheels[iWheel]->zPosition();
242 int numModules =
m_wheels[iWheel]->totalModules();
246 numModules, rStart, startPos, endPos,
251 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(powerTapeZPos)));
267 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(elementZPos)));
268 forward->add(thermalShieldElement.
getVolume());
282 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
284 id.setLayerDisk(iWheel);
288 std::string key = std::format(
"Wheel#{}_{}",iWheel,
id.getBarrelEC());
292 forward= (*m_mapFPV)[
"SCTEndcapA"];
294 forward= (*m_mapFPV)[
"SCTEndcapC"];
SCT_Forward(const std::string &name, int ec, 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)