ATLAS Offline Software
TriggerConfigAccessBase.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 import os
4 import json
5 import re
6 from typing import Any
7 import xml.etree.ElementTree as ET
8 from TrigConfStorage.TriggerCrestUtil import TriggerCrestUtil
9 import coral
10 
11 from AthenaCommon.Logging import logging
12 log = logging.getLogger('TriggerConfigAccessBase.py')
13 
14 def getFileType(filename):
15  filetype = "unknown"
16  with open(filename, 'r') as fp:
17  config = json.load(fp)
18  filetype = config['filetype']
19  return filetype
20 
21 from enum import Enum
22 class ConfigType(Enum):
23  NONE = ("Config", "None", "None")
24  L1MENU = ("L1Menu", "l1menu", "L1M")
25  HLTMENU = ("HLTMenu", "hltmenu", "HLTM")
26  L1PS = ("L1PrescalesSet", "l1prescale", "L1PS")
27  HLTPS = ("HLTPrescalesSet", "hltprescale", "HLTPS")
28  BGS = ("L1BunchGroupsSet", "bunchgroupset", "BGS")
29  HLTJO = ("HLTJobOptions", "joboptions", "JO")
30  HLTMON = ("HLTMonitoring", "hltmonitoringsummary", "MGS")
31  def __init__(self, basename, filetype, crestkey):
32  self.basename = basename
33  self.filetype = filetype
34  self.crestkey = crestkey
35  def __eq__(self, other):
36  if isinstance(other,str):
37  return self.filetype == other
38  else:
39  return self.filetype == other.filetype
40  def __ne__(self, other):
41  return not self.__eq__(other)
42 
44  """
45  ConfigLoader derived classes hold the information of the configuration source
46  and define the method to load the configuration
47  """
48  def __init__(self,configType):
49  self.configType = configType
50  def confirmConfigType(self,config):
51  """
52  checks that the in-file specification of the configuration type matches the expected type
53  """
54  if config['filetype'] != self.configType:
55  raise RuntimeError("Can not load file with filetype '%s' when expecting '%s'" % (config['filetype'], self.configType.filetype))
56 
58  def __init__(self, configType, filename ):
59  super(ConfigFileLoader,self).__init__(configType)
60  self.filename = filename
61  def load(self):
62  with open(self.filename, 'r') as fp:
63  config = json.load(fp)
64  self.confirmConfigType(config)
65  return config
66  def setQuery(self, query):
67  pass
68  def getWriteFilename(self):
69  outfn = os.path.basename(self.filename)
70  if outfn.endswith(".json"):
71  outfn = outfn.rsplit('.',1)[0]
72  return outfn + ".out.json"
73 
75  """Class to load from json string"""
76  def __init__(self, configType, jsonString):
77  super(ConfigDirectLoader,self).__init__(configType)
78  self.jsonString = jsonString
79  def load(self):
80  config = json.loads(self.jsonString)
81  self.confirmConfigType(config)
82  return config
83  def setQuery(self, query):
84  pass
85  def getWriteFilename(self):
86  pass
87 
88 class ConfigDBLoader(ConfigLoader):
89  def __init__(self, configType, dbalias, dbkey):
90  super().__init__(configType)
91  self.dbalias = dbalias
92  self.dbkey = dbkey
93  self.query = None
94  self.schema = None
95 
96  def setQuery(self, query):
97  """
98  query template is a dictionary of queries, identified by schema version,
99  similar to TrigConf::TrigDBMenuLoader::m_hltQueries and TrigConf::TrigDBMenuLoader::m_l1Queries
100  """
101  self.query = query
102 
103  @staticmethod
104  def getResolvedFileName(filename, pathenv=""):
105  """ looks for file, first absolute, then by resolving envvar pathenv"""
106  if os.access(filename,os.R_OK):
107  return filename
108  pathlist = os.getenv(pathenv,'').split(os.pathsep)
109  for path in pathlist:
110  f = os.path.join( path, filename )
111  if os.access( f, os.R_OK ):
112  return f
113  raise RuntimeError("Can't read file %s, neither locally nor in %s" % (filename, pathenv) )
114 
115  @staticmethod
117  dblookupFile = ConfigDBLoader.getResolvedFileName("dblookup.xml", "CORAL_DBLOOKUP_PATH")
118  dbp = ET.parse(dblookupFile)
119  listOfServices = None
120  for logSvc in dbp.iter("logicalservice"):
121  if logSvc.attrib["name"] != dbalias:
122  continue
123  listOfServices = [ serv.attrib["name"] for serv in logSvc.iter("service") ]
124  if len(listOfServices) == 0:
125  raise RuntimeError("DB %s has no services listed in %s" % (dbalias, dblookupFile))
126  break
127  if listOfServices is None:
128  raise RuntimeError("DB %s not available in %s" % (dbalias, dblookupFile))
129 
130  if "FRONTIER_SERVER" not in os.environ:
131  # remove all frontier connnections in the list if the environment FRONTIER_SERVER variable does not exist
132  # this speeds up the resolution of the connection specification (dbalias)
133  listOfServices = [svc for svc in listOfServices if not svc.startswith("frontier:")]
134 
135  # now get the account and pw for oracle connections
136  credentials = dict.fromkeys(listOfServices)
137 
138  for svc in filter(lambda s : s.startswith("frontier:"), listOfServices):
139  credentials[svc] = dict()
140  credentials[svc]["user"] = svc
141  credentials[svc]["password"] = ""
142 
143  try:
144  authFile = ConfigDBLoader.getResolvedFileName("authentication.xml", "CORAL_AUTH_PATH")
145  except Exception as e:
146  log.warning("File authentication.xml is not available! Oracle connection cannot be established. Exception message is: %s",e)
147  else:
148  for svc in filter(lambda s : s.startswith("oracle:"), listOfServices):
149  ap = ET.parse(authFile)
150  count = 0
151  for con in filter( lambda c: c.attrib["name"]==svc, ap.iter("connection")):
152  credentials[svc] = dict([(par.attrib["name"],par.attrib["value"]) for par in con])
153  count += 1
154  if count==0:
155  raise RuntimeError("No credentials found for connection %s from service %s for db %s" % (con,svc,dbalias))
156  if count>1:
157  raise RuntimeError("More than 1 connection found in %s for service %s" % (authFile, svc))
158 
159  return credentials
160 
161  @staticmethod
162  def getSchema(connStr):
163  ''' Read schema from connection string '''
164  if connStr.startswith("oracle:"):
165  [_, schema] = connStr.split("/")[-2:]
166  return schema
167 
168  if connStr.startswith("frontier:"):
169  import re
170  pattern = r"frontier://ATLF/\‍(\‍)/(.*)"
171  m = re.match(pattern, connStr)
172  if not m:
173  raise RuntimeError("connection string '%s' doesn't match the pattern '%s'?" % (connStr, pattern))
174  (schema, ) = m.groups()
175  return schema
176 
177  if connStr.startswith("sqlite_file:"):
178  raise NotImplementedError("Python-loading of trigger configuration from sqlite has not yet been implemented")
179 
180  @staticmethod
181  def readSchemaVersion(qdict, session):
182  ''' Read schema version form database, based on TrigConf::TrigDBLoader::schemaVersion '''
183  try:
184  q = "SELECT TS_TAG FROM {schema}.TRIGGER_SCHEMA TS"
185  query = ConfigDBLoader.getCoralQuery(session, q.format(**qdict))
186  cursor = query.execute()
187  cursor.next()
188 
189  versionTag = cursor.currentRow()[0].data()
190 
191  versionTagPrefix = "Trigger-Run3-Schema-v"
192  if not versionTag.startswith(versionTagPrefix):
193  raise RuntimeError( "Tag format error: Trigger schema version tag %s does not start with %s", versionTag, versionTagPrefix)
194 
195  vstr = versionTag[len(versionTagPrefix)]
196 
197  if not vstr.isdigit():
198  raise RuntimeError( "Invalid argument when interpreting the version part %s of schema tag %s is %s", vstr, versionTag, type(vstr))
199 
200  log.debug("Found schema version %s", vstr)
201  return int(vstr)
202 
203  except Exception as e:
204  log.warning("Failed to read schema version: %r", e)
205 
206  @staticmethod
207  def getCoralQuery(session, queryStr, qdict = None):
208  ''' Parse output, tables and condition from the query string into coral query object'''
209  query = session.nominalSchema().newQuery()
210 
211  if qdict is not None:
212  queryStr = queryStr.format(**qdict)
213 
214  # bind vars
215  bindVars = coral.AttributeList()
216  bindVarsInQuery = re.findall(r":(\w*)", queryStr)
217  if len(bindVarsInQuery) > 0 and qdict is None:
218  log.error("Query has bound-variable syntax but no value dictionary is provided. Query: %s", queryStr)
219  for k in bindVarsInQuery:
220  bindVars.extend(k, "int")
221  bindVars[k].setData(qdict[k])
222 
223  output = queryStr.split("SELECT")[1].split("FROM")[0]
224  for field in output.split(','):
225  query.addToOutputList(field)
226 
227  log.debug("Conversion for Coral of query: %s", queryStr)
228 
229  for table in queryStr.split("FROM")[1].split("WHERE")[0].split(","):
230  tableSplit = list(filter(None, table.split(" ")))
231  # Schema name is stripped from TableList in Coral query
232  query.addToTableList(tableSplit[0].split(".")[1], tableSplit[1])
233 
234  if "WHERE" in queryStr:
235  cond = queryStr.split("WHERE")[1]
236  m = re.match("(.*)(?i: ORDER *BY )(.*)", cond) # check for "order by" clause
237  if m:
238  where, order = m.groups()
239  query.setCondition(where, bindVars)
240  query.addToOrderList(order)
241  else:
242  query.setCondition(cond, bindVars)
243 
244  return query
245 
246  def getQueryDefinition(self, schemaVersion):
247  '''Choose query based on schema version, based on TrigConf::TrigDBLoader::getQueryDefinition '''
248  maxDefVersion = 0
249  for vkey in self.query.keys():
250  if vkey>maxDefVersion and vkey<=schemaVersion:
251  maxDefVersion = vkey
252 
253  if maxDefVersion == 0:
254  raise RuntimeError("No query available for schema version {0}".format(schemaVersion))
255 
256  return self.query[maxDefVersion]
257 
258  def load(self):
259  credentials: dict[str,Any] = ConfigDBLoader.getConnectionParameters(self.dbalias)
260 
261  if not credentials:
262  log.error("No TriggerDB connections found for %s", self.dbalias)
263  raise RuntimeError(f"No TriggerDB connections found for {self.dbalias}")
264 
265  svc = coral.ConnectionService()
266  svcconfig = svc.configuration()
267  svcconfig.disablePoolAutomaticCleanUp()
268  svcconfig.setConnectionTimeOut(0)
269 
270  failureMode = 0
271  for credential in credentials:
272  log.debug("Trying credentials %s",credential)
273 
274  try:
275  session = svc.connect(credential, coral.access_ReadOnly)
276  except Exception as e:
277  log.warning("Failed to establish connection: %s",e)
278  failureMode = max(1, failureMode)
279  continue
280 
281  # Check that the FRONTIER_SERVER is set properly, if not reduce the retrial period and time out values
282  if 'FRONTIER_SERVER' in os.environ and os.environ['FRONTIER_SERVER']:
283  svcconfig.setConnectionRetrialPeriod(300)
284  svcconfig.setConnectionRetrialTimeOut(3600)
285  else:
286  svcconfig.setConnectionRetrialPeriod(1)
287  svcconfig.setConnectionRetrialTimeOut(1)
288 
289  try:
290  session.transaction().start(True) # readOnly
291  self.schema = ConfigDBLoader.getSchema(credential)
292  qdict = { "schema" : self.schema, "dbkey" : self.dbkey }
293 
294  # Choose query based on schema
295  schemaVersion = ConfigDBLoader.readSchemaVersion(qdict, session)
296  qstr = self.getQueryDefinition(schemaVersion)
297  # execute coral query
298  query = ConfigDBLoader.getCoralQuery(session, qstr, qdict)
299  cursor = query.execute()
300 
301  except Exception as e:
302  log.warning(f"DB query on {credential} failed to execute.")
303  log.warning("Exception message: %r", e)
304  failureMode = max(2, failureMode)
305  continue # to next source
306 
307  # Read query result
308  if not cursor.next():
309  # empty result
310  log.warning(f"DB query on {credential} returned empty result, likely due to non-existing key {self.dbkey}")
311  failureMode = 3
312  continue # to next source
313 
314  configblob = cursor.currentRow()[0].data()
315  if type(configblob) is not str:
316  configblob = configblob.readline()
317  config = json.loads(configblob)
318  session.transaction().commit()
319 
320  self.confirmConfigType(config)
321  return config
322 
323  if failureMode == 1:
324  log.error("TriggerDB query: could not connect to any source for %s", self.configType.basename)
325  log.error("Considered sources: %s", ", ".join(credentials))
326  raise RuntimeError("TriggerDB query: could not connect to any source", self.configType.basename)
327  if failureMode == 2:
328  log.error("Query failed due to wrong definition for %s", self.configType.basename)
329  log.error("DB query was: %s", qstr.format(**qdict))
330  raise RuntimeError("Query failed due to wrong definition", self.configType.basename)
331  elif failureMode == 3:
332  log.error("DB key %s does not exist for %s", self.dbkey, self.configType.basename)
333  raise KeyError("DB key does not exist", self.dbkey, self.configType.basename)
334  else:
335  raise RuntimeError("Query failed for unknown reason")
336 
337  # proposed filename when writing config to file
338  def getWriteFilename(self):
339  return "{basename}_{schema}_{dbkey}.json".format(basename = self.configType.basename, schema = self.schema, dbkey = self.dbkey)
340 
342  def __init__(self, *, configType, dbalias, dbkey, crestServer):
343  super().__init__(configType)
344  self.crestServer = crestServer
345  self.dbalias = dbalias
346  self.dbkey = dbkey
347  self.schema = ""
348 
349  def setQuery(self, query):
350  """
351  With CREST all queries are defined in the CREST server
352  """
353  pass
354 
355  def _get_payload(self, hash: str) -> dict:
356  """get payload from crest server using request library
357 
358  Args:
359  hash (str): the query part of the url as required by the REST api
360 
361  Raises:
362  RuntimeError: when connection or query failed
363 
364  Returns:
365  dict: the json content
366  """
367  import requests
368 
369  url = f"{self.crestServer}/payloads/data"
370  params = {
371  "format": "BLOB",
372  "hash": hash
373  }
374  preq = requests.Request(method='GET', url=url, params=params).prepare()
375  with requests.Session() as session:
376  try:
377  resp = session.send(preq)
378  except requests.ConnectionError as exc:
379  log.error(f"Could not connect to crest server {self.crestServer} ({exc})")
380  raise RuntimeError(f"Could not connect to CREST server {self.crestServer}")
381 
382  if resp.status_code != 200:
383  log.error(f"Error: HTTP GET request '{preq.url}' failed")
384  raise RuntimeError(f"Query {hash} to crest failed with status code {resp.status_code}")
385 
386  config = json.loads(resp.content)
387  self.confirmConfigType(config)
388  return config
389 
390  @staticmethod
391  def _getDBSchemaName(dbalias) -> str:
392  dblookupFile = ConfigDBLoader.getResolvedFileName("dblookup.xml", "CORAL_DBLOOKUP_PATH")
393  dbp = ET.parse(dblookupFile)
394  for logSvc in dbp.iter("logicalservice"):
395  if logSvc.attrib["name"] != dbalias:
396  continue
397  oracleServer = ""
398  for serv in logSvc.iter("service"):
399  if serv.attrib["name"].startswith("oracle://"):
400  oracleService = serv.attrib["name"]
401  oracleServer = oracleService.split('/')[3]
402  return oracleServer
403  raise RuntimeError(f"DB {dbalias} has no oracle services listed in {dblookupFile}")
404  raise RuntimeError(f"DB {dbalias} is not listed in {dblookupFile}")
405 
406  def load(self) -> dict:
407  # see SCHEMA_MAP in https://gitlab.cern.ch/crest-db/crest/-/blob/master/src/main/java/hep/crest/server/repositories/triggerdb/TriggerDb.java
408  self.schema = ConfigCrestLoader._getDBSchemaName(self.dbalias)
409  crest_conn = TriggerCrestUtil.getCrestConnection(self.schema)
410  if crest_conn is None:
411  raise RuntimeError(f"Oracle db {self.schema} is not accessible through the crest server {self.crestServer}")
412  hash = f"triggerdb://{crest_conn}/{self.configType.crestkey}/{self.dbkey}"
413  config = self._get_payload(hash=hash)
414  return config
415 
416  # proposed filename when writing config to file
417  def getWriteFilename(self):
418  return "{basename}_{schema}_{dbkey}.json".format(basename = self.configType.basename, schema = self.schema, dbkey = self.dbkey)
419 
421  """
422  base class to hold the configuration (dict)
423  and provides basic functions to access and print
424  """
425  def __init__(self, configType, mainkey, filename = None, jsonString = None, dbalias = None, dbkey = None, useCrest=False, crestServer=""):
426  self._getLoader(configType = configType, filename = filename, jsonString = jsonString, dbalias = dbalias, dbkey = dbkey,
427  useCrest=useCrest, crestServer=crestServer)
428  self._mainkey = mainkey
429  self._config = None
430 
431  def _getLoader(self, *, configType, filename = None, jsonString = None, dbalias = None, dbkey = None,
432  useCrest:bool = False, crestServer:str = ""):
433  if filename:
434  self.loader = ConfigFileLoader( configType, filename )
435  elif dbalias and dbkey:
436  if useCrest:
437  self.loader = ConfigCrestLoader(configType=configType, dbalias=dbalias, dbkey=dbkey, crestServer=crestServer)
438  else:
439  self.loader = ConfigDBLoader( configType, dbalias, dbkey)
440  elif jsonString:
441  self.loader = ConfigDirectLoader( configType, jsonString )
442  else:
443  raise RuntimeError("Neither input file, nor JSON nor db alias and key provided")
444 
445  def load(self):
446  self._config = self.loader.load()
447 
448  def __str__(self):
449  return str(self._config)
450 
451  def __iter__(self):
452  return iter(self[self._mainkey])
453 
454  def __getitem__(self, item):
455  return self._config[item]
456 
457  def __len__(self):
458  return len(self[self._mainkey])
459 
460  def config(self):
461  """ returns the configuration """
462  return self._config
463 
464  def prettyPrint(self):
465  if self._config:
466  print(json.dumps(self._config, indent = 4, separators=(',', ': ')))
467 
468  def name(self):
469  return self["name"]
470 
471  def filetype(self):
472  return self["filetype"]
473 
474  def printSummary(self):
475  """ print summary info, should be overwritten by derived classes """
476  log.info("Configuration name: {0}".format(self.name()))
477  log.info("Configuration size: {0}".format(len(self)))
478 
479  def writeFile(self, filename = None):
480  if filename is None:
481  filename: str = self.loader.getWriteFilename()
482  with open(filename, 'w') as fh:
483  json.dump(self.config(), fh, indent = 4, separators=(',', ': '))
484  log.info("Wrote file %s", filename)
python.TriggerConfigAccessBase.ConfigFileLoader
Definition: TriggerConfigAccessBase.py:57
python.TriggerConfigAccessBase.ConfigDBLoader
Definition: TriggerConfigAccessBase.py:88
python.TriggerConfigAccessBase.ConfigCrestLoader.setQuery
def setQuery(self, query)
Definition: TriggerConfigAccessBase.py:349
python.TriggerConfigAccessBase.getFileType
def getFileType(filename)
Definition: TriggerConfigAccessBase.py:14
python.TriggerConfigAccessBase.ConfigCrestLoader
Definition: TriggerConfigAccessBase.py:341
python.TriggerConfigAccessBase.ConfigDBLoader.readSchemaVersion
def readSchemaVersion(qdict, session)
Definition: TriggerConfigAccessBase.py:181
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
python.TriggerConfigAccessBase.TriggerConfigAccess._mainkey
_mainkey
Definition: TriggerConfigAccessBase.py:428
python.TriggerConfigAccessBase.ConfigCrestLoader.__init__
def __init__(self, *configType, dbalias, dbkey, crestServer)
Definition: TriggerConfigAccessBase.py:342
createLinkingScheme.iter
iter
Definition: createLinkingScheme.py:62
python.TriggerConfigAccessBase.TriggerConfigAccess.__str__
def __str__(self)
Definition: TriggerConfigAccessBase.py:448
python.TriggerConfigAccessBase.TriggerConfigAccess.__init__
def __init__(self, configType, mainkey, filename=None, jsonString=None, dbalias=None, dbkey=None, useCrest=False, crestServer="")
Definition: TriggerConfigAccessBase.py:425
vtune_athena.format
format
Definition: vtune_athena.py:14
python.TriggerConfigAccessBase.TriggerConfigAccess.__iter__
def __iter__(self)
Definition: TriggerConfigAccessBase.py:451
python.TriggerConfigAccessBase.TriggerConfigAccess.prettyPrint
def prettyPrint(self)
Definition: TriggerConfigAccessBase.py:464
python.TriggerConfigAccessBase.ConfigCrestLoader._get_payload
dict _get_payload(self, str hash)
Definition: TriggerConfigAccessBase.py:355
python.TriggerConfigAccessBase.ConfigDBLoader.getCoralQuery
def getCoralQuery(session, queryStr, qdict=None)
Definition: TriggerConfigAccessBase.py:207
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
python.TriggerConfigAccessBase.TriggerConfigAccess.name
def name(self)
Definition: TriggerConfigAccessBase.py:468
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:13
python.TriggerConfigAccessBase.TriggerConfigAccess.printSummary
def printSummary(self)
Definition: TriggerConfigAccessBase.py:474
python.TriggerConfigAccessBase.ConfigCrestLoader.dbalias
dbalias
Definition: TriggerConfigAccessBase.py:345
python.TriggerConfigAccessBase.ConfigDBLoader.load
def load(self)
Definition: TriggerConfigAccessBase.py:258
python.TriggerConfigAccessBase.ConfigFileLoader.filename
filename
Definition: TriggerConfigAccessBase.py:60
python.TriggerConfigAccessBase.TriggerConfigAccess.__len__
def __len__(self)
Definition: TriggerConfigAccessBase.py:457
python.TriggerConfigAccessBase.ConfigType.basename
basename
Definition: TriggerConfigAccessBase.py:32
python.TriggerConfigAccessBase.ConfigDBLoader.dbalias
dbalias
Definition: TriggerConfigAccessBase.py:91
python.TriggerConfigAccessBase.ConfigCrestLoader.load
dict load(self)
Definition: TriggerConfigAccessBase.py:406
python.TriggerConfigAccessBase.ConfigDBLoader.getQueryDefinition
def getQueryDefinition(self, schemaVersion)
Definition: TriggerConfigAccessBase.py:246
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
python.TriggerConfigAccessBase.ConfigLoader.__init__
def __init__(self, configType)
Definition: TriggerConfigAccessBase.py:48
python.TriggerConfigAccessBase.ConfigLoader
Definition: TriggerConfigAccessBase.py:43
python.TriggerConfigAccessBase.ConfigDBLoader.getConnectionParameters
def getConnectionParameters(dbalias)
Definition: TriggerConfigAccessBase.py:116
python.TriggerConfigAccessBase.ConfigDBLoader.dbkey
dbkey
Definition: TriggerConfigAccessBase.py:92
covarianceTool.filter
filter
Definition: covarianceTool.py:514
python.TriggerConfigAccessBase.ConfigDirectLoader.getWriteFilename
def getWriteFilename(self)
Definition: TriggerConfigAccessBase.py:85
python.TriggerConfigAccessBase.TriggerConfigAccess.load
def load(self)
Definition: TriggerConfigAccessBase.py:445
python.TriggerConfigAccessBase.ConfigType.crestkey
crestkey
Definition: TriggerConfigAccessBase.py:34
python.TriggerConfigAccessBase.ConfigDBLoader.getResolvedFileName
def getResolvedFileName(filename, pathenv="")
Definition: TriggerConfigAccessBase.py:104
python.TriggerConfigAccessBase.ConfigDBLoader.getWriteFilename
def getWriteFilename(self)
Definition: TriggerConfigAccessBase.py:338
python.TriggerConfigAccessBase.TriggerConfigAccess.writeFile
def writeFile(self, filename=None)
Definition: TriggerConfigAccessBase.py:479
python.TriggerConfigAccessBase.ConfigFileLoader.getWriteFilename
def getWriteFilename(self)
Definition: TriggerConfigAccessBase.py:68
python.TriggerConfigAccessBase.TriggerConfigAccess
Definition: TriggerConfigAccessBase.py:420
python.TriggerConfigAccessBase.ConfigDBLoader.setQuery
def setQuery(self, query)
Definition: TriggerConfigAccessBase.py:96
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.TriggerConfigAccessBase.ConfigCrestLoader.schema
schema
Definition: TriggerConfigAccessBase.py:347
python.TriggerConfigAccessBase.ConfigDBLoader.schema
schema
Definition: TriggerConfigAccessBase.py:94
python.TriggerConfigAccessBase.ConfigDirectLoader.__init__
def __init__(self, configType, jsonString)
Definition: TriggerConfigAccessBase.py:76
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
python.TriggerConfigAccessBase.ConfigCrestLoader.dbkey
dbkey
Definition: TriggerConfigAccessBase.py:346
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.TriggerConfigAccessBase.ConfigDBLoader.query
query
Definition: TriggerConfigAccessBase.py:93
python.TriggerConfigAccessBase.ConfigDirectLoader.setQuery
def setQuery(self, query)
Definition: TriggerConfigAccessBase.py:83
python.TriggerConfigAccessBase.ConfigLoader.confirmConfigType
def confirmConfigType(self, config)
Definition: TriggerConfigAccessBase.py:50
python.TriggerConfigAccessBase.TriggerConfigAccess._config
_config
Definition: TriggerConfigAccessBase.py:429
python.TriggerConfigAccessBase.ConfigLoader.configType
configType
Definition: TriggerConfigAccessBase.py:49
python.TriggerConfigAccessBase.ConfigType.__ne__
def __ne__(self, other)
Definition: TriggerConfigAccessBase.py:40
python.TriggerConfigAccessBase.ConfigFileLoader.__init__
def __init__(self, configType, filename)
Definition: TriggerConfigAccessBase.py:58
python.TriggerConfigAccessBase.ConfigCrestLoader.crestServer
crestServer
Definition: TriggerConfigAccessBase.py:344
Trk::open
@ open
Definition: BinningType.h:40
python.TriggerConfigAccessBase.ConfigFileLoader.load
def load(self)
Definition: TriggerConfigAccessBase.py:61
python.TriggerConfigAccessBase.TriggerConfigAccess.loader
loader
Definition: TriggerConfigAccessBase.py:433
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
python.TriggerConfigAccessBase.ConfigCrestLoader._getDBSchemaName
str _getDBSchemaName(dbalias)
Definition: TriggerConfigAccessBase.py:391
python.TriggerConfigAccessBase.ConfigType.__init__
def __init__(self, basename, filetype, crestkey)
Definition: TriggerConfigAccessBase.py:31
python.TriggerConfigAccessBase.ConfigDBLoader.__init__
def __init__(self, configType, dbalias, dbkey)
Definition: TriggerConfigAccessBase.py:89
python.TriggerConfigAccessBase.ConfigType
Definition: TriggerConfigAccessBase.py:22
python.TriggerConfigAccessBase.ConfigDirectLoader.jsonString
jsonString
Definition: TriggerConfigAccessBase.py:78
python.TriggerConfigAccessBase.ConfigType.filetype
filetype
Definition: TriggerConfigAccessBase.py:33
python.TriggerConfigAccessBase.ConfigFileLoader.setQuery
def setQuery(self, query)
Definition: TriggerConfigAccessBase.py:66
str
Definition: BTagTrackIpAccessor.cxx:11
python.TriggerConfigAccessBase.ConfigDirectLoader
Definition: TriggerConfigAccessBase.py:74
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
calibdata.commit
bool commit
Definition: calibdata.py:831
python.TriggerConfigAccessBase.TriggerConfigAccess.config
def config(self)
Definition: TriggerConfigAccessBase.py:460
python.TriggerConfigAccessBase.TriggerConfigAccess.filetype
def filetype(self)
Definition: TriggerConfigAccessBase.py:471
python.TriggerConfigAccessBase.ConfigDirectLoader.load
def load(self)
Definition: TriggerConfigAccessBase.py:79
python.TriggerConfigAccessBase.ConfigType.__eq__
def __eq__(self, other)
Definition: TriggerConfigAccessBase.py:35
python.TriggerConfigAccessBase.ConfigCrestLoader.getWriteFilename
def getWriteFilename(self)
Definition: TriggerConfigAccessBase.py:417
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.TriggerConfigAccessBase.TriggerConfigAccess._getLoader
def _getLoader(self, *configType, filename=None, jsonString=None, dbalias=None, dbkey=None, bool useCrest=False, str crestServer="")
Definition: TriggerConfigAccessBase.py:431
python.TriggerConfigAccessBase.TriggerConfigAccess.__getitem__
def __getitem__(self, item)
Definition: TriggerConfigAccessBase.py:454
python.TriggerConfigAccessBase.ConfigDBLoader.getSchema
def getSchema(connStr)
Definition: TriggerConfigAccessBase.py:162