Skip to content
Snippets Groups Projects
scaler_parse.py 2.75 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/python
    
    import argparse
    
    def get_args():
        '''This function parses and returns arguments passed in'''
        parser = argparse.ArgumentParser()
        parser.add_argument(
            '-r','--runs',type=str,help='Run list',required=True,nargs="+")
        parser.add_argument(
            '-f','--infile',type=str,help='Scaler list file',required=True)
        parser.add_argument(
            '-o','--outfile',type=str,help='Output file',required=True)
        args = parser.parse_args()
        infilename = args.infile
        outfilename = args.outfile
        runlist = args.runs[0].split(",")
    
        return runlist, infilename, outfilename
    
    runlist, infilename, outfilename = get_args()
    
    print "\nScaler File Name: [ %s ]\n" % infilename
    print "\nOutput File Name: [ %s ]\n" % outfilename
    
    final_runlist = []
    for r in runlist:
        minirunlist = r.split("-")
        nruns = len(minirunlist)
        if nruns == 1:
           #print "Run: [%s]" % r
           scaler_filename = "replay_coin_scalers_" + r + ".report"
           final_runlist.append(scaler_filename)
        else:
           startrun=int(minirunlist[0])
           endrun=int(minirunlist[1])
           while startrun <= endrun:
               #print "MiniRun: [%s]" % startrun
               scaler_filename = "replay_coin_scalers_" + str(startrun) + ".report"
               final_runlist.append(scaler_filename)
               startrun=startrun+1
    
    #print final_runlist
    
    basic_name_array = ["Run Number"]
    scaler_name_array = []
    with open(infilename) as fp:
        scaler_name_array = fp.read().splitlines()
    fp.close()
    
    of = open(outfilename,'w')
    scaler_name_array_run_number = basic_name_array+scaler_name_array
    mx = len(max(scaler_name_array_run_number))
    print (" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_name_array_run_number]))
    of.write(" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_name_array_run_number]))
    of.write("\n")
    
    for runfile in final_runlist:
        with open(runfile) as fp:
            runfile_linelist = fp.read().splitlines()
    	runnumbersplit = runfile.split("_")
    	runnumbersplit2 = runnumbersplit[3].split(".")
            run_number_array=[]
            run_number_array.append(runnumbersplit2[0])
    	scaler_value_array=[]
            for line in runfile_linelist:
                parsed_line = line.split(":")
                for scaler in scaler_name_array:
                    	if parsed_line[0].rstrip(" ") == scaler:
    			    full_value = parsed_line[1].lstrip()
    		            numerical_value = full_value.split(" ")
                                scaler_value_array.append(numerical_value[0])
            scaler_value_array_run_number=run_number_array+scaler_value_array
            print (" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_value_array_run_number]))
            of.write(" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_value_array_run_number]))
            of.write("\n")
            fp.close()
    
    of.close()