Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:01

0001 #!/usr/bin/env python3
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)