Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-26 02:34:21

0001 #!/usr/bin/env python3 
0002 from sys import stderr, exit
0003 import subprocess
0004 
0005 from optparse import OptionParser
0006 parser = OptionParser(usage="usage: %prog [options] Trigger_Path")
0007 parser.add_option("--firstRun",  dest="firstRun",  help="first run", type="int", metavar="RUN", default="1")
0008 parser.add_option("--lastRun",   dest="lastRun",   help="last run",  type="int", metavar="RUN", default="9999999")
0009 parser.add_option("--groupName", dest="groupName", help="select runs of name like NAME", metavar="NAME", default="Collisions%")
0010 parser.add_option("--jsonOut",   dest="jsonOut",   help="dump prescales in JSON format on FILE", metavar="FILE")
0011 (options, args) = parser.parse_args()
0012 if len(args) != 1:
0013     parser.print_usage()
0014     exit(2)
0015 path = args[0]
0016 
0017 
0018 edmCfgFromDB = "edmConfigFromDB --orcoff --format summary.ascii --paths " + path;
0019 ## my $pyPrintTable = "echo 'for X in process.PrescaleService.prescaleTable: print \"\%s \%s\" % (X.pathName.value(), X.prescales[0])'";
0020 def getPrescalesFromKey(key):
0021     #stderr.write("\t%s ...\n" % key);
0022     cmd = ( edmCfgFromDB +" --configName "+key + " | grep -i "+ path + " | tail -1 | awk ' $2 ==\"%s\" {print $NL}' " ) % path
0023     res = subprocess.getoutput(cmd)
0024     res_split = res.split()
0025     psMap = {}
0026     aa=""
0027     if len(res)>0:
0028         for uu in range(3,len(res_split)-1):
0029             if uu % 2 == 1:
0030                 aa = aa + res_split[uu] + "\t"
0031         psMap[path] = aa
0032     else:
0033         psMap[path] = 0
0034     return psMap
0035 
0036 from .queryRR import queryRR
0037 
0038 runKeys = queryRR(options.firstRun,options.lastRun,options.groupName)
0039 prescaleTable = {}
0040 runs = runKeys.keys(); runs.sort()
0041 stderr.write("Querying ConfDB for prescales for path %s...\n" % (path));
0042 jsout = {}
0043 for run in runs:
0044     key = runKeys[run]
0045     if key not in prescaleTable:
0046         prescaleTable[key] = getPrescalesFromKey(key)
0047     psfactor = 1
0048     if path in prescaleTable[key]: psfactor = prescaleTable[key][path]
0049     print("%s\t%s" % (run, psfactor))
0050     jsout[run] = psfactor
0051 
0052 if options.jsonOut:
0053     stderr.write("Exporting to JSON file %s...\n" % (options.jsonOut))
0054     import json
0055     jsonFile = open(options.jsonOut, "w")
0056     jsonFile.write(json.dumps(jsout))
0057     jsonFile.close()