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