14 #include "GaudiKernel/Bootstrap.h"
15 #include "GaudiKernel/ISvcLocator.h"
18 #include "CLHEP/Units/PhysicalConstants.h"
49 ISvcLocator* svcLocator = Gaudi::svcLocator();
52 StatusCode sc = svcLocator->service(
"GeoDbTagSvc",geoDbTagSvc);
53 if (
sc != StatusCode::SUCCESS) {
54 throw std::runtime_error (
"Cannot locate GeoDBTagSvc");
58 sc = svcLocator->service(geoDbTagSvc->getParamSvcName(),pAccessSvc);
59 if (
sc != StatusCode::SUCCESS) {
60 throw std::runtime_error (
"Cannot locate " + geoDbTagSvc->getParamSvcName());
63 std::string detectorKey;
64 std::string detectorNode;
66 if(geoDbTagSvc->getSqliteReader()==
nullptr) {
69 sc = svcLocator->service (
"GeoModelSvc",geoModel);
70 if (
sc != StatusCode::SUCCESS) {
71 throw std::runtime_error (
"Cannot locate GeoModelSvc");
75 std::string LArVersion = geoModel->LAr_VersionOverride();
77 detectorKey = LArVersion.empty() ?
AtlasVersion : LArVersion;
78 detectorNode = LArVersion.empty() ?
"ATLAS" :
"LAr";
82 m_c->
hadronicEndcap = pAccessSvc->getRecordsetPtr(
"HadronicEndcap",detectorKey, detectorNode);
83 m_c->
hecGridValues = pAccessSvc->getRecordsetPtr(
"HecGridValues",detectorKey, detectorNode);
103 std::ostringstream A0STR;
105 const std::string A0 = A0STR.str();
108 if ( a_name ==
"LArHECmoduleNumber" )
return (*m_c->hadronicEndcap)[0]->getInt(
"NSCT");
109 if ( a_name ==
"LArHECzStart" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"ZSTART")*
CLHEP::cm;
110 if ( a_name ==
"LArHECgapSize" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"LARG")*
CLHEP::cm;
111 if ( a_name ==
"LArHECbetweenWheel" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"GAPWHL")*
CLHEP::cm;
112 if ( a_name ==
"LArHECcopperPad" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"COPPER")*
CLHEP::cm;
113 if ( a_name ==
"LArHECplateWidth0" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"PLATE_0")*
CLHEP::cm;
114 if ( a_name ==
"LArHECplateWidth1" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"PLATE_1")*
CLHEP::cm;
115 if ( a_name ==
"LArHECkaptonPosition")
return (*m_c->hadronicEndcap)[0]->getDouble(
"KPTPOS"+A0)*
CLHEP::cm;
116 if ( a_name ==
"LArHECkaptonWidth" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"KPTWID"+A0)*
CLHEP::cm;
117 if ( a_name ==
"LArHECrodPosY" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"RODPOSR"+A0)*
CLHEP::cm;
118 if ( a_name ==
"LArHECrodPosX" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"RODPOSX"+A0)*
CLHEP::cm;
119 if ( a_name ==
"LArHECrodDim" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"RODDIM"+A0)*
CLHEP::cm;
120 if ( a_name ==
"LArHECspcDim" )
return (*m_c->hadronicEndcap)[0]->getDouble(
"SPCDIM"+A0)*
CLHEP::cm;
122 if ( a_name ==
"LArHECsliceIndex" )
return (*m_c->hecLongitudinalBlock)[
a0]->getDouble(
"IBLC");
123 if ( a_name ==
"LArHECmoduleRinner1" )
return (*m_c->hecLongitudinalBlock)[0]->getDouble(
"BLRMN")*
CLHEP::cm;
124 if ( a_name ==
"LArHECmoduleRinner2" )
return (*m_c->hecLongitudinalBlock)[1]->getDouble(
"BLRMN")*
CLHEP::cm;
125 if ( a_name ==
"LArHECmoduleRouter" )
return (*m_c->hecLongitudinalBlock)[0]->getDouble(
"BLRMX")*
CLHEP::cm;
126 if ( a_name ==
"LArHECdepthZ" )
return (*m_c->hecLongitudinalBlock)[
a0]->getDouble(
"BLDPTH")*
CLHEP::cm;
127 if ( a_name ==
"LArHECfirstAbsorber" )
return (*m_c->hecLongitudinalBlock)[
a0]->getDouble(
"PLATE0")*
CLHEP::cm;
128 if ( a_name ==
"LArHECgapNumber" )
return (*m_c->hecLongitudinalBlock)[
a0]->getDouble(
"BLMOD");
131 std::string errMessage =
"RALHec::GetValue: could not find a match for the key '" + a_name;
132 std::cerr << errMessage << std::endl;
133 throw std::runtime_error (errMessage.c_str());