56 def __init__(self,doOldStyleConfig=False):
57 "Setup conditions DB - IOVDbSvc and connections according to GlobalFlags"
58 from AthenaCommon.AppMgr import ServiceMgr as svcMgr
59 from AthenaCommon.Logging import logging
60 self.msg = logging.getLogger( 'IOVDbSvc.CondDB' )
61 self.msg.
debug(
"Loading basic services for CondDBSetup...")
62
63
64 from AthenaPoolCnvSvc import AthenaPool
65 from IOVDbSvc import IOVDb
66
67 self.iovdbsvc=svcMgr.IOVDbSvc
68
69
70 self.dblist={}
71
72 self.blocklist=[]
73
74
75
76 self.dbname=''
77
78 self.dbmc=''
79 self.dbdata=''
80 self.poolcats=[]
81 from AthenaCommon.GlobalFlags import globalflags
82 from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
83 self.isOnline=athenaCommonFlags.isOnline()
84 self.isMC=not globalflags.DataSource()=='data'
85 if (globalflags.DetGeo() in ['atlas','commis']):
86
87 self.dbmc='OFLP200'
88 self.dbdata=globalflags.DatabaseInstance()
89 if self.isMC:
90
91 self.dbname=self.dbmc
92 self.poolcats=['oflcond']
93 else:
94
95 if (self.dbdata=='auto'):
96 project_name = ''
97 if athenaCommonFlags.FilesInput():
98 from PyUtils.MetaReader import read_metadata
99 metadata = read_metadata(athenaCommonFlags.FilesInput())
100 project_name = metadata[athenaCommonFlags.FilesInput()[0]]['project_name']
101
102 self.dbdata=self._InstanceFromProjectName(project_name)
103 self.msg.info("Configuring database instance '%s' based on project tag '%s'", self.dbdata, project_name)
104 self.dbname=self.dbdata
105 self.poolcats=['comcond','oflcond']
106 elif (globalflags.DetGeo() in ['ctbh8','ctbh6']):
107 self.dbmc='TMCP200'
108 self.dbdata='TBDP200'
109 if self.isMC:
110
111 self.dbname=self.dbmc
112 self.poolcats=['tbcond','oflcond']
113 else:
114
115 self.dbname=self.dbdata
116 self.poolcats=['tbcond','oflcond']
117 else:
118 raise RuntimeError("Unknown globalflags.DetGeo: %s" % globalflags.DetGeo())
119 if (self.dbname!=''):
120 self.msg.info('Setting up conditions DB access to instance %s', self.dbname)
121
122 self._SetAcc('INDET','COOLONL_INDET')
123 self._SetAcc('INDET_ONL','COOLONL_INDET')
124 self._SetAcc('PIXEL','COOLONL_PIXEL')
125 self._SetAcc('PIXEL_ONL','COOLONL_PIXEL')
126 self._SetAcc('SCT','COOLONL_SCT')
127 self._SetAcc('SCT_ONL','COOLONL_SCT')
128 self._SetAcc('TRT','COOLONL_TRT')
129 self._SetAcc('TRT_ONL','COOLONL_TRT')
130 self._SetAcc('LAR','COOLONL_LAR')
131 self._SetAcc('LAR_ONL','COOLONL_LAR')
132 self._SetAcc('TILE','COOLONL_TILE')
133 self._SetAcc('TILE_ONL','COOLONL_TILE')
134 self._SetAcc('MUON','COOLONL_MUON')
135 self._SetAcc('MUON_ONL','COOLONL_MUON')
136 self._SetAcc('MUONALIGN','COOLONL_MUONALIGN')
137 self._SetAcc('MUONALIGN_ONL','COOLONL_MUONALIGN')
138 self._SetAcc('MDT','COOLONL_MDT')
139 self._SetAcc('MDT_ONL','COOLONL_MDT')
140 self._SetAcc('RPC','COOLONL_RPC')
141 self._SetAcc('RPC_ONL','COOLONL_RPC')
142 self._SetAcc('TGC','COOLONL_TGC')
143 self._SetAcc('TGC_ONL','COOLONL_TGC')
144 self._SetAcc('CSC','COOLONL_CSC')
145 self._SetAcc('CSC_ONL','COOLONL_CSC')
146 self._SetAcc('TDAQ','COOLONL_TDAQ')
147 self._SetAcc('TDAQ_ONL','COOLONL_TDAQ')
148 self._SetAcc('GLOBAL','COOLONL_GLOBAL')
149 self._SetAcc('GLOBAL_ONL','COOLONL_GLOBAL')
150 self._SetAcc('TRIGGER','COOLONL_TRIGGER')
151 self._SetAcc('TRIGGER_ONL','COOLONL_TRIGGER')
152 self._SetAcc('CALO','COOLONL_CALO')
153 self._SetAcc('CALO_ONL','COOLONL_CALO')
154 self._SetAcc('FWD','COOLONL_FWD')
155 self._SetAcc('FWD_ONL','COOLONL_FWD')
156
157
158
159 if (self.isMC or not self.isOnline):
160 self._SetAcc('INDET_OFL','COOLOFL_INDET')
161 self._SetAcc('PIXEL_OFL','COOLOFL_PIXEL')
162 self._SetAcc('SCT_OFL','COOLOFL_SCT')
163 self._SetAcc('TRT_OFL','COOLOFL_TRT')
164 self._SetAcc('LAR_OFL','COOLOFL_LAR')
165 self._SetAcc('TILE_OFL','COOLOFL_TILE')
166 self._SetAcc('MUON_OFL','COOLOFL_MUON')
167 self._SetAcc('MUONALIGN_OFL','COOLOFL_MUONALIGN')
168 self._SetAcc('MDT_OFL','COOLOFL_MDT')
169 self._SetAcc('RPC_OFL','COOLOFL_RPC')
170 self._SetAcc('TGC_OFL','COOLOFL_TGC')
171 self._SetAcc('CSC_OFL','COOLOFL_CSC')
172 self._SetAcc('TDAQ_OFL','COOLOFL_TDAQ')
173 self._SetAcc('DCS_OFL','COOLOFL_DCS')
174 self._SetAcc('GLOBAL_OFL','COOLOFL_GLOBAL')
175 self._SetAcc('TRIGGER_OFL','COOLOFL_TRIGGER')
176 self._SetAcc('CALO_OFL','COOLOFL_CALO')
177 self._SetAcc('FWD_OFL','COOLOFL_FWD')
178 else:
179 self.msg.info('Running in online mode - no access to COOLOFL schemas')
180 self.iovdbsvc.OnlineMode=True
181
182
183 localfile="sqlite://;schema=mycool.db;dbname="
184 self.dblist['LOCAL']=localfile
185 self.iovdbsvc.dbConnection=localfile+self.dbname
186
187
188 self.iovdbsvc.DBInstance=self.dbname
189
190
191
192 if not self.isMC:
193 from DBReplicaSvc.DBReplicaSvcConf import DBReplicaSvc
194 svcMgr+=
DBReplicaSvc(COOLSQLiteVetoPattern=
"/DBRelease/")
195
196
197
198
199 if 'FRONTIER_SERVER' in os.environ.keys() and os.environ['FRONTIER_SERVER']!="" and not self.isOnline:
200 self.iovdbsvc.CacheAlign=3
201
202
203 from PoolSvc.PoolSvcConf import PoolSvc
204 if not hasattr (svcMgr, 'PoolSvc'):
206
207
208
209 for i in self.poolcats:
210 svcMgr.PoolSvc.ReadCatalog+=["apcfile:poolcond/PoolCat_%s.xml" % i]
211 svcMgr.PoolSvc.ReadCatalog+=["apcfile:poolcond/PoolFileCatalog.xml"]
212 else:
213 raise RuntimeError('Not enough configuration information to setup ConditionsDB access (are GlobalFlags being used?)')
214 self.msg.
debug(
"Loading basic services for CondDBSetup... [DONE]")
215
This class provides the interface to the LCG POOL persistency software.