ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonDetDescr
MuonAGDD
src
MuonAGDDToolHelper.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MuonAGDDToolHelper.h
"
6
7
#include "
MuonReadoutGeometry/MuonDetectorManager.h
"
8
#include "
MuonReadoutGeometry/MuonReadoutElement.h
"
9
#include "
MuonReadoutGeometry/MMReadoutElement.h
"
10
#include "
MuonReadoutGeometry/sTgcReadoutElement.h
"
11
12
#include "GaudiKernel/ISvcLocator.h"
13
#include "GaudiKernel/IToolSvc.h"
14
#include "GaudiKernel/IConversionSvc.h"
15
#include "GaudiKernel/ServiceHandle.h"
16
#include "
AGDDControl/AGDDController.h
"
17
#include "
AGDDModel/AGDDParameterStore.h
"
18
#include "
AGDDControl/AGDD2GeoModelBuilder.h
"
19
#include "
AGDDControl/IAGDD2GeoSvc.h
"
20
#include "
AGDDKernel/AliasStore.h
"
21
#include "
AGDDKernel/AGDDDetector.h
"
22
#include "
AGDDKernel/AGDDDetectorStore.h
"
23
24
#include "
RDBAccessSvc/IRDBAccessSvc.h
"
25
#include "
RDBAccessSvc/IRDBRecord.h
"
26
#include "
RDBAccessSvc/IRDBRecordset.h
"
27
#include "
GeoModelInterfaces/IGeoModelSvc.h
"
28
#include "
StoreGate/StoreGateSvc.h
"
29
30
#include "
MuonAGDDBase/micromegasHandler.h
"
31
#include "
MuonAGDDBase/mm_TechHandler.h
"
32
#include "
MuonAGDDBase/sTGCHandler.h
"
33
#include "
MuonAGDDBase/sTGC_readoutHandler.h
"
34
#include "
MuonAGDDBase/sTGC_TechHandler.h
"
35
#include "
MuonAGDDBase/mmSpacerHandler.h
"
36
#include "
MuonAGDDBase/mmSpacer_TechHandler.h
"
37
#include "
MuonAGDDBase/mm_readoutHandler.h
"
38
39
#include "
MuonDetDescrUtils/BuildNSWReadoutGeometry.h
"
40
41
#include <fstream>
42
43
using namespace
MuonGM
;
44
45
MuonAGDDToolHelper::MuonAGDDToolHelper
()
46
{
47
SmartIF<IGeoModelSvc> geomodel{Gaudi::svcLocator()->service(
"GeoModelSvc"
)};
48
if
(!geomodel.isValid())
throw
std::runtime_error(
"MuonAGDDToolHelper failed to access GeoModelSvc"
);
49
SmartIF<IRDBAccessSvc> rdbaccess{Gaudi::svcLocator()->service(
"RDBAccessSvc"
)};
50
if
(!rdbaccess.isValid())
throw
std::runtime_error(
"MuonAGDDToolHelper failed to access RDBAccessSvc"
);
51
52
m_geoModelSvc
= geomodel.get();
53
m_rdbAccessSvc
= rdbaccess.get();
54
}
55
56
std::vector<std::string>
MuonAGDDToolHelper::ReadAGDDFlags
()
57
{
58
std::vector<std::string> structuresFromFlags;
59
std::string agdd2geoVersion =
m_rdbAccessSvc
->getChildTag(
"AGDD2GeoSwitches"
,
m_geoModelSvc
->muonVersion(),
"MuonSpectrometer"
);
60
61
if
(!agdd2geoVersion.empty())
62
{
63
std::string TheKEYNAME;
64
int
TheKEYVALUE;
65
IRDBRecordset_ptr
pIRDBRecordset =
m_rdbAccessSvc
->getRecordsetPtr(
"AGDD2GeoSwitches"
,
m_geoModelSvc
->muonVersion(),
"MuonSpectrometer"
);
66
for
(
unsigned
int
i=0; i<pIRDBRecordset->
size
(); i++)
67
{
68
const
IRDBRecord
* record = (*pIRDBRecordset)[i];
69
TheKEYNAME = record->
getString
(
"KEYNAME"
);
70
TheKEYVALUE = record->
getInt
(
"KEYVALUE"
);
71
if
( TheKEYVALUE == 1 )
72
{
73
structuresFromFlags.push_back(TheKEYNAME);
74
}
75
}
76
}
77
else
78
{
79
std::cout<<
"MuonAGDDToolHelper\tagdd2geoVersion is empty "
<<std::endl;
80
}
81
return
structuresFromFlags;
82
}
83
84
85
std::string
MuonAGDDToolHelper::GetAGDD
(
const
bool
dumpIt,
const
std::string& tableName,
const
std::string& outFileName)
86
{
87
std::string AtlasVersion =
m_geoModelSvc
->atlasVersion();
88
std::string MuonVersion =
m_geoModelSvc
->muonVersionOverride();
89
90
std::string detectorKey = MuonVersion.empty() ? AtlasVersion : MuonVersion;
91
std::string detectorNode = MuonVersion.empty() ?
"ATLAS"
:
"MuonSpectrometer"
;
92
if
( MuonVersion ==
"CUSTOM"
){
93
detectorKey = AtlasVersion ;
94
detectorNode =
"ATLAS"
;
95
}
96
97
IRDBRecordset_ptr
recordsetAGDD =
m_rdbAccessSvc
->getRecordsetPtr(tableName,detectorKey,detectorNode);
98
if
(!recordsetAGDD)
return
""
;
99
100
const
IRDBRecord
*recordAGDD = (*recordsetAGDD)[0];
101
if
(!recordAGDD)
return
""
;
102
std::string AgddString = recordAGDD->
getString
(
"DATA"
);
103
104
size_t
pos=AgddString.find(
"AGDD.dtd"
);
105
if
(pos!=std::string::npos) AgddString.replace(pos-21,32,
"-- Reference to AGDD.dtd automatically removed -->"
);
106
std::ofstream GeneratedFile;
107
if
(dumpIt)
108
{
109
std::ofstream GeneratedFile;
110
GeneratedFile.open(outFileName);
111
GeneratedFile<<AgddString;
112
GeneratedFile.close();
113
}
114
return
AgddString;
115
}
116
117
bool
MuonAGDDToolHelper::BuildMScomponents
()
118
{
119
SmartIF<StoreGateSvc> pDetStore{Gaudi::svcLocator()->service(
"DetectorStore"
)};
120
if
(!pDetStore.isValid())
return
false
;
121
MuonGM::MuonDetectorManager
* muonMgr=
nullptr
;
122
if
(pDetStore->retrieve(muonMgr).isFailure())
return
false
;
123
return
BuildNSWReadoutGeometry::BuildReadoutGeometry
(muonMgr);
124
}
125
126
void
MuonAGDDToolHelper::SetNSWComponents
()
127
{
128
SmartIF<IAGDDtoGeoSvc> agddsvc{Gaudi::svcLocator()->service(
m_svcName
)};
129
if
(!agddsvc.isValid()) {
130
throw
std::runtime_error(
"MuonAGDDToolHelper::SetNSWComponents() - Could not retrieve "
131
+
m_svcName
+
" from ServiceLocator"
);
132
}
133
134
IAGDDtoGeoSvc::LockedController
c = agddsvc->getController();
135
136
agddsvc->addHandler(
new
micromegasHandler
(
"micromegas"
, *c));
137
agddsvc->addHandler(
new
mm_TechHandler
(
"mm_Tech"
, *c));
138
agddsvc->addHandler(
new
sTGCHandler
(
"sTGC"
, *c));
139
agddsvc->addHandler(
new
sTGC_readoutHandler
(
"sTGC_readout"
, *c));
140
agddsvc->addHandler(
new
sTGC_TechHandler
(
"sTGC_Tech"
, *c));
141
agddsvc->addHandler(
new
mmSpacerHandler
(
"mmSpacer"
, *c));
142
agddsvc->addHandler(
new
mmSpacer_TechHandler
(
"mmSpacer_Tech"
, *c));
143
agddsvc->addHandler(
new
mm_readoutHandler
(
"mm_readout"
, *c));
144
}
145
146
void
MuonAGDDToolHelper::setAGDDtoGeoSvcName
(
const
std::string& name) {
147
m_svcName
= name;
148
}
AGDD2GeoModelBuilder.h
AGDDController.h
AGDDDetectorStore.h
AGDDDetector.h
AGDDParameterStore.h
AliasStore.h
BuildNSWReadoutGeometry.h
IAGDD2GeoSvc.h
IGeoModelSvc.h
IRDBAccessSvc.h
Definition of the abstract IRDBAccessSvc interface.
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition
IRDBAccessSvc.h:30
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
MMReadoutElement.h
MuonAGDDToolHelper.h
MuonDetectorManager.h
MuonReadoutElement.h
sTgcReadoutElement.h
StoreGateSvc.h
BuildNSWReadoutGeometry::BuildReadoutGeometry
static bool BuildReadoutGeometry(MuonGM::MuonDetectorManager *mgr)
Definition
BuildNSWReadoutGeometry.cxx:23
IAGDDtoGeoSvc::LockedController
CxxUtils::LockedPointer< AGDDController > LockedController
Definition
IAGDD2GeoSvc.h:26
IRDBRecord
IRDBRecord is one record in the IRDBRecordset object.
Definition
IRDBRecord.h:28
IRDBRecord::getInt
virtual int getInt(std::string_view fieldName) const =0
Get int field value.
IRDBRecord::getString
virtual const std::string & getString(std::string_view fieldName) const =0
Get string field value.
IRDBRecordset::size
virtual unsigned int size() const =0
MuonAGDDToolHelper::SetNSWComponents
void SetNSWComponents()
Definition
MuonAGDDToolHelper.cxx:126
MuonAGDDToolHelper::m_rdbAccessSvc
IRDBAccessSvc * m_rdbAccessSvc
Definition
MuonAGDDToolHelper.h:36
MuonAGDDToolHelper::m_svcName
std::string m_svcName
Definition
MuonAGDDToolHelper.h:38
MuonAGDDToolHelper::GetAGDD
std::string GetAGDD(const bool dumpIt, const std::string &tableName, const std::string &outFileName)
Definition
MuonAGDDToolHelper.cxx:85
MuonAGDDToolHelper::MuonAGDDToolHelper
MuonAGDDToolHelper()
Definition
MuonAGDDToolHelper.cxx:45
MuonAGDDToolHelper::BuildMScomponents
static bool BuildMScomponents()
Definition
MuonAGDDToolHelper.cxx:117
MuonAGDDToolHelper::ReadAGDDFlags
std::vector< std::string > ReadAGDDFlags()
Definition
MuonAGDDToolHelper.cxx:56
MuonAGDDToolHelper::m_geoModelSvc
IGeoModelSvc * m_geoModelSvc
Definition
MuonAGDDToolHelper.h:37
MuonAGDDToolHelper::setAGDDtoGeoSvcName
void setAGDDtoGeoSvcName(const std::string &name)
Definition
MuonAGDDToolHelper.cxx:146
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:51
micromegasHandler
Definition
micromegasHandler.h:14
mmSpacerHandler
Definition
mmSpacerHandler.h:11
mmSpacer_TechHandler
Definition
mmSpacer_TechHandler.h:11
mm_TechHandler
Definition
mm_TechHandler.h:11
mm_readoutHandler
Definition
mm_readoutHandler.h:11
sTGCHandler
Definition
sTGCHandler.h:14
sTGC_TechHandler
Definition
sTGC_TechHandler.h:11
sTGC_readoutHandler
Definition
sTGC_readoutHandler.h:11
micromegasHandler.h
mmSpacerHandler.h
mmSpacer_TechHandler.h
mm_TechHandler.h
mm_readoutHandler.h
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition
GeoMuonHits.h:27
sTGCHandler.h
sTGC_TechHandler.h
sTGC_readoutHandler.h
Generated on
for ATLAS Offline Software by
1.17.0