def addEffs(table): eff = counter.counterEfficiency(table) colnames = eff.getColumnNames() mapping = {} for n in colnames: mapping[n] = n + "_eff" eff.renameColumns(mapping) for icol in xrange(0, eff.getNcolumns()): table.insertColumn(2 * icol + 1, eff.getColumn(icol))
def addEffs(table): eff = counter.counterEfficiency(table) colnames = eff.getColumnNames() mapping = {} for n in colnames: mapping[n] = n+"_eff" eff.renameColumns(mapping) for icol in xrange(0, eff.getNcolumns()): table.insertColumn(2*icol+1, eff.getColumn(icol))
def main(opts): datasets = None if len(opts.files) > 0: datasets = dataset.getDatasetsFromRootFiles( [(x,x) for x in opts.files], counters=opts.counterdir) else: datasets = dataset.getDatasetsFromMulticrabCfg(opts=opts, counters=opts.counterdir) if os.path.exists(opts.lumifile): datasets.loadLuminosities(opts.lumifile) if opts.mergeData: datasets.mergeData() counters = opts.counterdir if opts.weighted: counters += "/weighted" eventCounter = counter.EventCounter(datasets, counters=counters) print "============================================================" if opts.printInfo: print "Dataset info: " datasets.printInfo() print quantity = "events" if opts.mode == "events": pass elif opts.mode in ["xsect", "xsection", "crosssection", "crossSection", "eff"]: eventCounter.normalizeMCByCrossSection() quantity = "MC by cross section, data by events" else: print "Printing mode '%s' doesn't exist! The following ones are available 'events', 'xsect', 'eff'" % opts.mode return 1 cellFormat = counter.CellFormatText(valueOnly=opts.valueOnly, valueFormat=opts.format) formatFunc = lambda table: table.format(counter.TableFormatText(cellFormat)) csvSplitter = counter.TableSplitter([" +- ", " +", " -"]) if opts.csv: formatFunc = lambda table: table.format(counter.TableFormatText(cellFormat, columnSeparator=","), csvSplitter) if opts.mode == "eff": cellFormat = counter.CellFormatText(valueFormat="%.4f", valueOnly=opts.valueOnly) formatFunc = lambda table: counter.counterEfficiency(table).format(counter.TableFormatText(cellFormat)) quantity = "Cut efficiencies" if opts.csv: formatFunc = lambda table: counter.counterEfficiency(table).format(counter.TableFormatText(cellFormat, columnSeparator=","), csvSplitter) print "============================================================" print "Main counter %s: " % quantity print formatFunc(eventCounter.getMainCounterTable()) print if not opts.mainCounterOnly: names = eventCounter.getSubCounterNames() names.sort() for name in names: print "============================================================" print "Subcounter %s %s: " % (name, quantity) print formatFunc(eventCounter.getSubCounterTable(name)) print # print return 0