39{
40 ISvcLocator * svcLocator = Gaudi::svcLocator();
41
43
44 SmartIF<StoreGateSvc> smartSG{svcLocator->service("StoreGateSvc")};
48 throw std::runtime_error("Unable to locate StoreGate!");
49 }
50 SmartIF<StoreGateSvc>
detStore{svcLocator->service(
"DetectorStore")};
51 if( !detStore ) {
53 throw std::runtime_error("Unable to locate DetectorStore!");
54 }
55
56 const IdDictManager * idDictMgr{};
57 if (StatusCode::SUCCESS ==
detStore->retrieve(idDictMgr,
"IdDict")) {
58 if (idDictMgr) {
61 (
tag ==
"initial_layout" ||
tag ==
"destaged_layout");
62 }
63 } else {
64 ATH_MSG_FATAL(
"Could not retrieve geometry layout. TR process is not to be trusted in the following");
65 throw std::runtime_error("Could not retrieve geometry layout!");
66 }
67
68
69 std::filebuf fb;
70 if (!fb.open(name,std::ios::in)){
71 ATH_MSG_FATAL(
"Could not open file " << name <<
" bombing out");
72 throw std::runtime_error("Could not open file!");
73 }
74 std::istream is(&fb);
75 boost::property_tree::ptree
pt;
76 read_xml(is, pt);
77
78 for( boost::property_tree::ptree::value_type
const& v :
pt.get_child(
"FADS") ) {
79 if(
v.first ==
"TRRegionParameters" ) {
80
81 std::string volName=
v.second.get<std::string>(
"<xmlattr>.RadiatorName");
82 double foilThickness=
v.second.get<
double>(
"<xmlattr>.RadiatorFoilThickness");
83 double gasThickness=
v.second.get<
double>(
"<xmlattr>.RadiatorGasThickness");
84 int regionFlag=
v.second.get<
int>(
"<xmlattr>.RadiatorBARRELorENDCAP");
85 std::string detectorPart=
v.second.get<std::string>(
"<xmlattr>.DetectorPart");
86
87 G4LogicalVolumeStore *g4lvs = G4LogicalVolumeStore::GetInstance();
88 unsigned int numberOfVolumes = 0;
89 for (const auto log_vol : *g4lvs){
90 if (volName == static_cast<const std::string&>(log_vol->GetName())) {
91 TRTRadiatorParameters
rad( log_vol,
92 foilThickness,gasThickness,
95 ++numberOfVolumes;
96 }
97 }
98
99 if( numberOfVolumes == 0 ) {
100
101
102
104 if ( ( volName!="TRT::MainRadiatorC" ) &&
105 ( volName!="TRT::ThinRadiatorC" ) ) {
107 <<" not found! Geometry layout "
109 std::abort();
110 }
111 }
112 }
113 }
114 }
115
116}
const IdDictMgr * manager(void) const
const std::string & tag() const
Version tag.
bool m_initialLayoutIdDict
StoreGateSvc * m_storeGate