77 m_db = std::make_unique<SCT_DataBase>(athenaComps);
83 std::unique_ptr<InDetDD::SiCommonItems> commonItems{std::make_unique<InDetDD::SiCommonItems>(athenaComps->
getIdHelper())};
102 std::string layout =
"Final";
112 std::string versionName = switches->
getString(
"VERSIONNAME");
113 int versionMajorNumber = 3;
114 int versionMinorNumber = 6;
115 int versionPatchNumber = 0;
137 msg(MSG::INFO) <<
"Building SCT Detector." <<
endmsg;
141 int oldPrecision = std::cout.precision(6);
144 GeoPhysVol *indet = world;
148 GeoTrf::Transform3D sctTransform = sctGeneral->
partTransform(
"SCT");
150 std::string barrelLabel =
"Barrel";
151 std::string forwardPlusLabel =
"EndcapA";
152 std::string forwardMinusLabel =
"EndcapC";
154 bool barrelPresent = sctGeneral->
partPresent(barrelLabel);
155 bool forwardPlusPresent = sctGeneral->
partPresent(forwardPlusLabel);
156 bool forwardMinusPresent = sctGeneral->
partPresent(forwardMinusLabel);
165 msg(MSG::DEBUG) <<
"Building the SCT Barrel." <<
endmsg;
174 GeoVPhysVol * barrelPV = sctBarrel.
build(
id);
175 GeoAlignableTransform * barrelTransform =
new GeoAlignableTransform(sctTransform * sctGeneral->
partTransform(barrelLabel));
179 GeoNameTag *topLevelNameTag =
new GeoNameTag(
"SCT");
180 indet->add(topLevelNameTag);
181 indet->add(
new GeoIdentifierTag(0));
182 indet->add(barrelTransform);
183 indet->add(barrelPV);
187 m_detectorManager->addAlignableTransform(3,
id.getWaferId(), barrelTransform, barrelPV);
194 if (forwardPlusPresent) {
196 msg(MSG::DEBUG) <<
"Building the SCT Endcap A (positive z)." <<
endmsg;
205 GeoVPhysVol * forwardPlusPV = sctForwardPlus.
build(idFwdPlus);
206 GeoTrf::Transform3D fwdTransformPlus(sctTransform
208 * GeoTrf::TranslateZ3D(sctForwardPlus.
zCenter()));
209 GeoAlignableTransform * fwdGeoTransformPlus =
new GeoAlignableTransform(fwdTransformPlus);
213 GeoNameTag *topLevelNameTag =
new GeoNameTag(
"SCT");
214 indet->add(topLevelNameTag);
215 indet->add(
new GeoIdentifierTag(2));
216 indet->add(fwdGeoTransformPlus);
217 indet->add(forwardPlusPV);
228 if (forwardMinusPresent) {
230 msg(MSG::DEBUG) <<
"Building the SCT Endcap C (negative z)." <<
endmsg;
238 GeoVPhysVol * forwardMinusPV = sctForwardMinus.
build(idFwdMinus);
240 GeoTrf::Transform3D rot;
241 rot = GeoTrf::RotateY3D(180 * Gaudi::Units::degree);
243 GeoTrf::Transform3D fwdTransformMinus(sctTransform
246 * GeoTrf::TranslateZ3D(sctForwardMinus.
zCenter()));
247 GeoAlignableTransform * fwdGeoTransformMinus =
new GeoAlignableTransform(fwdTransformMinus);
251 GeoNameTag *topLevelNameTag =
new GeoNameTag(
"SCT");
252 indet->add(topLevelNameTag);
253 indet->add(
new GeoIdentifierTag(-2));
254 indet->add(fwdGeoTransformMinus);
255 indet->add(forwardMinusPV);
289 if (forwardPlusPresent) {
300 if (forwardMinusPresent) {
327 if (forwardPlusPresent) {
338 if (forwardMinusPresent) {
352 std::cout.precision(oldPrecision);
virtual std::string getChildTag(const std::string &childNode, const std::string &parentTag, const std::string &parentNode, const std::string &connName="ATLASDD")=0
Gets the tag name for the node by giving its parent node tag.
virtual IRDBRecordset_ptr getRecordsetPtr(const std::string &node, const std::string &tag, const std::string &tag2node="", const std::string &connName="ATLASDD")=0
Provides access to the Recordset object containing HVS-tagged data.