ATLAS Offline Software
Loading...
Searching...
No Matches
LArGeo::RALHec Class Reference

#include <RALHec.h>

Inheritance diagram for LArGeo::RALHec:
Collaboration diagram for LArGeo::RALHec:

Classes

class  Clockwork

Public Member Functions

 RALHec ()
virtual ~RALHec ()
virtual double GetValue (const std::string &, const int i0=INT_MIN, const int i1=INT_MIN, const int i2=INT_MIN, const int i3=INT_MIN, const int i4=INT_MIN) const override

Static Public Member Functions

static void SetInstance (std::unique_ptr< VDetectorParameters >)
static const VDetectorParametersGetInstance ()

Private Member Functions

 RALHec (const RALHec &)
RALHecoperator= (const RALHec &)

Private Attributes

Clockworkm_c

Static Private Attributes

static CxxUtils::CachedUniquePtr< VDetectorParameters > s_instance ATLAS_THREAD_SAFE

Detailed Description

Definition at line 17 of file RALHec.h.

Constructor & Destructor Documentation

◆ RALHec() [1/2]

RALHec::RALHec ( )

Definition at line 45 of file RALHec.cxx.

45 :
46 m_c(new Clockwork())
47{
48 // First, fetch the Athena services.
49 ISvcLocator* svcLocator = Gaudi::svcLocator();
50
51 SmartIF<IGeoDbTagSvc> geoDbTagSvc{svcLocator->service("GeoDbTagSvc")};
52 if(!geoDbTagSvc.isValid()) {
53 throw std::runtime_error ("Cannot locate GeoDBTagSvc");
54 }
55
56 SmartIF<IRDBAccessSvc> pAccessSvc{svcLocator->service(geoDbTagSvc->getParamSvcName())};
57 if(!pAccessSvc.isValid()) {
58 throw std::runtime_error ("Cannot locate " + geoDbTagSvc->getParamSvcName());
59 }
60
61 std::string detectorKey;
62 std::string detectorNode;
63
64 if(geoDbTagSvc->getSqliteReader()==nullptr) {
65 // The geometry DB is used
66 SmartIF<IGeoModelSvc> geoModel{svcLocator->service("GeoModelSvc")};
67 if(!geoModel.isValid()) {
68 throw std::runtime_error ("Cannot locate GeoModelSvc");
69 }
70
71 std::string AtlasVersion = geoModel->atlasVersion();
72 std::string LArVersion = geoModel->LAr_VersionOverride();
73
74 detectorKey = LArVersion.empty() ? AtlasVersion : LArVersion;
75 detectorNode = LArVersion.empty() ? "ATLAS" : "LAr";
76 }
77
78
79 m_c->hadronicEndcap = pAccessSvc->getRecordsetPtr("HadronicEndcap",detectorKey, detectorNode);
80 m_c->hecGridValues = pAccessSvc->getRecordsetPtr("HecGridValues",detectorKey, detectorNode);
81 m_c->hecLongitudinalBlock = pAccessSvc->getRecordsetPtr("HecLongitudinalBlock",detectorKey, detectorNode);
82
83}
Clockwork * m_c
Definition RALHec.h:35

◆ ~RALHec()

RALHec::~RALHec ( )
virtual

Definition at line 86 of file RALHec.cxx.

87{
88 delete m_c;
89}

◆ RALHec() [2/2]

LArGeo::RALHec::RALHec ( const RALHec & )
private

Member Function Documentation

◆ GetInstance()

const LArGeo::VDetectorParameters * LArGeo::VDetectorParameters::GetInstance ( )
staticinherited

Definition at line 29 of file VDetectorParameters.cxx.

30{
31 const VDetectorParameters* p = s_instance.get();
32 if(p==nullptr)
33 std::cerr << "LArGeo::VDetectorParameters::GetInstance was called, but "
34 << "the pointer to the detector-parameter access object is 0."
35 << std::endl;
36
37 return p;
38}

◆ GetValue()

double RALHec::GetValue ( const std::string & a_name,
const int i0 = INT_MIN,
const int i1 = INT_MIN,
const int i2 = INT_MIN,
const int i3 = INT_MIN,
const int i4 = INT_MIN ) const
overridevirtual

Implements LArGeo::VDetectorParameters.

Definition at line 92 of file RALHec.cxx.

