45 GeoModelIO::ReadGeoModel* sqliteReader,
46 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
47 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
71 m_zMin = parameters->fwdZMin();
72 m_zMax = parameters->fwdZMax();
81 if(parameters->fwdThermalShieldMaterial(iElement) ==
"sct::FwdOTE") {
104 std::vector<SCT_FwdModule*> modules;
107 std::unique_ptr<SCT_FwdModule> module = std::make_unique<SCT_FwdModule>(
"FwdModule"+
intToString(iModuleType), iModuleType,
109 modules.push_back(module.get());
113 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
115 std::ostringstream name; name <<
"Wheel" << iWheel << ((
m_endcap > 0) ?
"A" :
"C");
116 m_wheels.push_back(std::make_unique<SCT_FwdWheel>(name.str(), iWheel, modules,
m_endcap,
125 const GeoLogVol * forwardLog =
134 GeoFullPhysVol * forward=
nullptr;
139 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
142 std::ostringstream wheelName; wheelName <<
"Wheel#" << iWheel;
144 forward->add(
new GeoNameTag(wheelName.str()));
145 forward->add(
new GeoIdentifierTag(iWheel));
146 GeoAlignableTransform * transform =
new GeoAlignableTransform(GeoTrf::TranslateZ3D(zpos));
147 forward->add(transform);
148 id.setLayerDisk(iWheel);
149 GeoVPhysVol * wheelPV = wheel->
build(
id);
150 forward->add(wheelPV);
153 m_detectorManager->addAlignableTransform(2,
id.getWaferId(), transform, wheelPV);
161 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(supportFrameZPos)));
174 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(supportFrameZPos)));
175 forward->add(cylinderServices.
getVolume());
193 double rStart = innerRadiusCooling;
195 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
197 double startPos =
m_wheels[iWheel]->zPosition();
200 int numPipes = 8 *
m_wheels[iWheel]->numRings();
204 numPipes, rStart, startPos, endPos,
209 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(coolingPipeZPos)));
232 double rStart = innerRadiusPowerTapes;
234 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
237 double startPos =
m_wheels[iWheel]->zPosition();
240 int numModules =
m_wheels[iWheel]->totalModules();
244 numModules, rStart, startPos, endPos,
249 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(powerTapeZPos)));
265 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(elementZPos)));
266 forward->add(thermalShieldElement.
getVolume());
280 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
283 std::ostringstream wheelName; wheelName <<
"Wheel#" << iWheel;
284 id.setLayerDisk(iWheel);
287 std::string key=wheelName.str()+
"_"+std::to_string(
id.getBarrelEC());
293 forward= (*m_mapFPV)[
"SCTEndcapA"];
295 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)