def addCurve(self, name, label): def getHisto(dataset): tmp = self.datasets.getDataset(dataset).getDatasetRootHisto(name) #tmp.normalizeToLuminosity(46) tmp.normalizeByCrossSection() return tmp.getHistogram() signalRootHisto = getHisto("Signal") signalEff = muonAnalysis.dist2eff(signalRootHisto) signalEffValues = dataset.histoToList(signalEff) tmpHistoManager = histograms.HistoManager(self.datasets, name) tmpHistoManager.normalizeMCByCrossSection() #tmpHistoManager.normalizeMCByLuminosity() mcSum = histograms.sumRootHistos([ muonAnalysis.getSumOrRootHisto(histo) for histo in filter( lambda h: h.isMC(), tmpHistoManager.getHistos()) ]) mcSum = muonAnalysis.dist2pass(mcSum) bkgHisto = tmpHistoManager.getHisto("Background") bkg = muonAnalysis.getSumOrRootHisto(bkgHisto).Clone(name + "_bkgfraction") bkg = muonAnalysis.dist2pass(bkg) bkg.Divide(mcSum) bkgValues = dataset.histoToList(bkg) curve = ROOT.TGraph(len(signalEffValues), array.array("d", signalEffValues), array.array("d", bkgValues)) self.histoMgr.appendHisto(histograms.HistoGraph(curve, label))
def __init__(self, passedPlots, names, legendLabels={}): plots.PlotBase.__init__(self, [], passedPlots[0].saveFormats) legends = { "sumIsoRel": "Rel iso", "pfSumIsoRel": "PF rel iso", } legends.update(legendLabels) with SetTH1Directory(False): rootHistos = [] for plot, name in zip(passedPlots, names): mcSum = histograms.sumRootHistos([getSumOrRootHisto(histo) for histo in filter(lambda h: h.isMC(), plot.histoMgr.getHistos())]) qcdHisto = plot.histoMgr.getHisto("QCD_Pt20_MuEnriched") qcd = getSumOrRootHisto(qcdHisto).Clone(name+"_QCDfraction") qcd.Divide(mcSum) # qcd/mcSum h = histograms.Histo(qcdHisto.getDataset(), qcd, name) h.setLegendLabel(legends.get(name, "")) self.histoMgr.appendHisto(h) self.histoMgr.forEachHisto(styles.generator()) self.histoMgr.setHistoLegendStyleAll("l")
def addCurve(self, name, label): def getHisto(dataset): tmp = self.datasets.getDataset(dataset).getDatasetRootHisto(name) #tmp.normalizeToLuminosity(46) tmp.normalizeByCrossSection() return tmp.getHistogram() signalRootHisto = getHisto("Signal") signalEff = muonAnalysis.dist2eff(signalRootHisto) signalEffValues = dataset.histoToList(signalEff) tmpHistoManager = histograms.HistoManager(self.datasets, name) tmpHistoManager.normalizeMCByCrossSection() #tmpHistoManager.normalizeMCByLuminosity() mcSum = histograms.sumRootHistos([muonAnalysis.getSumOrRootHisto(histo) for histo in filter(lambda h: h.isMC(), tmpHistoManager.getHistos())]) mcSum = muonAnalysis.dist2pass(mcSum) bkgHisto = tmpHistoManager.getHisto("Background") bkg = muonAnalysis.getSumOrRootHisto(bkgHisto).Clone(name+"_bkgfraction") bkg = muonAnalysis.dist2pass(bkg) bkg.Divide(mcSum) bkgValues = dataset.histoToList(bkg) curve = ROOT.TGraph(len(signalEffValues), array.array("d", signalEffValues), array.array("d", bkgValues)) self.histoMgr.appendHisto(histograms.HistoGraph(curve, label))