98{
99
100 std::ostringstream A0STR;
101 A0STR << "_" << a0;
102 const std::string A0 = A0STR.str();
103
104
105 if ( a_name == "LArHECmoduleNumber" ) return (*m_c->hadronicEndcap)[0]->getInt("NSCT");
106 if ( a_name == "LArHECzStart" ) return (*m_c->hadronicEndcap)[0]->getDouble("ZSTART")*CLHEP::cm;
107 if ( a_name == "LArHECgapSize" ) return (*m_c->hadronicEndcap)[0]->getDouble("LARG")*CLHEP::cm;
108 if ( a_name == "LArHECbetweenWheel" ) return (*m_c->hadronicEndcap)[0]->getDouble("GAPWHL")*CLHEP::cm;
109 if ( a_name == "LArHECcopperPad" ) return (*m_c->hadronicEndcap)[0]->getDouble("COPPER")*CLHEP::cm;
110 if ( a_name == "LArHECplateWidth0" ) return (*m_c->hadronicEndcap)[0]->getDouble("PLATE_0")*CLHEP::cm;
111 if ( a_name == "LArHECplateWidth1" ) return (*m_c->hadronicEndcap)[0]->getDouble("PLATE_1")*CLHEP::cm;
112 if ( a_name == "LArHECkaptonPosition") return (*m_c->hadronicEndcap)[0]->getDouble("KPTPOS"+A0)*CLHEP::cm;
113 if ( a_name == "LArHECkaptonWidth" ) return (*m_c->hadronicEndcap)[0]->getDouble("KPTWID"+A0)*CLHEP::cm;
114 if ( a_name == "LArHECrodPosY" ) return (*m_c->hadronicEndcap)[0]->getDouble("RODPOSR"+A0)*CLHEP::cm;
115 if ( a_name == "LArHECrodPosX" ) return (*m_c->hadronicEndcap)[0]->getDouble("RODPOSX"+A0)*CLHEP::cm;
116 if ( a_name == "LArHECrodDim" ) return (*m_c->hadronicEndcap)[0]->getDouble("RODDIM"+A0)*CLHEP::cm;
117 if ( a_name == "LArHECspcDim" ) return (*m_c->hadronicEndcap)[0]->getDouble("SPCDIM"+A0)*CLHEP::cm;
118
119 if ( a_name == "LArHECsliceIndex" ) return (*m_c->hecLongitudinalBlock)[a0]->getDouble("IBLC");
120 if ( a_name == "LArHECmoduleRinner1" ) return (*m_c->hecLongitudinalBlock)[0]->getDouble("BLRMN")*CLHEP::cm;
121 if ( a_name == "LArHECmoduleRinner2" ) return (*m_c->hecLongitudinalBlock)[1]->getDouble("BLRMN")*CLHEP::cm;
122 if ( a_name == "LArHECmoduleRouter" ) return (*m_c->hecLongitudinalBlock)[0]->getDouble("BLRMX")*CLHEP::cm;
123 if ( a_name == "LArHECdepthZ" ) return (*m_c->hecLongitudinalBlock)[a0]->getDouble("BLDPTH")*CLHEP::cm;
124 if ( a_name == "LArHECfirstAbsorber" ) return (*m_c->hecLongitudinalBlock)[a0]->getDouble("PLATE0")*CLHEP::cm;
125 if ( a_name == "LArHECgapNumber" ) return (*m_c->hecLongitudinalBlock)[a0]->getDouble("BLMOD");
126
127 // We didn't find a match.
128 std::string errMessage = "RALHec::GetValue: could not find a match for the key '" + a_name;
129 std::cerr << errMessage << std::endl;
130 throw std::runtime_error (errMessage.c_str());
131
132 // Unreached.
133}
double a0
Definition globals.cxx:27

◆ operator=()

RALHec & LArGeo::RALHec::operator= ( const RALHec & )
private

◆ SetInstance()

void LArGeo::VDetectorParameters::SetInstance ( std::unique_ptr< VDetectorParameters > p)
staticinherited

Definition at line 24 of file VDetectorParameters.cxx.

25{
26 s_instance.set (std::move (p));
27}

Member Data Documentation

◆ ATLAS_THREAD_SAFE

CxxUtils::CachedUniquePtr<VDetectorParameters> s_instance LArGeo::VDetectorParameters::ATLAS_THREAD_SAFE
staticprivateinherited

Definition at line 64 of file VDetectorParameters.h.

◆ m_c

Clockwork* LArGeo::RALHec::m_c
private

Definition at line 35 of file RALHec.h.


The documentation for this class was generated from the following files: