File indexing completed on 2024-04-06 12:13:01
0001
0002
0003 import sys
0004 from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
0005 import re
0006 from FWCore.PythonUtilities.LumiList import LumiList
0007
0008 if __name__ == '__main__':
0009
0010 parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
0011 parser.add_argument('--output', dest='output', type=str,
0012 help='Save output to file OUTPUT')
0013 parser.add_argument('--runIndex', dest='runIndex', type=int,
0014 default = 0,
0015 help='column to be converted to run number')
0016 parser.add_argument('--lumiIndex', dest='lumiIndex', type=int,
0017 default = 1,
0018 help='column to be converted to lumi section number')
0019 parser.add_argument("input", metavar="input.csv", type=str)
0020 options = parser.parse_args()
0021
0022 sepRE = re.compile (r'[\s,;:]+')
0023 runLumiDict = {}
0024 events = open (options.input, 'r')
0025 runIndex, lumiIndex = options.runIndex, options.lumiIndex
0026 minPieces = max (runIndex, lumiIndex) + 1
0027 for line in events:
0028 pieces = sepRE.split (line.strip())
0029 if len (pieces) < minPieces:
0030 continue
0031 try:
0032 run, lumi = int( pieces[runIndex] ), int( pieces[lumiIndex] )
0033 except:
0034 continue
0035 runLumiDict.setdefault (run, []).append (lumi)
0036 jsonList = LumiList (runsAndLumis = runLumiDict)
0037 if options.output:
0038 jsonList.writeJSON (options.output)
0039 else:
0040 print(jsonList)