Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
import os
import shutil
import argparse
import subprocess
import helpers


def main():
    parser = argparse.ArgumentParser(description="Automatically run APE measurements")
    parser.add_argument("--iteration", action="store", dest="iteration", type=int,
                      help="Current iteration number")
    parser.add_argument("--numFiles", action="store", dest="numFiles", type=int,
                      help="Number of files")
    parser.add_argument("--workingArea", action="store", dest="workingArea", 
                      help="Working Area folder")
    parser.add_argument("--measName", action="store", dest="measName", 
                      help="Measurement name.")                      
    parser.add_argument("--isBaseline", action="store", dest="isBaseline",
                      help="Is baseline measurement")
    # create iteration folders, then merge outputs and remove files
    args = parser.parse_args()
    args.isBaseline = (args.isBaseline == "True")
    
    fileNames = [os.path.join(args.workingArea, args.measName, "out{}.root".format(i)) for i in range(1, args.numFiles+1)  ]    
    
    if not args.isBaseline:
        helpers.newIterFolder(args.workingArea, args.measName, "iter"+str(args.iteration))
        targetName = os.path.join(args.workingArea, args.measName, "iter"+str(args.iteration), "allData.root")
    else:
        helpers.newIterFolder(args.workingArea, args.measName, "baseline")
        targetName = os.path.join(args.workingArea, args.measName, "baseline", "allData.root")
    
    subprocess.call("hadd {} {}".format(targetName, " ".join(fileNames)), shell=True)
    
    for name in fileNames:
        os.remove(name)
        
    if args.iteration>0 and not args.isBaseline: 
        # copy over file from last iteration, so that new results are appended in each iteration
        shutil.copyfile( os.path.join(args.workingArea, args.measName, "iter"+str(args.iteration-1), "allData_iterationApe.root"), 
                         os.path.join(args.workingArea, args.measName, "iter"+str(args.iteration),   "allData_iterationApe.root"))
    
    
if __name__ == "__main__":
    main()