12 #include "GaudiKernel/ISvcLocator.h"
13 #include "GaudiKernel/IToolSvc.h"
14 #include "GaudiKernel/IConversionSvc.h"
15 #include "GaudiKernel/ServiceHandle.h"
48 SmartIF<IGeoModelSvc> geomodel{Gaudi::svcLocator()->service(
"GeoModelSvc")};
49 if(!geomodel.isValid())
throw std::runtime_error(
"MuonAGDDToolHelper failed to access GeoModelSvc");
50 SmartIF<IRDBAccessSvc> rdbaccess{Gaudi::svcLocator()->service(
"RDBAccessSvc")};
51 if(!rdbaccess.isValid())
throw std::runtime_error(
"MuonAGDDToolHelper failed to access RDBAccessSvc");
53 m_geoModelSvc = geomodel.get();
54 m_rdbAccessSvc = rdbaccess.get();
59 std::vector<std::string> structuresFromFlags;
60 std::string agdd2geoVersion = m_rdbAccessSvc->getChildTag(
"AGDD2GeoSwitches",m_geoModelSvc->muonVersion(),
"MuonSpectrometer");
62 if(!agdd2geoVersion.empty())
64 std::string TheKEYNAME;
66 IRDBRecordset_ptr pIRDBRecordset = m_rdbAccessSvc->getRecordsetPtr(
"AGDD2GeoSwitches",m_geoModelSvc->muonVersion(),
"MuonSpectrometer");
67 for(
unsigned int i=0;
i<pIRDBRecordset->size();
i++)
70 TheKEYNAME = record->
getString(
"KEYNAME");
71 TheKEYVALUE = record->
getInt(
"KEYVALUE");
72 if ( TheKEYVALUE == 1 )
74 structuresFromFlags.push_back(TheKEYNAME);
80 std::cout<<
"MuonAGDDToolHelper\tagdd2geoVersion is empty " <<std::endl;
82 return structuresFromFlags;
88 std::string
AtlasVersion = m_geoModelSvc->atlasVersion();
89 std::string MuonVersion = m_geoModelSvc->muonVersionOverride();
91 std::string detectorKey = MuonVersion.empty() ?
AtlasVersion : MuonVersion;
92 std::string detectorNode = MuonVersion.empty() ?
"ATLAS" :
"MuonSpectrometer";
93 if ( MuonVersion ==
"CUSTOM"){
95 detectorNode =
"ATLAS" ;
98 IRDBRecordset_ptr recordsetAGDD = m_rdbAccessSvc->getRecordsetPtr(tableName,detectorKey,detectorNode);
99 if(!recordsetAGDD)
return "";
101 const IRDBRecord *recordAGDD = (*recordsetAGDD)[0];
102 if(!recordAGDD)
return "";
103 std::string AgddString = recordAGDD->
getString(
"DATA");
105 size_t pos=AgddString.find(
"AGDD.dtd");
106 if (
pos!=std::string::npos) AgddString.replace(
pos-21,32,
"-- Reference to AGDD.dtd automatically removed -->");
107 std::ofstream GeneratedFile;
110 std::ofstream GeneratedFile;
112 GeneratedFile<<AgddString;
113 GeneratedFile.close();
120 SmartIF<StoreGateSvc> pDetStore{Gaudi::svcLocator()->service(
"DetectorStore")};
121 if (!pDetStore.isValid())
return false;
123 if (pDetStore->retrieve(muonMgr).isFailure())
return false;
129 SmartIF<IAGDDtoGeoSvc> agddsvc{Gaudi::svcLocator()->service(m_svcName)};
130 if(!agddsvc.isValid()) {
131 throw std::runtime_error(
"MuonAGDDToolHelper::SetNSWComponents() - Could not retrieve "
132 + m_svcName +
" from ServiceLocator");