diff --git a/main/python/cmdLineUtils.py b/main/python/cmdLineUtils.py index 8f9065354c58de7e6709c3803bb552a9ce481fee..faa7c471796859b6771a6e1c3a6f47ffae7048ee 100644 --- a/main/python/cmdLineUtils.py +++ b/main/python/cmdLineUtils.py @@ -1196,35 +1196,25 @@ def _keyListExtended(rootFile,pathSplitList): keyListSort(keyList) return keyList -def rootPrint(sourceList, directory = None, divide = None, draw = "", outputFormat = None, \ - output = None, size = None, style = None, verbose = False): +def rootPrint(sourceList, directoryOption = None, divideOption = None, drawOption = "", formatOption = None, \ + outputOption = None, sizeOption = None, styleOption = None, verboseOption = False): # Check arguments if sourceList == []: return 1 tupleListSort(sourceList) - # Option values - directoryOptionValue = directory - drawOptionValue = draw - formatOptionValue = outputFormat - outputOptionValue = output - sizeOptionValue = size - styleOptionValue = style - - # Verbose option - if not verbose: - ROOT.gErrorIgnoreLevel = 9999 - # Don't open windows ROOT.gROOT.SetBatch() - # Style option - if styleOptionValue: - ROOT.gInterpreter.ProcessLine(".x {0}".format(styleOptionValue)) + # (Style option) + if styleOption: ROOT.gInterpreter.ProcessLine(".x {0}".format(styleOption)) - # Initialize the canvas - if sizeOptionValue: + # (Verbose option) + if not verboseOption: ROOT.gErrorIgnoreLevel = 9999 + + # Initialize the canvas (Size option) + if sizeOption: try: - width,height = sizeOptionValue.split("x") + width,height = sizeOption.split("x") width = int(width) height = int(height) except ValueError: @@ -1234,10 +1224,10 @@ def rootPrint(sourceList, directory = None, divide = None, draw = "", outputForm else: canvas = ROOT.TCanvas("canvas") - # Divide the canvas - if divide: + # Divide the canvas (Divide option) + if divideOption: try: - x,y = divide.split(".") + x,y = divideOption.split(",") x = int(x) y = int(y) except ValueError: @@ -1246,109 +1236,92 @@ def rootPrint(sourceList, directory = None, divide = None, draw = "", outputForm canvas.Divide(x,y) caseNumber = x*y - # Take the format of the output file (format option) - if not formatOptionValue and outputOptionValue: - fileName = outputOptionValue + # Take the format of the output file (formatOutput option) + if not formatOption and outputOption: + fileName = outputOption fileFormat = fileName.split(".")[-1] - formatOptionValue = fileFormat + formatOption = fileFormat # Use pdf as default format - if not formatOptionValue: formatOptionValue = "pdf" + if not formatOption: formatOption = "pdf" # Create the output directory (directory option) - if directoryOptionValue: - if not os.path.isdir(os.path.join(os.getcwd(),directoryOptionValue)): - os.mkdir(directoryOptionValue) + if directoryOption: + if not os.path.isdir(os.path.join(os.getcwd(),directoryOption)): + os.mkdir(directoryOption) # Make the output name, begin to print (output option) - if outputOptionValue: - if formatOptionValue in ['ps','pdf']: - outputFileName = outputOptionValue - if directoryOptionValue: outputFileName = \ - directoryOptionValue + "/" + outputFileName - canvas.Print(outputFileName+"[",formatOptionValue) + if outputOption: + if formatOption in ['ps','pdf']: + outputFileName = outputOption + if directoryOption: outputFileName = \ + directoryOption + "/" + outputFileName + canvas.Print(outputFileName+"[",formatOption) else: logging.warning("can't merge pictures, only postscript or pdf files") - outputOptionValue = None + return 1 # Loop on the root files retcode = 0 objDrawnNumber = 0 + openRootFiles = [] for fileName, pathSplitList in sourceList: rootFile = openROOTFile(fileName) if not rootFile: retcode += 1 continue - + openRootFiles.append(rootFile) # Fill the key list (almost the same as in rools) keyList = _keyListExtended(rootFile,pathSplitList) for key in keyList: if isTreeKey(key): pass - #obj = key.ReadObj() - #for branch in obj.GetListOfBranches(): - # if not outputOptionValue: - # outputFileName = \ - # key.GetName() + "_" + branch.GetName() + "." +formatOptionValue - # if directoryOptionValue: - # outputFileName = os.path.join( \ - # directoryOptionValue,outputFileName) - # if divide: - # canvas.cd(objDrawnNumber%caseNumber + 1) - # objDrawnNumber += 1 - # branch.Draw(drawOptionValue) - # if divide: - # if objDrawnNumber%caseNumber == 0: - # outputFileName = str(objDrawnNumber//caseNumber)+"."+formatOptionValue - # if directoryOptionValue: - # outputFileName = os.path.join( \ - # directoryOptionValue,outputFileName) - # canvas.Print(outputFileName,formatOptionValue) - # canvas.Clear() - # canvas.Divide(x,y) - # elif (outputOptionValue or formatOptionValue == 'pdf') and not divide: - # objTitle = "Title:"+branch.GetName()+" : "+branch.GetTitle() - # canvas.Print(outputFileName,objTitle) - # else: - # canvas.Print(outputFileName,formatOptionValue) else: - if not outputOptionValue: - outputFileName = key.GetName() + "." +formatOptionValue - if directoryOptionValue: - outputFileName = os.path.join( \ - directoryOptionValue,outputFileName) - obj = key.ReadObj() - if divide: + if divideOption: canvas.cd(objDrawnNumber%caseNumber + 1) objDrawnNumber += 1 - obj.Draw(drawOptionValue) - if divide: + obj = key.ReadObj() + obj.Draw(drawOption) + if divideOption: if objDrawnNumber%caseNumber == 0: - outputFileName = str(objDrawnNumber//caseNumber)+"."+formatOptionValue - if directoryOptionValue: - outputFileName = os.path.join( \ - directoryOptionValue,outputFileName) - canvas.Print(outputFileName,formatOptionValue) + if not outputOption: + outputFileName = str(objDrawnNumber//caseNumber)+"."+formatOption + if directoryOption: + outputFileName = os.path.join( \ + directoryOption,outputFileName) + canvas.Print(outputFileName,formatOption) canvas.Clear() canvas.Divide(x,y) - elif outputOptionValue or formatOptionValue == 'pdf': - objTitle = "Title:"+key.GetClassName()+" : "+key.GetTitle() - canvas.Print(outputFileName,objTitle) else: - canvas.Print(outputFileName,formatOptionValue) - rootFile.Close() + if not outputOption: + outputFileName = key.GetName() + "." +formatOption + if directoryOption: + outputFileName = os.path.join( \ + directoryOption,outputFileName) + if outputOption or formatOption == 'pdf': + objTitle = "Title:"+key.GetClassName()+" : "+key.GetTitle() + canvas.Print(outputFileName,objTitle) + else: + canvas.Print(outputFileName,formatOption) - ## End to print (divide option) - #if divide: - # if objDrawnNumber%caseNumber != 0: - # outputFileName = str(objDrawnNumber//caseNumber + 1)+"."+formatOptionValue - # if directoryOptionValue: - # outputFileName = os.path.join(directoryOptionValue,outputFileName) - # canvas.Print(outputFileName,formatOptionValue) + # Last page (divideOption) + if divideOption: + if objDrawnNumber%caseNumber != 0: + if not outputOption: + outputFileName = str(objDrawnNumber//caseNumber + 1)+"."+formatOption + if directoryOption: + outputFileName = os.path.join(directoryOption,outputFileName) + canvas.Print(outputFileName,formatOption) # End to print (output option) - if outputOptionValue: - canvas.Print(outputFileName+"]",objTitle) + if outputOption: + if not divideOption: + canvas.Print(outputFileName+"]",objTitle) + else: + canvas.Print(outputFileName+"]") + + # Close ROOT files + map(lambda rootFile: rootFile.Close(),openRootFiles) return retcode diff --git a/main/python/rootprint.py b/main/python/rootprint.py index 5a7fe4ea0f2ddee17f9cd41c0d1964ae40530fc2..29f98b51b6d75f2e975f4d389e1091b88d8e0eb9 100755 --- a/main/python/rootprint.py +++ b/main/python/rootprint.py @@ -40,9 +40,9 @@ def execute(): # Collect arguments with the module argparse parser = cmdLineUtils.getParserFile(COMMAND_HELP, EPILOG) parser.add_argument("-d", "--directory", help=DIRECTORY_HELP) - #parser.add_argument("--divide", help=DIVIDE_HELP) + parser.add_argument("--divide", help=DIVIDE_HELP) parser.add_argument("-D", "--draw", default="", help=DRAW_HELP) - parser.add_argument("-f", "--outputFormat", help=FORMAT_HELP) + parser.add_argument("-f", "--format", help=FORMAT_HELP) parser.add_argument("-o", "--output", help=OUTPUT_HELP) parser.add_argument("-s", "--size", help=SIZE_HELP) parser.add_argument("-S", "--style", help=STYLE_HELP) @@ -52,11 +52,10 @@ def execute(): sourceList, optDict = cmdLineUtils.getSourceListOptDict(parser) # Process rootPrint - return cmdLineUtils.rootPrint(sourceList, directory = optDict["directory"], \ - #divide = optDict["divide"], draw = optDict["draw"], \ - draw = optDict["draw"], \ - outputFormat = optDict["outputFormat"], \ - output = optDict["output"], size = optDict["size"], \ - style = optDict["style"], verbose = optDict["verbose"]) + return cmdLineUtils.rootPrint(sourceList, directoryOption = optDict["directory"], \ + divideOption = optDict["divide"], drawOption = optDict["draw"], \ + formatOption = optDict["format"], \ + outputOption = optDict["output"], sizeOption = optDict["size"], \ + styleOption = optDict["style"], verboseOption = optDict["verbose"]) sys.exit(execute())