def main(): if len(sys.argv) < 2: usage() # HISTONAME = "METInvertedTauIdAfterJets" HISTONAME = "METInvertedTauIdAfterCollinearCuts" # HISTONAME = "MET_InvertedTauIdBveto" # HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag" # HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag" # HISTONAME = "MTInvertedTauIdJet" # HISTONAME = "MTInvertedTauIdPhi" invertedhisto = HISTONAME baselinehisto = HISTONAME.replace("Inverted", "BaseLine") dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Create all datasets from a multicrab task #datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters) datasets = dataset.getDatasetsFromMulticrabDirs(dirs, dataEra=dataEra, searchMode=searchMode, analysisName=analysis) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau" ) # As we use weighted counters for MC normalisation, we have to # As we use weighted counters for MC normalisation, we have to # update the all event count to a separately defined value because # the analysis job uses skimmed pattuple as an input datasets.updateNAllEventsToPUWeighted() # Read integrated luminosities of data datasets from lumi.json datasets.loadLuminosities() # Include only 120 mass bin of HW and HH datasets datasets.remove( filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames())) # Default merging nad ordering of data and MC datasets # All data datasets to "Data" # All QCD datasets to "QCD" # All single top datasets to "SingleTop" # WW, WZ, ZZ to "Diboson" plots.mergeRenameReorderForDataMC(datasets) # Set BR(t->H) to 0.05, keep BR(H->tau) in 1 xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1) # Merge WH and HH datasets to one (for each mass bin) # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX" plots.mergeWHandHH(datasets) datasets.merge("EWK", ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"]) # Apply TDR style style = tdrstyle.TDRStyle() invertedQCD = InvertedTauID() invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity()) if ReBinning: rebinfactor = 1.3 histobins = [] histobins.append(0) histobins.append(1) i = 1 while histobins[len(histobins) - 1] < 400: edge = histobins[i] + (histobins[i] - histobins[i - 1]) * rebinfactor histobins.append(edge) i += 1 print histobins # metBase_data = metBase_data.Rebin(len(histobins)-1, metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/"+invertedhisto) "",array.array("d", histobins)) metInverted_data = metInverted_data.Rebin( len(histobins) - 1, "", array.array("d", histobins)) metBase_EWK = metBase_EWK.Rebin( len(histobins) - 1, "", array.array("d", histobins)) metInverted_EWK = metInverted_EWK.Rebin( len(histobins) - 1, "", array.array("d", histobins)) normData, normEWK = normalisation() metInverted = [] metBaseline = [] metBaselineQCD = [] for ptbin in ptbins: ## inverted met_tmp = plots.PlotBase([ datasets.getDataset("Data").getDatasetRootHisto( "Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts" + ptbin) ]) #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) met = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone() met.Scale(normData[ptbin]) metEWK_tmp = plots.PlotBase([ datasets.getDataset("EWK").getDatasetRootHisto( "Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts" + ptbin) ]) #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) metEWK_tmp.histoMgr.normalizeMCToLuminosity( datasets.getDataset("Data").getLuminosity()) metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metEWK = metEWK_tmp.histoMgr.getHisto("EWK").getRootHisto().Clone() metEWK.Scale(normEWK[ptbin]) met.Add(metEWK, -1) metInverted.append(met) ## baseline met_tmp = plots.PlotBase([ datasets.getDataset("Data").getDatasetRootHisto( "baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts" + ptbin) ]) #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metbaseline = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone() metEWK_tmp = plots.PlotBase([ datasets.getDataset("EWK").getDatasetRootHisto( "baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts" + ptbin) ]) #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) metEWK_tmp.histoMgr.normalizeMCToLuminosity( datasets.getDataset("Data").getLuminosity()) metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metEWKbaseline = metEWK_tmp.histoMgr.getHisto( "EWK").getRootHisto().Clone() metBaseline.append(metbaseline) metbaseline.Add(metEWKbaseline, -1) metBaselineQCD.append(metbaseline) metInverted_data = metInverted[0].Clone("met") metInverted_data.SetName("met") metInverted_data.SetTitle("Inverted tau ID") metInverted_data.Reset() for histo in metInverted: metInverted_data.Add(histo) metBaseline_data = metBaseline[0].Clone("met") metBaseline_data.SetName("met") metBaseline_data.SetTitle("baseline tau ID") metBaseline_data.Reset() for histo in metBaseline: metBaseline_data.Add(histo) metBaseline_QCD = metBaselineQCD[0].Clone("met") metBaseline_QCD.SetName("met") metBaseline_QCD.SetTitle("baseline tau ID") metBaseline_QCD.Reset() for histo in metBaselineQCD: metBaseline_QCD.Add(histo) #metBase_data.SetTitle("Data: BaseLine TauID") #metInverted_data.SetTitle("Data: Inverted TauID") #metBase_QCD = metBase_data.Clone("QCD") #metBase_QCD.Add(metBase_EWK,-1) #metBase_QCD.SetTitle("Data - EWK MC: BaseLine TauID") invertedQCD.setLabel("BaseVsInverted") invertedQCD.comparison(metInverted_data, metBaseline_data) invertedQCD.setLabel("BaseMinusEWKVsInverted") invertedQCD.comparison(metInverted_data, metBaseline_QCD) invertedQCD.setLabel("McVsInverted") # invertedQCD.comparison(metInverted_data,metInverted_MC) invertedQCD.setLabel("EfficiencyBaseMinusEWKVsInverted") invertedQCD.cutefficiency(metInverted_data, metBaseline_QCD)
def main(): # Create all datasets from a multicrab task datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters) # Read integrated luminosities of data datasets from lumi.json datasets.loadLuminosities() # Include only 120 mass bin of HW and HH datasets datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames())) # Default merging nad ordering of data and MC datasets # All data datasets to "Data" # All QCD datasets to "QCD" # All single top datasets to "SingleTop" # WW, WZ, ZZ to "Diboson" plots.mergeRenameReorderForDataMC(datasets) # Set BR(t->H) to 0.05, keep BR(H->tau) in 1 xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1) # Merge WH and HH datasets to one (for each mass bin) # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX" plots.mergeWHandHH(datasets) ttjets2 = datasets.getDataset("TTJets").deepCopy() ttjets2.setCrossSection(ttjets2.getCrossSection()-datasets.getDataset("TTToHplus_M120").getCrossSection()) print "Set TTJets2 cross section to %f" % ttjets2.getCrossSection() ttjets2.setName("TTJets2") datasets.append(ttjets2) datasets.merge("EWKnott", [ "WJets", "DYJetsToLL", "SingleTop", "Diboson" ]) tmp = datasets.getDataset("EWKnott").deepCopy() tmp.setName("EWKnott2") datasets.append(tmp) datasets.merge("EWK", [ "EWKnott", "TTJets" ]) datasets.merge("EWKS", [ "EWKnott2", "TTJets2", "TTToHplus_M120", ]) # Apply TDR style style = tdrstyle.TDRStyle() invertedQCD = InvertedTauID() metBase = plots.DataMCPlot(datasets, analysis+"/MET_BaseLineTauIdJets") metInver = plots.DataMCPlot(datasets, analysis+"/MET_InvertedTauIdJets") # Rebin before subtracting metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(20)) metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(20)) metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone(analysis+"/MET_InvertedTauIdJets") metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/MET_InvertedTauIdJets") metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone(analysis+"/MET_BaselineTauIdJets") metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/MET_BaselineTauIdJets") metBase_EWKS = metBase.histoMgr.getHisto("EWKS").getRootHisto().Clone(analysis+"/MET_BaselineTauIdJets") metBase_QCD = metBase_data.Clone("QCD") metBase_QCD.Add(metBase_EWK,-1) metBase_EWK.SetTitle("MC EWK") metBase_EWKS.SetTitle("MC EWK + Signal") invertedQCD.setLabel("EWK_vs_SEWK") invertedQCD.comparison(metBase_EWK,metBase_EWKS,0) invertedQCD.setLabel("EWK_vs_SEWK_Normalized") invertedQCD.comparison(metBase_EWK,metBase_EWKS,1) invertedQCD.setLabel("InvData") invertedQCD.fitQCD(metInverted_data) invertedQCD.setLabel("EWK") invertedQCD.fitEWK(metBase_EWK) invertedQCD.fitData(metBase_data) normalizationWithEWK = invertedQCD.getNormalization() invertedQCD.setLabel("EWKS") invertedQCD.fitEWK(metBase_EWKS) invertedQCD.fitData(metBase_data) normalizationWithEWKS = invertedQCD.getNormalization() print "Difference Signal vs no signal in EWK fit",(normalizationWithEWKS - normalizationWithEWK)/normalizationWithEWK
def main(): if len(sys.argv) < 2: usage() # HISTONAME = "METInvertedTauIdAfterJets" HISTONAME = "METInvertedTauIdAfterCollinearCuts" # HISTONAME = "MET_InvertedTauIdBveto" # HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag" # HISTONAME = "METInvertedTauIdAfterCollinearCutsPlusBtag" # HISTONAME = "MTInvertedTauIdJet" # HISTONAME = "MTInvertedTauIdPhi" invertedhisto = HISTONAME baselinehisto = HISTONAME.replace("Inverted","BaseLine") dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Create all datasets from a multicrab task #datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters) datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau" ) # As we use weighted counters for MC normalisation, we have to # As we use weighted counters for MC normalisation, we have to # update the all event count to a separately defined value because # the analysis job uses skimmed pattuple as an input datasets.updateNAllEventsToPUWeighted() # Read integrated luminosities of data datasets from lumi.json datasets.loadLuminosities() # Include only 120 mass bin of HW and HH datasets datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames())) # Default merging nad ordering of data and MC datasets # All data datasets to "Data" # All QCD datasets to "QCD" # All single top datasets to "SingleTop" # WW, WZ, ZZ to "Diboson" plots.mergeRenameReorderForDataMC(datasets) # Set BR(t->H) to 0.05, keep BR(H->tau) in 1 xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1) # Merge WH and HH datasets to one (for each mass bin) # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX" plots.mergeWHandHH(datasets) datasets.merge("EWK", [ "TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson" ]) # Apply TDR style style = tdrstyle.TDRStyle() invertedQCD = InvertedTauID() invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity()) if ReBinning: rebinfactor = 1.3 histobins = [] histobins.append(0) histobins.append(1) i = 1 while histobins[len(histobins)-1] < 400: edge = histobins[i] + (histobins[i]-histobins[i-1])*rebinfactor histobins.append(edge) i += 1 print histobins # metBase_data = metBase_data.Rebin(len(histobins)-1, metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/"+invertedhisto) "",array.array("d", histobins)) metInverted_data = metInverted_data.Rebin(len(histobins)-1,"",array.array("d", histobins)) metBase_EWK = metBase_EWK.Rebin(len(histobins)-1,"",array.array("d", histobins)) metInverted_EWK = metInverted_EWK.Rebin(len(histobins)-1,"",array.array("d", histobins)) normData,normEWK=normalisation() metInverted = [] metBaseline = [] metBaselineQCD = [] for ptbin in ptbins: ## inverted met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts"+ptbin)]) #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) met = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone() met.Scale(normData[ptbin]) metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/METInvertedTauIdAfterCollinearCuts/METInvertedTauIdAfterCollinearCuts"+ptbin)]) #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) metEWK_tmp.histoMgr.normalizeMCToLuminosity(datasets.getDataset("Data").getLuminosity()) metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metEWK = metEWK_tmp.histoMgr.getHisto("EWK").getRootHisto().Clone() metEWK.Scale(normEWK[ptbin]) met.Add(metEWK, -1) metInverted.append(met) ## baseline met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts"+ptbin)]) #met_tmp = plots.PlotBase([datasets.getDataset("Data").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) met_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metbaseline = met_tmp.histoMgr.getHisto("Data").getRootHisto().Clone() metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("baseline/METBaselineTauIdAfterCollinearCuts/METBaselineTauIdAfterCollinearCuts"+ptbin)]) #metEWK_tmp = plots.PlotBase([datasets.getDataset("EWK").getDatasetRootHisto("Inverted/"+invertedhisto+ptbin)]) metEWK_tmp.histoMgr.normalizeMCToLuminosity(datasets.getDataset("Data").getLuminosity()) metEWK_tmp.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metEWKbaseline = metEWK_tmp.histoMgr.getHisto("EWK").getRootHisto().Clone() metBaseline.append(metbaseline) metbaseline.Add(metEWKbaseline, -1) metBaselineQCD.append(metbaseline) metInverted_data = metInverted[0].Clone("met") metInverted_data.SetName("met") metInverted_data.SetTitle("Inverted tau ID") metInverted_data.Reset() for histo in metInverted: metInverted_data.Add(histo) metBaseline_data = metBaseline[0].Clone("met") metBaseline_data.SetName("met") metBaseline_data.SetTitle("baseline tau ID") metBaseline_data.Reset() for histo in metBaseline: metBaseline_data.Add(histo) metBaseline_QCD = metBaselineQCD[0].Clone("met") metBaseline_QCD .SetName("met") metBaseline_QCD.SetTitle("baseline tau ID") metBaseline_QCD.Reset() for histo in metBaselineQCD: metBaseline_QCD.Add(histo) #metBase_data.SetTitle("Data: BaseLine TauID") #metInverted_data.SetTitle("Data: Inverted TauID") #metBase_QCD = metBase_data.Clone("QCD") #metBase_QCD.Add(metBase_EWK,-1) #metBase_QCD.SetTitle("Data - EWK MC: BaseLine TauID") invertedQCD.setLabel("BaseVsInverted") invertedQCD.comparison(metInverted_data,metBaseline_data) invertedQCD.setLabel("BaseMinusEWKVsInverted") invertedQCD.comparison(metInverted_data,metBaseline_QCD) invertedQCD.setLabel("McVsInverted") # invertedQCD.comparison(metInverted_data,metInverted_MC) invertedQCD.setLabel("EfficiencyBaseMinusEWKVsInverted") invertedQCD.cutefficiency(metInverted_data,metBaseline_QCD )
def main(): # Create all datasets from a multicrab task datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters) # Read integrated luminosities of data datasets from lumi.json datasets.loadLuminosities() # Include only 120 mass bin of HW and HH datasets datasets.remove(filter(lambda name: "TTToHplus" in name and not "M120" in name, datasets.getAllDatasetNames())) # Default merging nad ordering of data and MC datasets # All data datasets to "Data" # All QCD datasets to "QCD" # All single top datasets to "SingleTop" # WW, WZ, ZZ to "Diboson" plots.mergeRenameReorderForDataMC(datasets) # Set BR(t->H) to 0.05, keep BR(H->tau) in 1 xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.05, br_Htaunu=1) # Merge WH and HH datasets to one (for each mass bin) # TTToHplusBWB_MXXX and TTToHplusBHminusB_MXXX to "TTToHplus_MXXX" plots.mergeWHandHH(datasets) datasets.merge("EWK", [ "TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson" ]) # Apply TDR style style = tdrstyle.TDRStyle() invertedQCD = InvertedTauID() invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity()) metBase = plots.DataMCPlot(datasets, analysis+"/MET_BaseLineTauIdJets") metInver = plots.DataMCPlot(datasets, analysis+"/MET_InvertedTauIdJets") # Rebin before subtracting metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone(analysis+"/MET_InvertedTauIdJets") metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/MET_InvertedTauIdJets") metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone(analysis+"/MET_BaselineTauIdJets") metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone(analysis+"/MET_BaselineTauIdJets") metBase_data.SetTitle("Data: BaseLine TauID") metInverted_data.SetTitle("Data: Inverted TauID") metBase_QCD = metBase_data.Clone("QCD") metBase_QCD.Add(metBase_EWK,-1) metBase_QCD.SetTitle("Data - EWK MC: BaseLine TauID") invertedQCD.setLabel("BaseVsInverted") invertedQCD.comparison(metInverted_data,metBase_data) invertedQCD.setLabel("BaseMinusEWKVsInverted") invertedQCD.comparison(metInverted_data,metBase_QCD) invertedQCD.cutefficiency(metInverted_data,metBase_QCD)