26 #include "GeoModelRead/ReadGeoModel.h"
27 #include "GeoModelKernel/GeoTube.h"
28 #include "GeoModelKernel/GeoLogVol.h"
29 #include "GeoModelKernel/GeoFullPhysVol.h"
30 #include "GeoModelKernel/GeoNameTag.h"
31 #include "GeoModelKernel/GeoIdentifierTag.h"
32 #include "GeoModelKernel/GeoTransform.h"
33 #include "GeoModelKernel/GeoAlignableTransform.h"
34 #include "GeoModelKernel/GeoMaterial.h"
35 #include "GaudiKernel/SystemOfUnits.h"
44 GeoModelIO::ReadGeoModel* sqliteReader,
45 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
46 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
80 if(
parameters->fwdThermalShieldMaterial(iElement) ==
"sct::FwdOTE") {
103 std::vector<SCT_FwdModule*> modules;
106 std::unique_ptr<SCT_FwdModule>
module = std::make_unique<SCT_FwdModule>(
"FwdModule"+
intToString(iModuleType), iModuleType,
108 modules.push_back(
module.get());
112 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
114 std::ostringstream
name;
name <<
"Wheel" << iWheel << ((
m_endcap > 0) ?
"A" :
"C");
124 const GeoLogVol * forwardLog =
133 GeoFullPhysVol * forward=
nullptr;
138 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
141 std::ostringstream wheelName; wheelName <<
"Wheel#" << iWheel;
143 forward->add(
new GeoNameTag(wheelName.str()));
144 forward->add(
new GeoIdentifierTag(iWheel));
145 GeoAlignableTransform *
transform =
new GeoAlignableTransform(GeoTrf::TranslateZ3D(zpos));
147 id.setLayerDisk(iWheel);
148 GeoVPhysVol * wheelPV = wheel->
build(
id);
149 forward->add(wheelPV);
160 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(supportFrameZPos)));
173 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(supportFrameZPos)));
174 forward->add(cylinderServices.
getVolume());
192 double rStart = innerRadiusCooling;
194 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
196 double startPos =
m_wheels[iWheel]->zPosition();
199 int numPipes = 8 *
m_wheels[iWheel]->numRings();
203 numPipes, rStart, startPos, endPos,
208 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(coolingPipeZPos)));
231 double rStart = innerRadiusPowerTapes;
233 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
236 double startPos =
m_wheels[iWheel]->zPosition();
239 int numModules =
m_wheels[iWheel]->totalModules();
243 numModules, rStart, startPos, endPos,
248 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(powerTapeZPos)));
264 forward->add(
new GeoTransform(GeoTrf::TranslateZ3D(elementZPos)));
265 forward->add(thermalShieldElement.
getVolume());
279 for (
int iWheel = 0; iWheel <
m_numWheels; iWheel++){
282 std::ostringstream wheelName; wheelName <<
"Wheel#" << iWheel;
283 id.setLayerDisk(iWheel);
292 forward= (*m_mapFPV)[
"SCTEndcapA"];
294 forward= (*m_mapFPV)[
"SCTEndcapC"];