ATLAS Offline Software
CondDB.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 # CondDB.py
4 # Configuration for Athena conditions DB access
5 # usage:
6 # from IOVDbSvc.CondDB import conddb
7 # then add folders with
8 # conddb.addFolder('INDET','/Indet/Align')
9 # conddb.addFolder('INDET,'/Indet/Align <tag>my_explicit_tag</tag>') or
10 # conddb.addFolderWithTag('INDET','/Indet/Align','my_explicit_tag')
11 # conddb.addFolderSplitOnline('INDET','/Indet/OnlineF','/Indet/OfflineF')
12 # conddb.addFolderSplitMC('INDET','/Indet/DataFolder','/Indet/MCFolder')
13 # override a tag with
14 # conddb.addOverride('/Indet/Align','override_tag_value')
15 # block a folder from being added later
16 # conddb.blockFolder('/Indet/Align')
17 # add a folder even though blocked
18 # conddb.addFolder('INDET','/Indet/Align',True)
19 # conddb.addFolderWithTag('INDET','/Indet/Align','my_explicit_tag',True)
20 # add markup (additional XML) to existing folder specifications
21 # conddb.addMarkup('/Indet/Align','<channelSelection>1:3</channelSelection>')
22 #
23 # If the className argument is provided to addFolder, then also register
24 # with CondInputLoader.
25 
26 import os
27 
28 from AthenaCommon.AppMgr import ServiceMgr as svcMgr
29 from IOVSvc.IOVSvcConf import CondSvc
30 from IOVSvc.IOVSvcConf import CondInputLoader
31 from AthenaServices.AthenaServicesConf import Athena__ConditionsCleanerSvc
32 from AthenaServices.AthenaServicesConf import Athena__DelayedConditionsCleanerSvc
33 from AthenaCommon.AlgSequence import AthSequencer
34 from AthenaCommon.ConcurrencyFlags import jobproperties as jp
35 
36 
37 svcMgr += CondSvc()
38 
39 condSeq = AthSequencer("AthCondSeq")
40 if not hasattr(condSeq, "CondInputLoader"):
41  condInputLoader = CondInputLoader( "CondInputLoader")
42  # We always want CondInputLoader to be first in the condSeq
43  # for serial running
44  condSeq.insert(0, condInputLoader)
45 else:
46  condInputLoader = condSeq.CondInputLoader
47 
48 # Enable conditions garbage collection.
49 nConcurrentEvents = max(1,jp.ConcurrencyFlags.NumConcurrentEvents())
50 cleaner = Athena__DelayedConditionsCleanerSvc(RingSize = 2*nConcurrentEvents)
51 svcMgr += cleaner
52 svcMgr += Athena__ConditionsCleanerSvc (CleanerSvc = cleaner)
53 
54 class CondDB:
55  "Class to hold configuration information for Athena conditions DB access"
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  # AthenaPool and IOVDbSvc configuration
64  from AthenaPoolCnvSvc import AthenaPool # noqa: F401
65  from IOVDbSvc import IOVDb # noqa: F401
66  # local access to IOVDbSvc parameters
67  self.iovdbsvc=svcMgr.IOVDbSvc
68 
69  # initialise list of allowed DBs
70  self.dblist={}
71  # and list of blocked folders
72  self.blocklist=[]
73 
74  # decide which instance to setup
75  # default database
76  self.dbname=''
77  # names for MC and data database in case forceMC/forceData are used
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  # ATLAS full or commissioning geometry
87  self.dbmc='OFLP200'
88  self.dbdata=globalflags.DatabaseInstance() #could be 'auto'
89  if self.isMC:
90  # Monte Carlo
91  self.dbname=self.dbmc
92  self.poolcats=['oflcond']
93  else:
94  # real data
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  # 2004 combined testbeam, Monte Carlo
111  self.dbname=self.dbmc
112  self.poolcats=['tbcond','oflcond']
113  else:
114  # 2004 combined testbeam, real data
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  # set up all access options - online schemas
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  # set up all access options - offline schemas
157  # only do this if isOnline flag is NOT set
158  # or MC flag is set, to allow HLT testing using MC database
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  # setup default connection to localfile, and put in LOCAL symbol
183  localfile="sqlite://;schema=mycool.db;dbname="
184  self.dblist['LOCAL']=localfile
185  self.iovdbsvc.dbConnection=localfile+self.dbname
186 
187  # setup knowledge of dbinstance in IOVDbSvc, for global tag x-check
188  self.iovdbsvc.DBInstance=self.dbname
189 
190 
191  # setup DBReplicaSvc to veto DBRelease SQLite files if real data
192  if not self.isMC:
193  from DBReplicaSvc.DBReplicaSvcConf import DBReplicaSvc
194  svcMgr+=DBReplicaSvc(COOLSQLiteVetoPattern="/DBRelease/")
195 
196  # enable Frontier cache alignment if it looks like Frontier will
197  # be used (via FRONTIER_SERVER variable)
198  # but not for HLT (ATR-4646)
199  if 'FRONTIER_SERVER' in os.environ.keys() and os.environ['FRONTIER_SERVER']!="" and not self.isOnline:
200  self.iovdbsvc.CacheAlign=3
201 
202  # setup PoolSvc catalogues
203  from PoolSvc.PoolSvcConf import PoolSvc
204  if not hasattr (svcMgr, 'PoolSvc'):
205  svcMgr+=PoolSvc()
206  # add the standard catalogues
207  # Set entries which will be resolved using ATLAS_POOLCOND_PATH
208  # (if set) - the actual resolution is done inside PoolSvc C++
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 
216  def addFolder(self,ident,folder,force=False,forceMC=False,forceData=False,
217  className=None,extensible=False):
218  """Add access to the given folder, in the identified subdetector schema.
219 If EXTENSIBLE is set, then if we access an open-ended IOV at the end of the list,
220 the end time for this range will be set to just past the current event.
221 Subsequent accesses will update this end time for subsequent events.
222 This allows the possibility of later adding a new IOV using IOVSvc::setRange."""
223  # first check if access to this folder was blocked, unless forcing
224  for block in self.blocklist:
225  if (folder.find(block)>=0 and not force): return
226  folderadd=''
227  # now check if ident is defined, and add folder
228  if (ident in self.dblist.keys()):
229  folderadd="<db>%s%s</db> %s" % (self.dblist[ident],self._GetName(forceMC,forceData),folder)
230  elif (ident==''):
231  folderadd=folder
232  elif (ident.find('.')>0):
233  # interpret the identifier as a filename for SQLite file
234  folderadd='<db>sqlite://;schema=%s;dbname=%s</db> %s' % (ident,self._GetName(forceMC,forceData),folder)
235  else:
236  raise RuntimeError("Conditions database identifier %s is not defined" % ident)
237  if extensible:
238  folderadd = folderadd + '<extensible/>'
239 
240  self.iovdbsvc.Folders+=[folderadd]
241 
242  if className:
243  key = (className, self.extractFolder(folder))
244  if key not in condInputLoader.Load:
245  condInputLoader.Load.add(key)
246 
247  def addFolderWithTag(self,ident,folder,tag,force=False,forceMC=False,forceData=False,className=None):
248  "Add access to the given folder/schema, using a specified tag"
249  self.addFolder(ident,folder+" <tag>%s</tag>" % tag,force,forceMC,forceData,className=className)
250 
251  def addFolderSplitOnline(self,ident,folder1,folder2,force=False,forceMC=False,forceData=False,
252  className=None,extensible=False):
253  "Add access to given folder, using folder1 online, folder2 offline"
254  if self.isOnline and not self.isMC:
255  self.addFolder(ident,folder1,force=force,forceMC=forceMC,forceData=forceData,
256  className=className,extensible=extensible)
257  return folder1
258  else:
259  self.addFolder(ident+'_OFL',folder2,force=force,forceMC=forceMC,forceData=forceData,
260  className=className,extensible=extensible)
261  return folder2
262 
263  def addFolderSplitMC(self,ident,folder1,folder2,force=False,forceMC=False,forceData=False,className=None):
264  "Add access to given folder, using folder1 (online) for real data, folde2 (offline) for MC"
265  if self.isMC:
266  self.addFolder(ident+'_OFL',folder2,force=force,forceMC=forceMC,forceData=forceData,className=className)
267  else:
268  self.addFolder(ident,folder1,force=force,forceMC=forceMC,forceData=forceData,className=className)
269 
270  def addOverride(self,folder,tag):
271  "Add a tag override for the specified folder"
272  overrideDirective = '<prefix>%s</prefix> <tag>%s</tag>' % (folder,tag)
273  if overrideDirective not in self.iovdbsvc.overrideTags:
274  self.iovdbsvc.overrideTags+=[overrideDirective]
275 
276  def blockFolder(self,folder):
277  "Block use of specified conditions DB folder so data can be read from elsewhere"
278  self.blocklist+=[folder]
279  # check existing list of folders and remove it if found
280  for i in range(0,len(self.iovdbsvc.Folders)):
281  if (self.iovdbsvc.Folders[i].find(folder)>=0):
282  del self.iovdbsvc.Folders[i]
283  break
284 
285  folderName = self.extractFolder(folder)
286  for f in condInputLoader.Load:
287  if (f[-1] == folderName):
288  condInputLoader.Load.remove(f) # OK since we break after this
289  break
290 
291  def folderRequested(self,folder):
292  "Return true if the given folder has already been requested"
293  for i in self.iovdbsvc.Folders:
294  if (i.find(folder)>=0): return True
295  return False
296 
297  def addMarkup(self,folder,markup):
298  "Add given XML markup to folder string for given folder"
299  nmod=0
300  for i in range(0,len(self.iovdbsvc.Folders)):
301  if (self.iovdbsvc.Folders[i].find(folder)>=0):
302  self.iovdbsvc.Folders[i]+=markup
303  nmod+=1
304  if (nmod==0):
305  raise RuntimeError("conddb.addMarkup: Folder %s is not known to IOVDbSvc" % folder)
306 
307 
308  def setGlobalTag(self,tag):
309  "Set the GlobalTag value used as the key for hierarhical conditions"
310  self.iovdbsvc.GlobalTag=tag
311 
312 
313  def setRequireLock(self,lock=True):
314  "Set the flag indicating global tags will be required to be locked"
315  self.iovdbsvc.CheckLock=lock
316 
317  def setWriteDataToFile(self, writeData=False):
318  "Set option to write data to file"
319  self.iovdbsvc.OutputToFile=writeData
320 
321  def setCrestToFile(self, crestData=False):
322  "Set option to write CREST data to file"
323  self.iovdbsvc.CrestToFile=crestData
324 
325 
326  def extractFolder(self,folderstr):
327  "Extract the folder name (non-XML text) from a IOVDbSvc.Folders entry"
328  fname=""
329  xmltag=""
330  ix=0
331  while ix<len(folderstr):
332  if (folderstr[ix]=='<' and xmltag==""):
333  ix2=folderstr.find('>',ix)
334  if (ix2!=-1):
335  xmltag=(folderstr[ix+1:ix2]).strip()
336  ix=ix2+1
337  if xmltag[-1] == '/':
338  xmltag=""
339  ix=ix+1
340  elif (folderstr[ix:ix+2]=='</' and xmltag!=""):
341  ix2=folderstr.find('>',ix)
342  if (ix2!=-1):
343  xmltag=""
344  ix=ix2+1
345  else:
346  ix2=folderstr.find('<',ix)
347  if ix2==-1: ix2=len(folderstr)
348  if (xmltag==""): fname=fname+folderstr[ix:ix2]
349  ix=ix2
350  return fname.strip()
351 
352 
353  def dumpFolderTags(self,outfile,folderNames=False,folderOrigin=False):
354  "Write out folder-specific tag names to file, for use with AtlCoolCopy tools"
355  ofile=open(outfile,'w')
356  for folderstr in self.iovdbsvc.Folders:
357  # extract tag specifications and write in file
358  if (folderNames):
359  # also extract the name of the folder - all non-XML text
360  fname=self.extractFolder(folderstr)
361  if (fname!=""):
362  dbtype=""
363  # find the database schema and insert :ONL or :OFL
364  if (folderOrigin):
365  if '<db>' in folderstr:
366  idx1=folderstr.find('<db>')+4
367  idx2=folderstr.find('</db>')
368  if (idx2>0):
369  dbname=folderstr[idx1:idx2].strip()
370  if 'ONL' in dbname:
371  dbtype=':ONL'
372  elif 'OFL' in dbname:
373  dbtype=':OFL'
374  ofile.write('--folder %s%s\n' % (fname,dbtype))
375  if '<tag>' in folderstr:
376  idx1=folderstr.find('<tag>')+5
377  idx2=folderstr.find('</tag>')
378  if (idx2>0):
379  tag=folderstr[idx1:idx2].strip()
380  # do not write out TagInfo magic tags, except when giving
381  # folderOrigin
382  if ((tag.find('TagInfo')!=0 and tag!='HEAD') or folderOrigin):
383  ofile.write('--tag %s\n' % tag)
384  # also extract any special tag names from overrideTags list
385  for folderstr in self.iovdbsvc.overrideTags:
386  # extract tag specifications and write in file
387  if '<tag>' in folderstr:
388  idx1=folderstr.find('<tag>')+5
389  idx2=folderstr.find('</tag>')
390  if (idx2>0):
391  tag=folderstr[idx1:idx2].strip()
392  # do not write out TagInfo magic tags
393  if (tag.find('TagInfo')!=0 and tag!='HEAD'):
394  ofile.write('--tag %s\n' % tag)
395  ofile.close()
396 
397  def dumpFolderReadReal(self,outfile):
398  "Dump configuration information for use in ReadReal in AthenaDBTestRec"
399  ofile=open(outfile,'w')
400  ofile.write('FolderList=%s\n' % self.iovdbsvc.Folders.__repr__())
401  ofile.close()
402 
403  def GetInstance(self,forceMC=False,forceData=False):
404  "Get the name of the DB instance in use (e.g. OFLP200)"
405  return self._GetName(forceMC,forceData)
406 
407 
408  def _SetAcc(self,ident,schema):
409  "Internal helper function to setup database access string"
410  self.dblist[ident]="%s/" % schema
411 
412  def _GetName(self,forceMC,forceData):
413  "Internal get db instance name, taking into account forceData/MC flags"
414  if forceMC:
415  return self.dbmc
416  elif forceData:
417  return self.dbdata
418  else:
419  return self.dbname
420 
421  #decide database instance based on project tag dataXX_
422  def _InstanceFromProjectName(self,projectName):
423  try:
424  year=int(projectName[4:6])
425  except Exception:
426  self.msg.warning(f"Failed to extract year from project tag '{projectName}', using CONDBR2.")
427  return "CONDBR2"
428 
429  if (year>13):
430  return "CONDBR2"
431  else:
432  return "COMP200"
433 
434 
435 # make instance for use
436 # false indicates no backward compatibility objects
437 conddb=CondDB(False)
grepfile.info
info
Definition: grepfile.py:38
python.CondDB.CondDB.dumpFolderReadReal
def dumpFolderReadReal(self, outfile)
Definition: CondDB.py:397
python.CondDB.CondDB.__init__
def __init__(self, doOldStyleConfig=False)
Definition: CondDB.py:56
python.CondDB.CondDB.dblist
dblist
Definition: CondDB.py:70
max
#define max(a, b)
Definition: cfImp.cxx:41
python.CondDB.CondDB._GetName
def _GetName(self, forceMC, forceData)
Definition: CondDB.py:412
python.CondDB.CondDB.setWriteDataToFile
def setWriteDataToFile(self, writeData=False)
Definition: CondDB.py:317
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
python.CondDB.CondDB.folderRequested
def folderRequested(self, folder)
Definition: CondDB.py:291
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.MetaReader.read_metadata
def read_metadata(filenames, file_type=None, mode='lite', promote=None, meta_key_filter=None, unique_tag_info_values=True, ignoreNonExistingLocalFiles=False)
Definition: MetaReader.py:52
python.CondDB.CondDB.dbmc
dbmc
Definition: CondDB.py:78
python.CondDB.CondDB.blockFolder
def blockFolder(self, folder)
Definition: CondDB.py:276
python.CondDB.CondDB.setGlobalTag
def setGlobalTag(self, tag)
Definition: CondDB.py:308
python.CondDB.CondDB.iovdbsvc
iovdbsvc
Definition: CondDB.py:67
python.CondDB.CondDB.addFolderSplitMC
def addFolderSplitMC(self, ident, folder1, folder2, force=False, forceMC=False, forceData=False, className=None)
Definition: CondDB.py:263
PoolSvc
This class provides the interface to the LCG POOL persistency software.
Definition: PoolSvc.h:36
python.CondDB.CondDB._InstanceFromProjectName
def _InstanceFromProjectName(self, projectName)
Definition: CondDB.py:422
python.CondDB.CondDB.poolcats
poolcats
Definition: CondDB.py:80
python.CondDB.CondDB.addOverride
def addOverride(self, folder, tag)
Definition: CondDB.py:270
python.CondDB.CondDB.setRequireLock
def setRequireLock(self, lock=True)
Definition: CondDB.py:313
DBReplicaSvc
Definition: DBReplicaSvc.h:17
python.CondDB.CondDB._SetAcc
def _SetAcc(self, ident, schema)
Definition: CondDB.py:408
python.CondDB.CondDB.dbname
dbname
Definition: CondDB.py:76
python.CondDB.CondDB.GetInstance
def GetInstance(self, forceMC=False, forceData=False)
Definition: CondDB.py:403
python.CondDB.CondDB.msg
msg
Definition: CondDB.py:60
python.CondDB.CondDB.addFolder
def addFolder(self, ident, folder, force=False, forceMC=False, forceData=False, className=None, extensible=False)
Definition: CondDB.py:216
python.CondDB.CondDB
Definition: CondDB.py:54
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
python.CondDB.CondDB.addFolderSplitOnline
def addFolderSplitOnline(self, ident, folder1, folder2, force=False, forceMC=False, forceData=False, className=None, extensible=False)
Definition: CondDB.py:251
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
python.CondDB.CondDB.blocklist
blocklist
Definition: CondDB.py:72
python.CondDB.CondDB.extractFolder
def extractFolder(self, folderstr)
Definition: CondDB.py:326
Trk::open
@ open
Definition: BinningType.h:40
python.AlgSequence.AthSequencer
AthSequencer
Definition: Control/AthenaCommon/python/AlgSequence.py:64
python.CondDB.CondDB.addFolderWithTag
def addFolderWithTag(self, ident, folder, tag, force=False, forceMC=False, forceData=False, className=None)
Definition: CondDB.py:247
python.CondDB.CondDB.dbdata
dbdata
Definition: CondDB.py:79
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
python.CondDB.CondDB.setCrestToFile
def setCrestToFile(self, crestData=False)
Definition: CondDB.py:321
python.CondDB.CondDB.isMC
isMC
Definition: CondDB.py:84
python.CondDB.CondDB.addMarkup
def addMarkup(self, folder, markup)
Definition: CondDB.py:297
python.CondDB.CondDB.dumpFolderTags
def dumpFolderTags(self, outfile, folderNames=False, folderOrigin=False)
Definition: CondDB.py:353
python.CondDB.CondDB.isOnline
isOnline
Definition: CondDB.py:83