ATLAS Offline Software
Loading...
Searching...
No Matches
RDBReaderAtlas.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7#include "GaudiKernel/SystemOfUnits.h"
18
19namespace MuonGM {
20
25
26 RDBReaderAtlas::RDBReaderAtlas(StoreGateSvc *pDetStore, IRDBAccessSvc *pRDBAccess, const std::string& geoTag, const std::string& geoNode,
27 const std::map<std::string, std::string>& asciiFileDBMap):
28 DBReader(pDetStore), AthMessaging{"MuGM:RDBReadAtlas"},
29 m_geoTag(geoTag), m_geoNode(geoNode), m_pRDBAccess(pRDBAccess) {
30 m_SCdbaccess = StatusCode::FAILURE;
31
32
33 ATH_MSG_INFO("Start retrieving dbObjects with tag = <" << geoTag << "> node <" << geoNode << ">");
34
35 // here putting RDB data in private "objects" form
36 m_dhatyp = std::make_unique<DblQ00Atyp>(m_pRDBAccess, geoTag, geoNode);
37 m_atyp = m_dhatyp->data();
38
39
40 m_dhasmp = std::make_unique<DblQ00Asmp>(m_pRDBAccess, geoTag, geoNode);
41 m_asmp = m_dhasmp->data();
42
43
44 m_dhalmn = std::make_unique<DblQ00Almn>(m_pRDBAccess, geoTag, geoNode);
45 m_almn = m_dhalmn->data();
46
47
48 m_dhaptp = std::make_unique<DblQ00Aptp>(m_pRDBAccess, geoTag, geoNode);
49 m_aptp = m_dhaptp->data();
50
51
52 m_dhacut = std::make_unique<DblQ00Acut>(m_pRDBAccess, geoTag, geoNode);
53 m_acut = m_dhacut->data();
54
55 m_dhalin = std::make_unique<DblQ00Alin>(m_pRDBAccess, geoTag, geoNode);
56 m_alin = m_dhalin->data();
57
58 m_dhdbam = std::make_unique<DblQ00Dbam>(m_pRDBAccess, geoTag, geoNode);
59 m_dbam = m_dhdbam->data();
60
61
62 m_dhwrpc = std::make_unique<DblQ00Awln>(m_pRDBAccess, geoTag, geoNode);
63 m_wrpc = m_dhwrpc->data();
64
65 m_dhwtgc = std::make_unique<DblQ00Atln>(m_pRDBAccess, geoTag, geoNode);
66 m_wtgc = m_dhwtgc->data();
67
68 m_dhwmdt = std::make_unique<DblQ00Wmdt>(m_pRDBAccess, geoTag, geoNode);
69 m_wmdt = m_dhwmdt->data();
70
71 m_dhwcsc = std::make_unique<DblQ00Wcsc>(m_pRDBAccess, geoTag, geoNode);
72 m_wcsc = m_dhwcsc->data();
73
74
75 m_dhwrpcall = std::make_unique<DblQ00Wrpc>(m_pRDBAccess, geoTag, geoNode);
76 m_wrpcall = m_dhwrpcall->data();
77
78 m_dhwtgcall = std::make_unique<DblQ00Wtgc>(m_pRDBAccess, geoTag, geoNode);
79 m_wtgcall = m_dhwtgcall->data();
80
81 m_dhwspa = std::make_unique<DblQ00Wspa>(m_pRDBAccess, geoTag, geoNode);
82 m_wspa = m_dhwspa->data();
83
84
85 m_dhwded = std::make_unique<DblQ00Wded>(m_pRDBAccess, geoTag, geoNode);
86 m_wded = m_dhwded->data();
87
88
89 m_dhwsup = std::make_unique<DblQ00Wsup>(m_pRDBAccess, geoTag, geoNode);
90 m_wsup = m_dhwsup->data();
91
92 if (m_pRDBAccess->getRecordsetPtr("XtomoData", geoTag, geoNode)->size()!=0) {
93 m_dhxtomo= std::make_unique<DblQ00Xtomo>(pRDBAccess, geoTag, geoNode);
94 ATH_MSG_INFO("XtomoData table found in Oracle");
95 } else {
96 m_dhxtomo= std::make_unique<DblQ00Xtomo>();
97 ATH_MSG_INFO("No XtomoData table in Oracle");
98 }
99
100 if (m_dhxtomo)
101 m_xtomo = m_dhxtomo->data();
102
103 // ASZT
104 if (asciiFileDBMap.find("ASZT") != asciiFileDBMap.end()) {
105 ATH_MSG_INFO( "getting aszt from ascii file - named <" << asciiFileDBMap.find("ASZT")->second << ">");
106 ATH_MSG_INFO( "Ascii aszt input has priority over A-lines in ORACLE; A-lines from Oracle will not be read");
107 // dbdata = 0;
108 m_dhaszt = std::make_unique<DblQ00Aszt>(asciiFileDBMap.find("ASZT")->second);
109 if (m_dhaszt->size() == 0) {
110 ATH_MSG_ERROR("Couldn't read ASZT from ascii file!");
111 } else {
112 ATH_MSG_INFO("N. of lines read = " << m_dhaszt->size());
113 }
114 }
115
116 if (!m_dhaszt || m_dhaszt->size() == 0) {
117 ATH_MSG_INFO( "No Ascii aszt input found: looking for A-lines in ORACLE");
118 if (m_pRDBAccess->getRecordsetPtr("ASZT",geoTag,geoNode)->size()==0) {
119 m_dhaszt = std::make_unique<DblQ00Aszt>();
120 ATH_MSG_INFO("No ASZT table in Oracle");
121 } else {
122 ATH_MSG_INFO("ASZT table found in Oracle");
123 m_dhaszt = std::make_unique<DblQ00Aszt>(m_pRDBAccess, geoTag, geoNode);
124 ATH_MSG_INFO("ASZT size is " << m_dhaszt->size());
125 }
126 } else {
127 ATH_MSG_INFO( "ASZT table in Oracle, if any, will not be read" );
128 }
129 if (m_dhaszt)
130 m_aszt = m_dhaszt->data();
131
132 // Internal CSC Alignment parameters
133 if (asciiFileDBMap.find("IACSC") != asciiFileDBMap.end()) {
134
135 ATH_MSG_INFO( "getting iacsc from ascii file - named <" << asciiFileDBMap.find("IACSC")->second << ">" );
136 ATH_MSG_INFO( "Ascii iacsc input has priority over A-lines in ORACLE; A-lines from Oracle will not be read" );
137 // dbdata = 0;
138 m_dhiacsc = std::make_unique<DblQ00IAcsc>(asciiFileDBMap.find("IACSC")->second);
139 if (m_dhiacsc->size() == 0) {
140 ATH_MSG_ERROR( "Couldn't read IACSC from ascii file!" );
141 } else {
142 ATH_MSG_INFO( "N. of lines read = " << m_dhiacsc->size() );
143 }
144 }
145 if (!m_dhiacsc || m_dhiacsc->size() == 0) {
146 ATH_MSG_INFO( "No Ascii iacsc input found: looking for A-lines in ORACLE" );
147 if (m_pRDBAccess->getRecordsetPtr("IZST", geoTag,geoNode)->size()==0) {
148 m_dhiacsc = std::make_unique<DblQ00IAcsc>();
149 ATH_MSG_INFO( "No ISZT table in Oracle" );
150 } else {
151 ATH_MSG_INFO( "ISZT table found in Oracle" );
152 m_dhiacsc = std::make_unique<DblQ00IAcsc>(m_pRDBAccess, geoTag, geoNode);
153 }
154 } else {
155 ATH_MSG_INFO( "ISZT table in Oracle, if any, will not be read" );
156 }
157 if (m_dhiacsc)
158 m_iacsc = m_dhiacsc->data();
159
160
161 m_dhwchv = std::make_unique<DblQ00Wchv>(m_pRDBAccess, geoTag, geoNode);
162 m_wchv = m_dhwchv->data();
163
164 m_dhwcro = std::make_unique<DblQ00Wcro>(m_pRDBAccess, geoTag, geoNode);
165 m_wcro = m_dhwcro->data();
166
167 m_dhwcmi = std::make_unique<DblQ00Wcmi>(m_pRDBAccess, geoTag, geoNode);
168 m_wcmi = m_dhwcmi->data();
169
170
171 m_dhwlbi = std::make_unique<DblQ00Wlbi>(m_pRDBAccess, geoTag, geoNode);
172 m_wlbi = m_dhwlbi->data();
173
174 // everything fetched
175 m_SCdbaccess = StatusCode::SUCCESS;
176 ATH_MSG_INFO( "Access granted for all dbObjects needed by muon detectors" );
177 }
178
179 StatusCode RDBReaderAtlas::ProcessDB(MYSQL& mysql) {
180 // Check access to the database (from the constructor)
181 if (m_SCdbaccess == StatusCode::FAILURE) {
182 return m_SCdbaccess;
183 }
184
185 // set GeometryVersion in MYSQL
187 // set LayoutName read from amdb
188 mysql.setLayoutName(m_dbam[0].amdb);
189 // set NovaVersion in MYSQL
190 mysql.setNovaVersion(m_dbam[0].version);
191 // set AmdbVersion in MYSQL
192 mysql.setNovaReadVersion(m_dbam[0].nvrs);
193
194 // Process Stations and components
195 MuonGM::ProcessStations(mysql, m_dhalmn.get(), m_almn, m_dhatyp.get(), m_atyp, m_dhwmdt.get(), m_wmdt);
196
197 // Process Technologies
198 ProcessTechnologies(mysql);
199
200 // Process Positions
201 MuonGM::ProcessPositions(mysql, m_dhaptp.get(), m_aptp);
202
203 // Process Cutouts
204 if (getGeometryVersion().substr(0, 1) != "P") {
205 MuonGM::ProcessCutouts(mysql, m_dhacut.get(), m_acut, m_dhalin.get(), m_alin, m_dhatyp.get(), m_atyp);
206 }
207
208 // Process Alignements
209 if (m_dhaszt && m_dhaszt->size() > 0) {
210 MuonGM::ProcessAlignements(mysql, m_dhaszt.get(), m_aszt);
211 }
212
213 // Process TgcReadout
215
216 //
217 ATH_MSG_INFO( "Intermediate Objects built from primary numbers" );
218
219 return m_SCdbaccess;
220 }
221
223 // here loop over station-components to init technologies at each new entry
224 std::vector<std::string> slist;
225 slist.emplace_back("*");
226 StationSelector sel(mysql, slist);
228 ATH_MSG_DEBUG( " from RDBReaderAtlas --- start " );
229
230 bool have_spa_details = (getGeometryVersion().substr(0, 1) != "P");
231
232 for (it = sel.begin(); it != sel.end(); ++it) {
233 Station *station = (*it).second;
234 for (int ic = 0; ic < station->GetNrOfComponents(); ic++) {
235 Component *c = station->GetComponent(ic);
236 if (c == nullptr)
237 continue;
238 const std::string &cname = c->name;
239
240 if (cname.compare(0, 3, "CSC") == 0)
241 MuonGM::ProcessCSC(mysql, m_dhwcsc.get(), m_wcsc, cname);
242 else if (cname.compare(0, 3, "MDT") == 0)
243 MuonGM::ProcessMDT(mysql, m_dhwmdt.get(), m_wmdt, cname);
244 else if (cname.compare(0, 3, "RPC") == 0)
245 MuonGM::ProcessRPC(mysql, m_dhwrpc.get(), m_wrpc, m_dhwrpcall.get(), m_wrpcall, cname);
246 else if (cname.compare(0, 3, "TGC") == 0)
247 MuonGM::ProcessTGC(mysql, m_dhwtgc.get(), m_wtgc, m_dhwtgcall.get(), m_wtgcall, cname);
248 else if (cname.compare(0, 3, "SPA") == 0)
249 MuonGM::ProcessSPA(mysql, m_dhwspa.get(), m_wspa, cname);
250 else if (cname.compare(0, 3, "DED") == 0)
251 MuonGM::ProcessDED(mysql, m_dhwded.get(), m_wded, cname);
252 else if (cname.compare(0, 3, "SUP") == 0)
253 MuonGM::ProcessSUP(mysql, m_dhwsup.get(), m_wsup, cname);
254 else if (cname.compare(0, 3, "CHV") == 0 && have_spa_details)
255 MuonGM::ProcessCHV(mysql, m_dhwchv.get(), m_wchv, cname);
256 else if (cname.compare(0, 3, "CRO") == 0 && have_spa_details)
257 MuonGM::ProcessCRO(mysql, m_dhwcro.get(), m_wcro, cname);
258 else if (cname.compare(0, 3, "CMI") == 0 && have_spa_details)
259 MuonGM::ProcessCMI(mysql, m_dhwcmi.get(), m_wcmi, cname);
260 else if (cname.compare(0, 2, "LB") == 0 && have_spa_details)
261 MuonGM::ProcessLBI(mysql, m_dhwlbi.get(), m_wlbi, cname);
262 }
263 }
264
265 ATH_MSG_INFO( "nMDT " << nmdt << " nCSC " << ncsc << " nTGC " << ntgc << " nRPC " << nrpc );
266 ATH_MSG_INFO( "nDED " << nded << " nSUP " << nsup << " nSPA " << nspa );
267 ATH_MSG_INFO( "nCHV " << nchv << " nCRO " << ncro << " nCMI " << ncmi << " nLBI " << nlbi );
268 }
269
271 //
272 // in case of layout Q and following
273 //
274 IRDBRecordset_ptr ggln = m_pRDBAccess->getRecordsetPtr("GGLN", m_geoTag, m_geoNode);
275
276 int version(0);
277 float wirespacing(0);
278 unsigned int gglnSize(0);
279 if (ggln)
280 gglnSize = ggln->size();
281 else {
282 ATH_MSG_WARNING(" ProcessTGCreadout - IRDBRecordset_ptr GGLN is nullptr" );
283 }
284 if (gglnSize) {
285 version = (int)(*ggln)[0]->getInt("VERS");
286 wirespacing = (*ggln)[0]->getFloat("WIRESP") * Gaudi::Units::mm;
287 }
288
289 ATH_MSG_INFO( " ProcessTGCreadout - version " << version << " wirespacing " << wirespacing );
290
291 // loop over the banks of station components: ALMN
292 for (unsigned int ich = 0; ich < gglnSize; ++ich) {
293 int type = (int)(*ggln)[ich]->getInt("JSTA");
294 std::string name = "TGCReadout" + MuonGM::buildString(type, 2);
295
296 // NCHRNG missing in GGLN, HARD-CODED !!!
297 int nchrng;
298 if (type == 1 || type == 6 || type == 12 || type >= 18) {
299 nchrng = 24;
300 } else {
301 nchrng = 48;
302 }
309 std::vector<StripArray> slarge{make_array<double, MaxNStrips>(0)};
310 std::vector<StripArray> sshort{make_array<double, MaxNStrips>(0)};
311
312 for (int i = 0; i < 3; i++) {
313 nwgs[i] = (*ggln)[ich]->getInt("NWGS", i );
314 nsps[i] = (*ggln)[ich]->getInt("NSPS", i);
315 }
316 for (int i = 0; i < nwgs[0]; i++) {
317 iwgs1[i] = (*ggln)[ich]->getInt("IWGS1", i);
318 }
319
320 for (int i = 0; i < nwgs[1]; i++) {
321 iwgs2[i] = (*ggln)[ich]->getInt("IWGS2", i);
322 }
323 for (int i = 0; i < nwgs[2]; i++) {
324 iwgs3[i] = (*ggln)[ich]->getInt("IWGS3", i);
325 }
326
327 // read and store parameters for strips
328 float pdist = (*ggln)[ich]->getFloat("PDIST");
329
330 for (int i = 0; i < nsps[0] + 1; i++) {
331 slarge[0][i] = (*ggln)[ich]->getFloat("SLARGE", i);
332 sshort[0][i] = (*ggln)[ich]->getFloat("SHORT", i);
333 }
335 std::make_unique<TgcReadoutParams>(name, type, wirespacing, nchrng,
336 std::move(nwgs),
337 std::move(iwgs1),
338 std::move(iwgs2),
339 std::move(iwgs3),
340 pdist,
341 std::move(slarge),
342 std::move(sshort),
343 std::move(nsps));
344 mysql.StoreTgcRPars(rpar);
345 // parameters for TGC inactive inner structure
346
347 std::ostringstream Astr;
348 if (ich < 9) {
349 Astr << "0" << ich + 1;
350 } else {
351 Astr << ich + 1;
352 }
353 std::string A = Astr.str();
354 TGC *tgc = dynamic_cast<TGC*>(mysql.GetTechnology("TGC" + A));
355 tgc->widthWireSupport = (*ggln)[ich]->getFloat("S1PP");
356 tgc->widthGasChannel = (*ggln)[ich]->getFloat("S2PP");
357 tgc->distanceWireSupport = (*ggln)[ich]->getFloat("WSEP");
358 tgc->offsetWireSupport[0] = (*ggln)[ich]->getFloat("SP1WI");
359 tgc->offsetWireSupport[1] = (*ggln)[ich]->getFloat("SP2WI");
360 tgc->offsetWireSupport[2] = (*ggln)[ich]->getFloat("SP3WI");
361 tgc->angleTilt = (*ggln)[ich]->getFloat("TILT") * Gaudi::Units::deg;
362 tgc->radiusButton = (*ggln)[ich]->getFloat("SP1BU");
363 tgc->pitchButton[0] = (*ggln)[ich]->getFloat("SP2BU");
364 tgc->pitchButton[1] = (*ggln)[ich]->getFloat("SP3BU");
365 tgc->angleButton = (*ggln)[ich]->getFloat("SP4BU") * Gaudi::Units::deg;
366 }
367
368 }
369
370 std::string RDBReaderAtlas::TGCreadoutName(int ichtyp) {
371
372 if (getGeometryVersion().substr(0, 1) == "P") {
373
374 if (m_tgcReadoutMapping.empty()) {
375 // first time fill the vector
376 m_tgcReadoutMapping.emplace_back("T1F1"); // 1
377
378 m_tgcReadoutMapping.emplace_back("T1E1"); // 2
379 m_tgcReadoutMapping.emplace_back("T1E2");
380 m_tgcReadoutMapping.emplace_back("T1E3");
381 m_tgcReadoutMapping.emplace_back("T1E4");
382
383 m_tgcReadoutMapping.emplace_back("T2F1"); // 6
384
385 m_tgcReadoutMapping.emplace_back("T2E1"); // 7
386 m_tgcReadoutMapping.emplace_back("T2E2");
387 m_tgcReadoutMapping.emplace_back("T2E3");
388 m_tgcReadoutMapping.emplace_back("T2E4");
389 m_tgcReadoutMapping.emplace_back("T2E5"); // 11
390
391 m_tgcReadoutMapping.emplace_back("T3F1"); // 12
392
393 m_tgcReadoutMapping.emplace_back("T3E1"); // 13
394 m_tgcReadoutMapping.emplace_back("T3E2");
395 m_tgcReadoutMapping.emplace_back("T3E3");
396 m_tgcReadoutMapping.emplace_back("T3E4");
397 m_tgcReadoutMapping.emplace_back("T3E5"); // 17
398
399 m_tgcReadoutMapping.emplace_back("T4F1"); // 18
400
401 m_tgcReadoutMapping.emplace_back("T4E1"); // 19
402 }
403
404 if (ichtyp < 1 || ichtyp > 19) {
405 ATH_MSG_ERROR( " DBReader::TGCreadoutName - ichtype " << ichtyp << " out of range 1-19" );
406 return "XXXY";
407 }
408 } else { // if (getGeometryVersion().substr(0,1) == "Q")
409
410 // Layout Q and following
411 //
412 if (m_tgcReadoutMapping.empty()) {
413 // first time fill the vector
414
415 m_tgcReadoutMapping.emplace_back("T1F1_1"); // 1
416
417 m_tgcReadoutMapping.emplace_back("T1E1_1"); // 2
418 m_tgcReadoutMapping.emplace_back("T1E1_2");
419 m_tgcReadoutMapping.emplace_back("T1E1_3");
420 m_tgcReadoutMapping.emplace_back("T1E1_4");
421
422 m_tgcReadoutMapping.emplace_back("T2F1_1"); // 6
423
424 m_tgcReadoutMapping.emplace_back("T2E1_1"); // 7
425 m_tgcReadoutMapping.emplace_back("T2E1_2");
426 m_tgcReadoutMapping.emplace_back("T2E1_3");
427 m_tgcReadoutMapping.emplace_back("T2E1_4");
428 m_tgcReadoutMapping.emplace_back("T2E1_5"); // 11
429
430 m_tgcReadoutMapping.emplace_back("T3F1_1"); // 12
431
432 m_tgcReadoutMapping.emplace_back("T3E1_1"); // 13
433 m_tgcReadoutMapping.emplace_back("T3E1_2");
434 m_tgcReadoutMapping.emplace_back("T3E1_3");
435 m_tgcReadoutMapping.emplace_back("T3E1_4");
436 m_tgcReadoutMapping.emplace_back("T3E1_5"); // 17
437
438 m_tgcReadoutMapping.emplace_back("T4F1_1"); // 18
439 m_tgcReadoutMapping.emplace_back("T4F2_1"); // 19
440
441 m_tgcReadoutMapping.emplace_back("T4E1_1"); // 20
442 m_tgcReadoutMapping.emplace_back("T4E2_1"); // 21
443 }
444
445 if (ichtyp < 1 || ichtyp > 21) {
446 ATH_MSG_ERROR( " DBReader::TGCreadoutName - ichtype " << ichtyp << " out of range 1-21" );
447 return "XXXY";
448 }
449 }
450
451 return m_tgcReadoutMapping[ichtyp - 1];
452 }
453} // namespace MuonGM
constexpr std::array< T, N > make_array(const T &def_val)
Helper function to initialize in-place arrays with non-zero values.
Definition ArrayHelper.h:10
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Definition of the abstract IRDBAccessSvc interface.
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition of the abstract IRDBRecord interface.
Definition of the abstract IRDBRecordset interface.
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
virtual unsigned int size() const =0
std::vector< std::string > m_tgcReadoutMapping
Definition DBReader.h:131
DBReader(StoreGateSvc *)
Definition DBReader.cxx:13
StatusCode m_SCdbaccess
Definition DBReader.h:128
const std::string & getGeometryVersion() const
Definition DBReader.cxx:22
void setLayoutName(const std::string &s)
Definition MYSQL.cxx:289
void StoreTgcRPars(GeoModel::TransientConstSharedPtr< TgcReadoutParams > t)
Definition MYSQL.cxx:141
Technology * GetTechnology(const std::string &name)
Definition MYSQL.cxx:105
void setNovaVersion(int i)
Definition MYSQL.cxx:300
void setGeometryVersion(const std::string &s)
Definition MYSQL.cxx:271
void setNovaReadVersion(int i)
Definition MYSQL.cxx:284
std::unique_ptr< DblQ00Xtomo > m_dhxtomo
const DblQ00Wrpc::WRPC * m_wrpcall
std::unique_ptr< DblQ00Wlbi > m_dhwlbi
RDBReaderAtlas(StoreGateSvc *pDetStore, IRDBAccessSvc *m_pRDBAccess, const std::string &geoTag, const std::string &geoNode, const std::map< std::string, std::string > &asciiFileDBMap)
const DblQ00Atyp::ATYP * m_atyp
const DblQ00Wcsc::WCSC * m_wcsc
const DblQ00Almn::ALMN * m_almn
std::unique_ptr< DblQ00IAcsc > m_dhiacsc
const DblQ00Wcro::WCRO * m_wcro
const DblQ00Aszt::ASZT * m_aszt
const DblQ00Awln::AWLN * m_wrpc
std::unique_ptr< DblQ00Wsup > m_dhwsup
const DblQ00Acut::ACUT * m_acut
std::unique_ptr< DblQ00Wmdt > m_dhwmdt
std::unique_ptr< DblQ00Wcsc > m_dhwcsc
std::unique_ptr< DblQ00Aptp > m_dhaptp
const DblQ00Wchv::WCHV * m_wchv
std::unique_ptr< DblQ00Aszt > m_dhaszt
std::string TGCreadoutName(int ichtyp)
const DblQ00Wsup::WSUP * m_wsup
std::unique_ptr< DblQ00Wtgc > m_dhwtgcall
std::unique_ptr< DblQ00Wchv > m_dhwchv
const DblQ00Asmp::ASMP * m_asmp
const DblQ00Wcmi::WCMI * m_wcmi
void ProcessTechnologies(MYSQL &mysql)
std::unique_ptr< DblQ00Wcro > m_dhwcro
const std::string m_geoTag
const DblQ00Dbam::DBAM * m_dbam
std::unique_ptr< DblQ00Wrpc > m_dhwrpcall
virtual StatusCode ProcessDB(MYSQL &mysql) override
const DblQ00Wded::WDED * m_wded
std::unique_ptr< DblQ00Asmp > m_dhasmp
const DblQ00Wspa::WSPA * m_wspa
const DblQ00IAcsc::IACSC * m_iacsc
IRDBAccessSvc * m_pRDBAccess
std::unique_ptr< DblQ00Awln > m_dhwrpc
std::unique_ptr< DblQ00Atyp > m_dhatyp
std::unique_ptr< DblQ00Almn > m_dhalmn
void ProcessTGCreadout(MYSQL &mysql)
std::unique_ptr< DblQ00Dbam > m_dhdbam
std::unique_ptr< DblQ00Atln > m_dhwtgc
const DblQ00Alin::ALIN * m_alin
const DblQ00Atln::ATLN * m_wtgc
const DblQ00Wtgc::WTGC * m_wtgcall
const DblQ00Wlbi::WLBI * m_wlbi
std::unique_ptr< DblQ00Wded > m_dhwded
std::unique_ptr< DblQ00Acut > m_dhacut
const DblQ00Wmdt::WMDT * m_wmdt
const std::string m_geoNode
const DblQ00Xtomo::XTOMO * m_xtomo
std::unique_ptr< DblQ00Alin > m_dhalin
std::unique_ptr< DblQ00Wspa > m_dhwspa
std::unique_ptr< DblQ00Wcmi > m_dhwcmi
const DblQ00Aptp::APTP * m_aptp
StationMap::const_iterator StationIterator
int GetNrOfComponents() const
Definition Station.cxx:322
Component * GetComponent(int i) const
Definition Station.cxx:83
double widthGasChannel
std::array< double, 2 > pitchButton
std::array< double, 3 > offsetWireSupport
double angleButton
double widthWireSupport
double distanceWireSupport
double radiusButton
std::array< double, MaxNStrips > StripArray
std::array< int, MaxNGangs > WiregangArray
std::array< double, MaxNGaps > GasGapFloatArray
std::array< int, MaxNGaps > GasGapIntArray
The Athena Transient Store API.
Ensure that the Athena extensions are properly loaded.
Definition GeoMuonHits.h:27
std::string buildString(int i, int ncha)
TgcReadoutParams::WiregangArray WiregangArray
TgcReadoutParams::GasGapIntArray GasGapIntArray
TgcReadoutParams::StripArray StripArray
TgcReadoutParams::GasGapFloatArray GasGapFloatArray
Definition TgcBase.h:6
hold the test vectors and ease the comparison