def main() : parser = optparse.OptionParser(usage=usage) parser.add_option('-t', '--tag') parser.add_option('-i', '--input_dir') parser.add_option('-o', '--output_file') parser.add_option('-p', '--output_plot') parser.add_option('-v','--verbose', action='store_true', default=False) (opts, args) = parser.parse_args() requiredOptions = ['tag', 'input_dir', 'output_file', 'output_plot'] otherOptions = ['verbose'] allOptions = requiredOptions + otherOptions def optIsNotSpecified(o) : return not hasattr(opts, o) or getattr(opts,o) is None if any(optIsNotSpecified(o) for o in requiredOptions) : parser.error('Missing required option') tag = opts.tag inputDirname = opts.input_dir outputFname = opts.output_file outputPlotDir = opts.output_plot verbose = opts.verbose if verbose : print '\nUsing the following options:\n'+'\n'.join("%s : %s"%(o, str(getattr(opts, o))) for o in allOptions) allInputFiles = getInputFiles(inputDirname, tag, verbose) # includes allBkg, which is used only for sys assert all(f for f in allInputFiles.values()), ("missing inputs: \n%s"%'\n'.join(["%s : %s"%kv for kv in allInputFiles.iteritems()])) outputPlotDir = outputPlotDir+('/' if not outputPlotDir.endswith('/') else '') mkdirIfNeeded(outputPlotDir) inputFiles = dict((k, v) for k, v in allInputFiles.iteritems() if k in fakeProcesses()) if verbose : print 'Using the following input files:\n'+'\n'.join(["%s : %s"%(p, f.GetName()) for p,f in inputFiles.iteritems()]) outputFile = r.TFile.Open(outputFname, 'recreate') buildMuonFractions (inputFiles, outputPlotDir, outputFile, verbose) buildElectronFractions(inputFiles, outputPlotDir, outputFile, verbose) outputFile.Close() if verbose : print "output plots saved to %s"%outputPlotDir if verbose : print "output histos saved to %s"%outputFname
def main() : parser = optparse.OptionParser(usage=usage) parser.add_option('-t', '--tag') parser.add_option('-i', '--input_dir') parser.add_option('-f', '--input_fractions') parser.add_option('-o', '--output_file') parser.add_option('-p', '--output_plot') parser.add_option('-s', '--input-el-sf', default=[], action='append', help='electron bin-by-bin scale factors (from compute_fake_el_scale_factor)') parser.add_option('-z', '--zoom-in', help='vertical axis efficiency plots') parser.add_option('-v','--verbose', action='store_true', default=False) (opts, args) = parser.parse_args() requiredOptions = ['tag', 'input_dir', 'output_file', 'output_plot'] otherOptions = ['verbose'] allOptions = requiredOptions + otherOptions def optIsNotSpecified(o) : return not hasattr(opts, o) or getattr(opts,o) is None if any(optIsNotSpecified(o) for o in requiredOptions) : parser.error('Missing required option') tag = opts.tag inputDirname = opts.input_dir inputFracFname= opts.input_fractions inputSfFnames = opts.input_el_sf outputFname = opts.output_file outputPlotDir = opts.output_plot zoomIn = opts.zoom_in verbose = opts.verbose if verbose : print '\nUsing the following options:\n'+'\n'.join("%s : %s"%(o, str(getattr(opts, o))) for o in allOptions) allInputFiles = getInputFiles(inputDirname, tag, verbose) # includes allBkg, which is used only for sys assert all(f for f in allInputFiles.values()), ("missing inputs: \n%s"%'\n'.join(["%s : %s"%kv for kv in allInputFiles.iteritems()])) if inputSfFnames and any([not os.path.exists(f) for f in inputSfFnames]) : parser.error("invalid electron sf file(s) %s"%inputSfFnames) outputPlotDir = outputPlotDir+'/' if not outputPlotDir.endswith('/') else '' mkdirIfNeeded(outputPlotDir) outputFile = r.TFile.Open(outputFname, 'recreate') inputFiles = dict((k, v) for k, v in allInputFiles.iteritems() if k in fakeProcesses()) inputFracFile = r.TFile.Open(inputFracFname) if inputFracFname else None if inputFracFname and not inputFracFile : parser.error("invalid fraction file %s"%inputFracFname) buildMuonRates (inputFiles, outputFile, outputPlotDir, inputFracFile=inputFracFile, verbose=verbose, zoomIn=zoomIn) buildElectronRates(inputFiles, outputFile, outputPlotDir, inputFracFile=inputFracFile, inputElecSfFiles=inputSfFnames, verbose=verbose, zoomIn=zoomIn) buildSystematics (allInputFiles['allBkg'], outputFile, verbose) outputFile.Close() if verbose : print "output saved to \n%s"%'\n'.join([outputFname, outputPlotDir])