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"
45 GeoModelIO::ReadGeoModel* sqliteReader,
46 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
47 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
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");
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));
148 id.setLayerDisk(iWheel);
149 GeoVPhysVol * wheelPV = wheel->
build(
id);
150 forward->add(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);
293 forward= (*m_mapFPV)[
"SCTEndcapA"];
295 forward= (*m_mapFPV)[
"SCTEndcapC"];