ATLAS Offline Software
TriggerMenuRW.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 
4 from TrigConfIO.TriggerConfigAccessBase import getFileType, ConfigType
5 from TrigConfIO.L1TriggerConfigAccess import L1MenuAccess, L1PrescalesSetAccess, BunchGroupSetAccess
6 from TrigConfIO.HLTTriggerConfigAccess import HLTMenuAccess, HLTPrescalesSetAccess, HLTJobOptionsAccess, HLTMonitoringAccess
7 from AthenaCommon.Logging import logging
8 log = logging.getLogger('TriggerMenuRW.py')
9 
10 def main():
11  import argparse
12  parser = argparse.ArgumentParser()
13  parser.add_argument("-v", help="increase output verbosity", action="count", default=0)
14  parser.add_argument("-f", "--file", dest="filename", help="json file (menu, prescale set, or bunch group set)")
15  parser.add_argument("--db", dest="dbalias", help="TriggerDB connection alias")
16  parser.add_argument("--smk", type = int, help="SuperMaster key (when accessing menu or job options")
17  parser.add_argument("--l1psk", type = int, help="L1 PrescalesSet key (when accessing L1 prescales")
18  parser.add_argument("--hltpsk", type = int, help="HLT PrescalesSet key (when accessing L1 prescales")
19  parser.add_argument("--bgsk", type = int, help="BunchGroupSet key (when accessing bunch groups")
20  parser.add_argument("--monk", type = int, help="Monitoring Groups key (when accessing monitoring groups)")
21  parser.add_argument("--print", dest="doPrint", help="Prints the loaded information", action="store_true", default = False)
22  parser.add_argument("-w", "--write", dest="doWrite", help="Writes the loaded information to a file", action="store_true", default = False)
23  parser.add_argument("-l", "--loglevel", dest="loglevel", help="Log level [DEBUG, INFO, WARNING] (default INFO)", default = "INFO")
24 
25  args = parser.parse_args()
26 
27  logging.getLogger('TriggerConfigAccessBase.py').setLevel(args.loglevel)
28  logging.getLogger('L1TriggerConfigAccess.py').setLevel(args.loglevel)
29  logging.getLogger('HLTTriggerConfigAccess.py').setLevel(args.loglevel)
30  log.setLevel(args.loglevel)
31 
32 
33  if args.filename:
34  filetype = getFileType(args.filename)
35  if filetype == ConfigType.L1MENU.filetype:
36  cfg = L1MenuAccess( filename = args.filename )
37  elif filetype == ConfigType.L1PS.filetype:
38  cfg = L1PrescalesSetAccess( filename = args.filename )
39  elif filetype == ConfigType.BGS.filetype:
40  cfg = BunchGroupSetAccess( filename = args.filename )
41  elif filetype == ConfigType.HLTMENU.filetype:
42  cfg = HLTMenuAccess( filename = args.filename )
43  elif filetype == ConfigType.HLTPS.filetype:
44  cfg = HLTPrescalesSetAccess( filename = args.filename )
45  elif filetype == ConfigType.HLTJO.filetype:
46  cfg = HLTJobOptionsAccess( filename = args.filename )
47  elif filetype == ConfigType.HLTMON.filetype:
48  cfg = HLTMonitoringAccess( filename = args.filename )
49  else:
50  log.error("Can't read file %s of unknown filetype '%s'", args.filename, filetype)
51  return 1
52  elif args.dbalias:
53  cfg = []
54  if args.smk:
55  cfg += [ L1MenuAccess( dbalias = args.dbalias, smkey = args.smk ) ]
56  cfg += [ HLTMenuAccess( dbalias = args.dbalias, smkey = args.smk ) ]
57  cfg += [ HLTJobOptionsAccess( dbalias = args.dbalias, smkey = args.smk ) ]
58  cfg += [ HLTMonitoringAccess( dbalias = args.dbalias, smkey = args.smk ) ]
59  if args.l1psk:
60  cfg += [ L1PrescalesSetAccess( dbalias = args.dbalias, l1pskey = args.l1psk ) ]
61  if args.hltpsk:
62  cfg += [ HLTPrescalesSetAccess( dbalias = args.dbalias, hltpskey = args.hltpsk ) ]
63  if args.bgsk:
64  cfg += [ BunchGroupSetAccess( dbalias = args.dbalias, bgskey = args.bgsk ) ]
65  if args.monk:
66  cfg += [ HLTMonitoringAccess( dbalias = args.dbalias, monikey = args.monk ) ]
67  else:
68  print("Either a file or dbalias and key need to be specified")
69  return 1
70 
71  if args.doPrint:
72  if type(cfg) is list:
73  for c in cfg:
74  c.printSummary()
75  else:
76  cfg.printSummary()
77 
78  if args.doWrite:
79  if type(cfg) is list:
80  for c in cfg:
81  c.writeFile()
82  else:
83  cfg.writeFile()
84 
85 
86 
87 
88  return 0
89 
90 if __name__ == "__main__":
91  import sys
92  sys.exit(main())
python.TriggerConfigAccessBase.getFileType
def getFileType(filename)
Definition: TriggerConfigAccessBase.py:14
TriggerMenuRW.main
def main()
Definition: TriggerMenuRW.py:10
pool::DbPrintLvl::setLevel
void setLevel(MsgLevel l)
Definition: DbPrint.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28