def GetRootHistos(datasetsMgr, histoList, regions, binLabels): # Definition hPathDict = GetHistoPathDict(histoList, printList=False) rhDict = {} # For-loop: All Control Regions (CR) for region in regions: # For-loop: All bins for binLabel in binLabels: # Define labels lIncl = "%s-%s" % (region, binLabel) lGenB = "%s-%s-%s" % (region, binLabel, "EWKGenuineB") lFakeB = "%s-%s-%s" % (region, binLabel, "EWKFakeB") # Get the desired histograms pIncl = plots.DataMCPlot(datasetsMgr, hPathDict[lIncl]) pGenB = plots.DataMCPlot(datasetsMgr, hPathDict[lGenB]) pFakeB = plots.DataMCPlot(datasetsMgr, hPathDict[lFakeB]) # Clone and Save the root histograms rhDict["Data-" + lIncl] = pIncl.histoMgr.getHisto( "Data").getRootHisto().Clone("Data-" + lIncl) rhDict["EWK-" + lGenB] = pGenB.histoMgr.getHisto( "EWK").getRootHisto().Clone("EWK-" + lGenB) rhDict["EWK-" + lFakeB] = pFakeB.histoMgr.getHisto( "EWK").getRootHisto().Clone("EWK-" + lFakeB) if opts.useMC: rhDict["QCD-" + lIncl] = pIncl.histoMgr.getHisto( "QCD").getRootHisto().Clone("QCD-" + lIncl) # Add EWKFakeB (MC) to QCD (MC) to get FakeB (= QCD_inclusive + EWK_fakeB) rhDict["FakeB-" + lIncl] = rhDict["QCD- " + lIncl].Clone("FakeB-" + lIncl) rhDict["FakeB-" + lIncl].Add(rhDict["EWK-" + lFakeB], +1) else: # Subtract EWKGenuineB (MC) from Data to get FakeB (= Data - EWK_genuineB) rhDict["FakeB-" + lIncl] = rhDict["Data-" + lIncl].Clone("FakeB-" + lIncl) rhDict["FakeB-" + lIncl].Add(rhDict["EWK-" + lGenB], -1) # For debugging: if 0: for k in rhDict: if "FakeB" not in k: continue fakeBResult.PrintTH1Info(rhDict[k]) return rhDict
def GetRootHistos(datasetsMgr, histoList): hPathDict = GetHistoPathDict(histoList, printList=False) rhDict = {} # For-loop: All histograms for h in histoList: inclu, genuB, fakeB = GetHistoLabelTriplet(h) pIncl = plots.DataMCPlot(datasetsMgr, hPathDict[inclu]) pGenB = plots.DataMCPlot(datasetsMgr, hPathDict[genuB]) pFakeB = plots.DataMCPlot(datasetsMgr, hPathDict[fakeB]) # Define mapping keys: "Datasets-Region-Bin-Triplet" key1 = "Data-%s" % (inclu) key2 = "EWKGenuineB-%s" % (genuB) key3 = "EWKFakeB-%s" % (fakeB) key4 = "FakeB-%s" % (inclu) # Clone and Save the root histograms rhDict[key1] = pIncl.histoMgr.getHisto("Data").getRootHisto().Clone( "Data-" + h) rhDict[key2] = pGenB.histoMgr.getHisto("EWK").getRootHisto().Clone( "EWKGenuineB-" + h) rhDict[key3] = pFakeB.histoMgr.getHisto("EWK").getRootHisto().Clone( "EWKFakeB-" + h) rhDict[key4] = pIncl.histoMgr.getHisto("Data").getRootHisto().Clone( "FakeB-" + h) rhDict[key4].Add(rhDict[key2], -1) # For debugging: if 0: for k in rhDict: if "FakeB" not in k: continue fakeBResult.PrintTH1Info(rhDict[k]) return rhDict