13 #include "GeoModelKernel/GeoElement.h"
14 #include "GeoModelKernel/GeoMaterial.h"
15 #include "GeoModelKernel/GeoFullPhysVol.h"
16 #include "GeoModelKernel/GeoPhysVol.h"
17 #include "GeoModelKernel/GeoVPhysVol.h"
18 #include "GeoModelKernel/GeoVFullPhysVol.h"
19 #include "GeoModelKernel/GeoLogVol.h"
20 #include "GeoModelKernel/GeoTubs.h"
21 #include "GeoModelKernel/GeoBox.h"
22 #include "GeoModelKernel/GeoNameTag.h"
23 #include "GeoModelKernel/GeoTransform.h"
24 #include "GeoModelKernel/GeoAlignableTransform.h"
25 #include "GeoModelKernel/GeoIdentifierTag.h"
26 #include "GeoModelKernel/GeoDefinitions.h"
27 #include "GeoModelKernel/Units.h"
30 #include "GeoModelKernel/GeoShapeUnion.h"
31 #include "GeoModelKernel/GeoShapeShift.h"
41 #include "GaudiKernel/MsgStream.h"
42 #include "GaudiKernel/Bootstrap.h"
43 #include "GaudiKernel/SystemOfUnits.h"
61 ISvcLocator *svcLocator = Gaudi::svcLocator();
63 if (svcLocator->service(
"DetectorStore",
detStore,
false )==StatusCode::FAILURE) {
64 throw std::runtime_error(
"Error in ExcluderConstruction, cannot access DetectorStore");
72 if (StatusCode::SUCCESS !=
detStore->retrieve(materialManager, std::string(
"MATERIALS")))
return nullptr;
76 const GeoMaterial *Air = materialManager->
getMaterial(
"std::Air");
78 throw std::runtime_error(
"Error in ExcluderConstruction, std::Air is not found.");
85 const GeoElement* C=materialManager->
getElement(
"Carbon");
86 const GeoElement*
H=materialManager->
getElement(
"Hydrogen");
87 const GeoElement* O=materialManager->
getElement(
"Oxygen");
88 const GeoElement*
N=materialManager->
getElement(
"Nitrogen");
90 Rohacell->add(C,0.6465);
91 Rohacell->add(
H,0.07836);
92 Rohacell->add(O,0.19137);
93 Rohacell->add(
N,0.08377);
97 if (geoDbTagSvc.retrieve().isFailure()) {
98 throw std::runtime_error (
"Cannot locate GeoDbTagSvc!!");
102 std::string LArVersion = geoDbTagSvc->LAr_VersionOverride();
104 std::string detectorKey = LArVersion.empty() ?
AtlasVersion : LArVersion;
105 std::string detectorNode = LArVersion.empty() ?
"ATLAS" :
"LAr";
127 std::string ExcluderName =
"LAr::H6::Cryostat::Excluder";
129 GeoBox* rohaBox =
new GeoBox(xbox, ybox, zbox);
130 const GeoShapeShift & rohaBoxShift = (*rohaBox << GeoTrf::TranslateY3D(1062.85*
Gaudi::Units::mm) );
131 GeoTubs* rohaTubs =
new GeoTubs(rmin, rcold, ztubs, phitubs, delphi);
134 const GeoShapeUnion* Excluder =
new GeoShapeUnion(&rohaBoxShift, rohaTubs);
136 const GeoLogVol* LogExcluder =
new GeoLogVol(ExcluderName, Excluder, Rohacell);
137 GeoIntrusivePtr<GeoPhysVol> PhysExcluder =
new GeoPhysVol(LogExcluder);
138 PhysExcluder->add(
new GeoNameTag(ExcluderName) );