def refinedDataSets(dirs, dataEra, searchMode, analysis, optMode, removeTTJets): datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode) datasets.updateNAllEventsToPUWeighted() datasets.loadLuminosities() datasets.remove(filter(lambda name: "TTToHplus" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames())) if removeTTJets: datasets.remove(filter(lambda name: "TTJets_SemiLept" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "TTJets_FullLept" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "TTJets_Hadronic" in name, datasets.getAllDatasetNames())) plots.mergeRenameReorderForDataMC(datasets) datasets.merge("EWK", [ "TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson" ]) return datasets
def main(argv): interactive = True interactive = False # HISTONAME = "TauIdJets" # HISTONAME = "TauIdBtag" HISTONAME = "TauIdBveto" dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Disable batch mode here to have the interactivity (see also the line with 'raw_input') below if interactive: ROOT.gROOT.SetBatch(False) # Create all datasets from a multicrab task # datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra) datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisbaseName = "signalAnalysisInvertedTau") # 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())) # 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.2, 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) # Apply TDR style style = tdrstyle.TDRStyle() #dataMCExample(datasets) distComparison(datasets) # Script execution can be paused like this, it will continue after # user has given some input (which must include enter) if interactive: raw_input("Hit enter to continue")
def main(): if len(sys.argv) < 2: usage() dirs = [] dirs.append(sys.argv[1]) datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis) datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() plots.mergeRenameReorderForDataMC(datasets) datasets.merge("EWK", [ "TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson" ]) style = tdrstyle.TDRStyle() plot = plots.PlotBase() legends = {} name_re = re.compile("SelectedTau_pT_(?P<name>\S+)") for i,histo in enumerate(HISTONAMES): plot.histoMgr.appendHisto(purityGraph(i,datasets,histo)) name = histo match = name_re.search(histo) if match: name = match.group("name") legends["Purity%s"%i] = name plot.createFrame("purity", opts={"xmin": 40, "ymin": 0., "ymax": 1.2}) plot.frame.GetXaxis().SetTitle("tau p_{T} (GeV/c)") plot.frame.GetYaxis().SetTitle("Purity") plot.setEnergy(datasets.getEnergies()) plot.setLuminosity(datasets.getDataset("Data").getLuminosity()) plot.histoMgr.setHistoLegendLabelMany(legends) plot.setLegend(histograms.createLegend(0.6, 0.3, 0.8, 0.4)) plot.addStandardTexts() plot.draw() plot.save()
def getDatasets(multicrabPath, myDataEra): ''' def getDatasets(multicrabPath): ''' ### Get the ROOT files for all datasets, merge datasets and reorder them print "*** Obtaining datasets from: %s" % (multicrabPath) datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath, dataEra=myDataEra) ### Print PSets used in ROOT-file generation printPSet(bPrintPSet, folderName=myAnalysis+myDataEra) ### Take care of PU weighting, luminosity, signal merging etc... of the datatasets manageDatasets(datasets) return datasets
def main(): if len(sys.argv) < 2: usage() dirs = [] dirs.append(sys.argv[1]) datasets = dataset.getDatasetsFromMulticrabDirs(dirs, dataEra=dataEra, searchMode=searchMode, analysisName=analysis) datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() plots.mergeRenameReorderForDataMC(datasets) datasets.merge("EWK", ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"]) style = tdrstyle.TDRStyle() plot = plots.PlotBase() legends = {} name_re = re.compile("SelectedTau_pT_(?P<name>\S+)") for i, histo in enumerate(HISTONAMES): plot.histoMgr.appendHisto(purityGraph(i, datasets, histo)) name = histo match = name_re.search(histo) if match: name = match.group("name") legends["Purity%s" % i] = name plot.createFrame("purity", opts={"xmin": 40, "ymin": 0., "ymax": 1.2}) plot.frame.GetXaxis().SetTitle("tau p_{T} (GeV/c)") plot.frame.GetYaxis().SetTitle("Purity") plot.setEnergy(datasets.getEnergies()) plot.setLuminosity(datasets.getDataset("Data").getLuminosity()) plot.histoMgr.setHistoLegendLabelMany(legends) plot.setLegend(histograms.createLegend(0.6, 0.3, 0.8, 0.4)) plot.addStandardTexts() plot.draw() plot.save()
def refinedDataSets(dirs, dataEra, searchMode, analysis, optMode, removeTTJets): datasets = dataset.getDatasetsFromMulticrabDirs(dirs, dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode) datasets.updateNAllEventsToPUWeighted() datasets.loadLuminosities() datasets.remove( filter(lambda name: "TTToHplus" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames())) if removeTTJets: datasets.remove( filter(lambda name: "TTJets_SemiLept" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "TTJets_FullLept" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "TTJets_Hadronic" in name, datasets.getAllDatasetNames())) plots.mergeRenameReorderForDataMC(datasets) datasets.merge("EWK", ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"]) return datasets
def main(argv): # HISTONAME = "TauIdJets" # HISTONAME = "TauIdJetsCollinear" # HISTONAME = "TauIdBtag" # HISTONAME = "TauIdBvetoCollinear" # HISTONAME = "TauIdBveto" HISTONAME = "TauIdAfterCollinearCuts" dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Create all datasets from a multicrab task # datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau") #datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau") datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optimizationMode) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra) # Check multicrab consistency consistencyCheck.checkConsistencyStandalone(dirs[0],datasets,name="QCD inverted") # 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())) datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" 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() style.setOptStat(True) invertedQCD = InvertedTauID() invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity()) invertedQCD.setInfo([dataEra,searchMode,HISTONAME]) histonames = datasets.getDataset("Data").getDirectoryContent("baseline/METBaseline"+HISTONAME) bins = [] binLabels = [] for histoname in histonames: bins.append(histoname.replace("METBaseline"+HISTONAME,"")) title = datasets.getDataset("Data").getDatasetRootHisto("baseline/METBaseline"+HISTONAME+"/"+histoname).getHistogram().GetTitle() title = title.replace("METBaseline"+HISTONAME,"") title = title.replace("#tau p_{T}","taup_T") title = title.replace("#tau eta","taueta") title = title.replace("<","lt") title = title.replace(">","gt") title = title.replace("=","eq") title = title.replace("..","to") title = title.replace(".","p") title = title.replace("/","_") binLabels.append(title) print print "Histogram bins available",bins # bins = ["Inclusive"] # bins = ["taup_Tleq50","taup_Teq50to60"] print "Using bins ",bins print print "Bin labels" for i in range(len(binLabels)): line = bins[i] while len(line) < 10: line += " " line += ": "+binLabels[i] print line print for i,bin in enumerate(bins): invertedQCD.setLabel(binLabels[i]) metBase = plots.DataMCPlot(datasets, "baseline/METBaseline"+HISTONAME+"/METBaseline"+HISTONAME+bin) metInver = plots.DataMCPlot(datasets, "Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin) # Rebin before subtracting metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(5)) metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin) metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin) metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("Baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin) metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("Baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin) metBase_QCD = metBase_data.Clone("QCD") metBase_QCD.Add(metBase_EWK,-1) metInverted_QCD = metInverted_data.Clone("QCD") metInverted_QCD.Add(metInverted_EWK,-1) metInverted_data = addlabels(metInverted_data) metInverted_EWK = addlabels(metInverted_EWK) metBase_data = addlabels(metBase_data) metBase_EWK = addlabels(metBase_EWK) metInverted_QCD = addlabels(metInverted_QCD) invertedQCD.plotHisto(metInverted_data,"inverted") invertedQCD.plotHisto(metInverted_EWK,"invertedEWK") invertedQCD.plotHisto(metBase_data,"baseline") invertedQCD.plotHisto(metBase_EWK,"baselineEWK") fitOptions = "LRB" # fitOptions = "RB" # fitOptions = "IEB" # ROOT.TVirtualFitter.SetDefaultFitter("Minuit") # ROOT.TVirtualFitter.SetDefaultFitter("Minuit2") # fitOptions = "Q" # Chi2 Fit # fitOptions = "VEB" # Chi2 Fit with Minos Error # fitOptions = "IEB" # Chi2 Fit with Integral and Minos # fitOptions = "VLEB" # Likelihood Fit with Minos Error # ROOT.TVirtualFitter.SetDefaultFitter("Fumili") # ROOT.TVirtualFitter.SetDefaultFitter("Fumili2") # fitOptions = "Q" # Chi2 Fit # fitOptions = "VE" # Chi2 Fit with Minos Error # fitOptions = "IE" # Chi2 Fit with Integral and Minos # fitOptions = "VLE" # Likelihood Fit with Minos Error invertedQCD.fitEWK(metInverted_EWK,fitOptions) invertedQCD.fitEWK(metBase_EWK,fitOptions) invertedQCD.fitQCD(metInverted_QCD,fitOptions) invertedQCD.fitData(metBase_data) invertedQCD.getNormalization() invertedQCD.Summary() invertedQCD.WriteNormalizationToFile("QCDInvertedNormalizationFactors.py") invertedQCD.WriteLatexOutput("fits.tex")
def main(argv): # HISTONAME = "TauIdJets" # HISTONAME = "TauIdJetsCollinear" # HISTONAME = "TauIdBtag" # HISTONAME = "TauIdBvetoCollinear" # HISTONAME = "TauIdBveto" HISTONAME = "TauIdAfterCollinearCuts" FAKEHISTO = "OnlyEWKFakeTaus" dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Create all datasets from a multicrab task datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName="signalAnalysisInvertedTau",optimizationMode="") #no collinear #datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName="signalAnalysisInvertedTau",optimizationMode="OptQCDTailKillerLoosePlus") #collinear # Check multicrab consistency consistencyCheck.checkConsistencyStandalone(dirs[0],datasets,name="QCD inverted") # 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())) datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames())) #datasets.remove(filter(lambda name: "TTJets_SemiLept" in name, datasets.getAllDatasetNames())) #datasets.remove(filter(lambda name: "TTJets_FullLept" in name, datasets.getAllDatasetNames())) #datasets.remove(filter(lambda name: "TTJets_Hadronic" 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() style.setOptStat(True) invertedQCD = InvertedTauID() invertedQCD.setLumi(datasets.getDataset("Data").getLuminosity()) invertedQCD.setInfo([dataEra,searchMode,HISTONAME]) histonames = datasets.getDataset("Data").getDirectoryContent("baseline/METBaseline"+HISTONAME) bins = [] binLabels = [] for histoname in histonames: bins.append(histoname.replace("METBaseline"+HISTONAME,"")) title = datasets.getDataset("Data").getDatasetRootHisto("baseline/METBaseline"+HISTONAME+"/"+histoname).getHistogram().GetTitle() title = title.replace("METBaseline"+HISTONAME,"") title = title.replace("#tau p_{T}","taup_T") title = title.replace("#tau eta","taueta") title = title.replace("<","lt") title = title.replace(">","gt") title = title.replace("=","eq") title = title.replace("..","to") title = title.replace(".","p") title = title.replace("/","_") binLabels.append(title) #binLabels = bins # for this data set print print "Histogram bins available",bins # bins = ["Inclusive"] # bins = ["taup_Tleq50","taup_Teq50to60"] print "Using bins ",bins print print "Bin labels" for i in range(len(binLabels)): line = bins[i] while len(line) < 10: line += " " line += ": "+binLabels[i] print line print for i,bin in enumerate(bins): invertedQCD.setLabel(binLabels[i]) metBase = plots.DataMCPlot(datasets, "baseline/METBaseline"+HISTONAME+"/METBaseline"+HISTONAME+bin) metInver = plots.DataMCPlot(datasets, "Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin) metBase_FakeTaus = plots.DataMCPlot(datasets, "baseline/METBaseline"+HISTONAME+FAKEHISTO+"/METBaseline"+HISTONAME+FAKEHISTO+bin) metInver_FakeTaus = plots.DataMCPlot(datasets, "Inverted/METInverted"+HISTONAME+FAKEHISTO+"/METInverted"+HISTONAME+FAKEHISTO+bin) # Rebin before subtracting metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5 metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5 metBase_FakeTaus.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5 metInver_FakeTaus.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(10)) #5 metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin) metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin) metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+"/METInverted"+HISTONAME+bin) metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("baseline/METBaseLine"+HISTONAME+"/METBaseline"+HISTONAME+bin) metInverted_EWK_FakeTaus = metInver_FakeTaus.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/METInverted"+HISTONAME+FAKEHISTO+"/METInverted"+HISTONAME+FAKEHISTO+bin) metBase_EWK_FakeTaus = metBase_FakeTaus.histoMgr.getHisto("EWK").getRootHisto().Clone("baseline/METBaseLine"+HISTONAME+FAKEHISTO+"/METBaseline"+HISTONAME+FAKEHISTO+bin) metBase_QCD = metBase_data.Clone("QCD") metBase_QCD.Add(metBase_EWK,-1) metInverted_QCD = metInverted_data.Clone("QCD") metInverted_QCD.Add(metInverted_EWK,-1) metInverted_data = addlabels(metInverted_data) metInverted_EWK = addlabels(metInverted_EWK) metInverted_EWK_FakeTaus = addlabels(metInverted_EWK_FakeTaus) metBase_data = addlabels(metBase_data) metBase_EWK = addlabels(metBase_EWK) metBase_EWK_FakeTaus = addlabels(metBase_EWK_FakeTaus) metInverted_QCD = addlabels(metInverted_QCD) invertedQCD.plotHisto(metInverted_data,"inverted") invertedQCD.plotHisto(metInverted_EWK,"invertedEWK") invertedQCD.plotHisto(metBase_data,"baseline") invertedQCD.plotHisto(metBase_EWK,"baselineEWK") invertedQCD.plotHisto(metInverted_EWK_FakeTaus,"invertedEWK_FakeTaus") invertedQCD.plotHisto(metBase_EWK_FakeTaus,"baselineEWK_FakeTaus") fitOptions = "LRB" #fitOptions = "RB" #fitOptions = "IEB" invertedQCD.fitEWK(metInverted_EWK,fitOptions) invertedQCD.fitEWK(metBase_EWK,fitOptions) invertedQCD.fitQCD(metInverted_QCD,fitOptions) invertedQCD.fitData(metBase_data) invertedQCD.fitEWK_FakeTaus(metInverted_EWK_FakeTaus,fitOptions) invertedQCD.fitEWK_FakeTaus(metBase_EWK_FakeTaus,fitOptions) invertedQCD.getNormalization() invertedQCD.Summary() invertedQCD.WriteNormalizationToFile("QCDInvertedNormalizationFactors.py") invertedQCD.WriteLatexOutput("fits.tex")
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 getDatasetNames(multiCrabDir): datasets = dataset.getDatasetsFromMulticrabDirs([multiCrabDir],counters=counters) return datasets.getAllDatasetNames()
def main(): if len(sys.argv) < 2: usage() dirs = [] dirs.append(sys.argv[1]) # Read the datasets # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau") datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters) # datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra) # datasets.updateNAllEventsToPUWeighted() datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() # Take QCD from data datasetsQCD = None if QCDfromData: datasetsQCD = dataset.getDatasetsFromMulticrabCfg(cfgfile="/home/rkinnune/signalAnalysis/CMSSW_4_2_8_patch2/src/HiggsAnalysis/HeavyChHiggsToTauNu/test/multicrab_111123_132128/multicrab.cfg", counters=counters) datasetsQCD.loadLuminosities() print "QCDfromData", QCDfromData datasetsQCD.mergeData() datasetsQCD.remove(datasetsQCD.getMCDatasetNames()) datasetsQCD.rename("Data", "QCD") plots.mergeRenameReorderForDataMC(datasets) print "Int.Lumi",datasets.getDataset("Data").getLuminosity() # Remove signals other than M120 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())) datasets.merge("EWK", ["WJets", "DYJetsToLL", "SingleTop", "Diboson","TTJets"], keepSources=True) datasets.remove(filter(lambda name: "W2Jets" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "W3Jets" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "W4Jets" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_s-channel" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_t-channel" in name, datasets.getAllDatasetNames())) datasets.remove(filter(lambda name: "Hplus_taunu_tW-channel" in name, datasets.getAllDatasetNames())) datasets_lands = datasets.deepCopy() # Set the signal cross sections to the ttbar for datasets for lands # xsect.setHplusCrossSectionsToTop(datasets_lands) # Set the signal cross sections to a given BR(t->H), BR(h->taunu) xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1) # Set the signal cross sections to a value from MSSM # xsect.setHplusCrossSectionsToMSSM(datasets, tanbeta=20, mu=200) plots.mergeWHandHH(datasets) # merging of WH and HH signals must be done after setting the cross section # Apply TDR style style = tdrstyle.TDRStyle() # Create plots doPlots(datasets) # Write mt histograms to ROOT file # writeTransverseMass(datasets_lands) # Print counters doCounters(datasets)
def main(): errorBars = False dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Create all datasets from a multicrab task datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs, counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau") ## datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra) # 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()) invertedQCD.useErrorBars(errorBars) metBase = plots.DataMCPlot(datasets, "BaseLine/MET_BaseLineTauIdBvetoCollinear") metInver = plots.DataMCPlot(datasets, "Inverted/MET_InvertedTauIdBvetoCollinear") # metBase = plots.DataMCPlot(datasets, "BaseLine/MET_BaseLineTauIdJetsCollinear") # metInver = plots.DataMCPlot(datasets, "Inverted/MET_InvertedTauIdJetsCollinear") # metBase = plots.DataMCPlot(datasets, "BaseLine/MET_BaseLineTauIdBveto") # metInver = plots.DataMCPlot(datasets, "Inverted/MET_InvertedTauIdBveto") # Rebin before subtracting metBase.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(1)) metInver.histoMgr.forEachHisto(lambda h: h.getRootHisto().Rebin(1)) # metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/MET_InvertedTauIdBveto") # metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/MET_InvertedTauIdBveto") # metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBveto") # metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBveto") metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/MET_InvertedTauIdBvetoCollinear") metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/MET_InvertedTauIdBvetoCollinear") metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBvetoCollinear") metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("BaseLine/MET_BaselineTauIdBvetoCollinear") # metInverted_data = metInver.histoMgr.getHisto("Data").getRootHisto().Clone("Inverted/MET_InvertedTauIdJetsCollinear") # metInverted_EWK = metInver.histoMgr.getHisto("EWK").getRootHisto().Clone("Inverted/MET_InvertedTauIdJetsCollinear") # metBase_data = metBase.histoMgr.getHisto("Data").getRootHisto().Clone("BaseLine/MET_BaselineTauIdJetsCollinear") # metBase_EWK = metBase.histoMgr.getHisto("EWK").getRootHisto().Clone("BaseLine/MET_BaselineTauIdJetsCollinear") 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") metInverted_data.GetXaxis().SetTitle("PFMET (GeV)") invertedQCD.setLabel("BaseVsInverted") # invertedQCD.comparison(metInverted_data,metBase_data) invertedQCD.setLabel("BaseMinusEWKVsInverted") # invertedQCD.comparison(metInverted_data,metBase_QCD) invertedQCD.cutefficiency(metInverted_data,metBase_QCD)
def main(argv): dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) QCDInvertedNormalization = sort(QCDInvertedNormalizationFactors.QCDInvertedNormalization) analysis = "signalAnalysisInvertedTau" optModes = [] optModes.append("OptQCDTailKillerZeroPlus") optModes.append("OptQCDTailKillerLoosePlus") optModes.append("OptQCDTailKillerMediumPlus") optModes.append("OptQCDTailKillerTightPlus") optModes.append("OptQCDTailKillerVeryTightPlus") plot = plots.PlotBase() color = 1 for optMode in optModes: datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode) datasets.updateNAllEventsToPUWeighted() datasets.loadLuminosities() plots.mergeRenameReorderForDataMC(datasets) histonames = datasets.getDataset("Data").getDirectoryContent(HISTONAME) bins = [] for histoname in histonames: binname = histoname.replace(HISTONAME,"") if not binname == "Inclusive": bins.append(binname) for i,bin in enumerate(bins): mtplot = plots.DataMCPlot(datasets, HISTONAME+"/"+HISTONAME+bin) if i == 0: mt = mtplot.histoMgr.getHisto("Data").getRootHisto().Clone(HISTONAME+"/"+HISTONAME+bin) legendName = optMode.replace("OptQCDTailKiller","R_{BB} ") legendName = legendName.replace("Plus","") mt.SetName(legendName) mt.SetLineColor(color) mt.Scale(QCDInvertedNormalization[i]) color += 1 if color == 5: color += 1 else: h = mtplot.histoMgr.getHisto("Data").getRootHisto().Clone(HISTONAME+"/"+HISTONAME+bin) h.Scale(QCDInvertedNormalization[i]) mt.Add(h) plot.histoMgr.appendHisto(histograms.Histo(mt,mt.GetName())) style = tdrstyle.TDRStyle() plot.createFrame("mt") moveLegend={"dx": -0.15,"dy": 0.} plot.setLegend(histograms.moveLegend(histograms.createLegend(), **moveLegend)) plot.setLuminosity(datasets.getDataset("Data").getLuminosity()) plot.addStandardTexts() plot.draw() plot.save()
#dataEra = "Run2011A" #dataEra = "Run2011B" dataEra = "Run2011AB" # Go to batch mode, comment if interactive mode is wanted ROOT.gROOT.SetBatch(True) #-------------------------------------------------------------------------# # Apply TDR style style = tdrstyle.TDRStyle() # Construct the datasets datasets = dataset.getDatasetsFromMulticrabDirs( dirs, counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysis") if not mcOnly: datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() # # Construct datasets as stated in the multicrab.cfg of the execution # # directory. The returned object is of type DatasetManager. # #datasets = dataset.getDatasetsFromMulticrabCfg(counters = "qcdMeasurementMethod2Part1Counters") # #datasets.updateNAllEventsToPUWeighted() # # Construct datasets from the given list of CRAB task directories # datasets = dataset.getDatasetsFromCrabDirs(["TTToHplusBWB_M120_Fall11"]) # #datasets = dataset.getDatasetsFromCrabDirs(["TTbar_Htaunu_M80"])
mcOnly = False mcOnlyLumi = 5000 # pb #dataEra = "Run2011A" #dataEra = "Run2011B" dataEra = "Run2011AB" # Go to batch mode, comment if interactive mode is wanted ROOT.gROOT.SetBatch(True) #-------------------------------------------------------------------------# # Apply TDR style style = tdrstyle.TDRStyle() # Construct the datasets datasets = dataset.getDatasetsFromMulticrabDirs(dirs, counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysis") if not mcOnly: datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() plots.mergeRenameReorderForDataMC(datasets) # This can be used to merge datasets: #datasets.merge("TTJetsPlusWJets", ["TTJets", "WJets"], keepSources=True) # Override the data luminosity (should not be used except for testing) #datasets.getDataset("Data").setLuminosity(35) # Create the plot, the latter argument is the path to the histogram in the ROOT files
def main(): if len(sys.argv) < 2: usage() dirs = [] dirs.append(sys.argv[1]) datasets = dataset.getDatasetsFromMulticrabDirs(dirs,dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode) datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() plots.mergeRenameReorderForDataMC(datasets) datasets.merge("EWK", [ "TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson" ]) style = tdrstyle.TDRStyle() plot = plots.PlotBase() legends = {} name_re = re.compile("SelectedTau_pT_(?P<name>\S+)") for i,histo in enumerate(HISTONAMES): plot.histoMgr.appendHisto(purityGraph(i,datasets,histo)) name = histo match = name_re.search(histo) if match: name = match.group("name") legends["Purity%s"%i] = name # if "AfterMetCut" in name: # legends["Purity%s"%i] = "MET > 60 GeV" if "SelectedTau_pT_CollinearCuts" in name: legends["Purity%s"%i] = "Collinear cuts" if "AfterBtagging" in name: legends["Purity%s"%i] = "B tagging" if "AfterBveto" in name: legends["Purity%s"%i] = "B-jet veto" if "AfterBvetoPhiCuts" in name: legends["Purity%s"%i] = "B-jet veto, TailKiller" if "SelectedTau_pT_BackToBackCuts" in name: legends["Purity%s"%i] = "BackToBack cuts" plot.createFrame("purityLoose", opts={"xmin": 40, "xmax": 160, "ymin": 0., "ymax": 1.05}) plot.frame.GetXaxis().SetTitle("p_{T}^{#tau jet} (GeV/c)") plot.frame.GetYaxis().SetTitle("QCD purity") # plot.setEnergy(datasets.getEnergies()) plot.histoMgr.setHistoLegendLabelMany(legends) plot.setLegend(histograms.createLegend(0.3, 0.35, 0.6, 0.5)) # histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18) histograms.addText(0.35, 0.28, "BackToBack cuts: TightPlus", 20) histograms.addText(0.35, 0.22, "2011B", 20) histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18) # histograms.addText(0.2, 0.3, "TailKiller: TightPlus", 18) plot.setEnergy(datasets.getEnergies()) plot.setLuminosity(datasets.getDataset("Data").getLuminosity()) plot.addStandardTexts() plot.draw() plot.save()
def main(): ### Get the ROOT files for all datasets, merge datasets and reorder them print "*** Obtaining ROOT files from:\n %s" % (multicrabPath) datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath, dataEra="Run2011A") printPSet(bPrintPSet, folderName="signalAnalysisRun2011A") print "*** Calling datasets.updateNAllEventsToPUWeighted():" datasets.updateNAllEventsToPUWeighted() print "*** Loading luminosities" datasets.loadLuminosities() print "*** Calling plots.mergeRenameReorderForDataMC(datasets):" plots.mergeRenameReorderForDataMC(datasets) if mcOnly: datasets.remove(datasets.getDataDatasetNames()) histograms.cmsTextMode = histograms.CMSMode.SIMULATION ### Merge desirable datasets if bMergeEwk: print "*** Merging EWK MC" datasets.merge("EWK MC", ["WJets", "TTJets", "DYJetsToLL", "SingleTop", "Diboson"]) plots._plotStyles["EWK MC"] = styles.ttStyle #plots._plotStyles["EWK"] = styles.getEWKStyle() ### Remove signals other than M120 print "*** Removing all signal except M120" 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())) datasets.remove(filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames())) ### Setup style print "*** Setting up style" styleGenerator = styles.generator(fill=True) style = tdrstyle.TDRStyle() histograms.createLegend.moveDefaults(dx=-0.05, dy=+0.0) # Set the signal cross sections to a given BR(t->H), BR(h->taunu) print "*** Setting the signal cross sections to a given BR(t->bH+) and BR(H+ -> tau+ nu)" xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1) ### Merge signals into one histo print "*** Merging WH and HH signals into one histogram" plots.mergeWHandHH(datasets) # merging of WH and HH signals must be done after setting the cross section ### Print desirable information here print "*** Available datasets:\n %s" % (datasets.getAllDatasetNames()) if mcOnly: print "*** Integrated Luminosity:\n %s (pb)" % (mcOnlyLumi) else: print "*** Integrated Luminosity:\n %s (pb)" % (datasets.getDataset("Data").getLuminosity()) ### Do all plots defined in histoDict function doPlots(datasets, histoDict, JetSelectionCuts, SaveExtension = "JetSelection") #doPlots(datasets, histoDict, MtCut, SaveExtension = "Mt_"+MtCutValue.replace(" >= ","GE").replace(" <= ","LE")) #doPlots(datasets, histoDict, MetBtagDeltaPhiCuts, SaveExtension = "MetBtagDeltaPhi") #doPlots(datasets, histoDict, MetBtagDeltaPhiMtCuts, SaveExtension = "MetBtagDeltaPhiMt_"+MtCutValue.replace(" >= ","GE").replace(" <= ","LE".replace(".", "")) #doPlots(datasets, histoDict, MetBtagDeltaPhiPlanCuts, SaveExtension = "MetBtagDeltaPhi_"+PlanarityCut.replace(" >= ","GE").replace(" <= ","LE".replace(".", "")) #doPlots(datasets, histoDict, MetBtagDeltaPhiCircCuts, SaveExtension = "MetBtagDeltaPhi_"+CircularityCut.replace(" >= ","GE").replace(" <= ","LE".replace(".", "")) #doPlots(datasets, histoDict, MetBtagDeltaPhiSpherCuts, SaveExtension = "MetBtagDeltaPhi_"+SphericityCut.replace(" >= ","GE").replace(" <= ","LE".replace(".", "")) #doPlots(datasets, histoDict, MetBtagDeltaPhiAplanCuts, SaveExtension = "MetBtagDeltaPhi_"+AplanarityCut.replace(" >= ","_GE").replace(" <= ","_LE").replace(".", "")) #doPlots(datasets, histoDict, MetBtagDeltaPhiAlphaTCuts, SaveExtension = "MetBtagDeltaPhi_"+AlphaTCut.replace(" >= ","_GE").replace(" <= ","_LE").replace(".", "")) ### Keep session alive (otherwise canvases close automatically) if bBatchMode == False: raw_input("*** Press \"any\" key to exit pyROOT: ")
def main(): ### Get the ROOT files for all datasets, merge datasets and reorder them print "*** Obtaining ROOT files from:\n %s" % (multicrabPath) datasets = dataset.getDatasetsFromMulticrabDirs(multicrabPath, dataEra="Run2011A") printPSet(bPrintPSet, folderName="signalAnalysisRun2011A") print "*** Calling datasets.updateNAllEventsToPUWeighted():" datasets.updateNAllEventsToPUWeighted() print "*** Loading luminosities" datasets.loadLuminosities() print "*** Calling plots.mergeRenameReorderForDataMC(datasets):" plots.mergeRenameReorderForDataMC(datasets) if mcOnly: datasets.remove(datasets.getDataDatasetNames()) histograms.cmsTextMode = histograms.CMSMode.SIMULATION ### Merge desirable datasets if bMergeEwk: print "*** Merging EWK MC" datasets.merge( "EWK MC", ["WJets", "TTJets", "DYJetsToLL", "SingleTop", "Diboson"]) plots._plotStyles[ "EWK MC"] = styles.ttStyle #plots._plotStyles["EWK"] = styles.getEWKStyle() ### Remove signals other than M120 print "*** Removing all signal except M120" 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())) datasets.remove( filter(lambda name: "HplusTB" in name, datasets.getAllDatasetNames())) ### Setup style print "*** Setting up style" styleGenerator = styles.generator(fill=True) style = tdrstyle.TDRStyle() histograms.createLegend.moveDefaults(dx=-0.05, dy=+0.0) # Set the signal cross sections to a given BR(t->H), BR(h->taunu) print "*** Setting the signal cross sections to a given BR(t->bH+) and BR(H+ -> tau+ nu)" xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1) ### Merge signals into one histo print "*** Merging WH and HH signals into one histogram" plots.mergeWHandHH( datasets ) # merging of WH and HH signals must be done after setting the cross section ### Print desirable information here print "*** Available datasets:\n %s" % (datasets.getAllDatasetNames()) if mcOnly: print "*** Integrated Luminosity:\n %s (pb)" % (mcOnlyLumi) else: print "*** Integrated Luminosity:\n %s (pb)" % ( datasets.getDataset("Data").getLuminosity()) ### Do all plots defined in histoDict function doPlots(datasets, histoDict, JetSelectionCuts, SaveExtension="JetSelection_Validation") #doPlots(datasets, histoDict, MetBtagDeltaPhiCuts, SaveExtension = "MetBtagDeltaPhi") #doPlots(datasets, histoDict, MetBtagDeltaPhiMtCuts, SaveExtension = "MetBtagDeltaPhiMt") #doPlots(datasets, histoDict, MtCut, SaveExtension = "Mt") #doPlots(datasets, histoDict, MetBtagDeltaPhiCircCuts, SaveExtension = "MetBtagDeltaPhiCirc") #doPlots(datasets, histoDict, MetBtagDeltaPhiSpherCuts, SaveExtension = "MetBtagDeltaPhiSpher") #doPlots(datasets, histoDict, MetBtagDeltaPhiAplanCuts, SaveExtension = "MetBtagDeltaPhiAplan") #doPlots(datasets, histoDict, MetBtagDeltaPhiPlanCuts, SaveExtension = "MetBtagDeltaPhiPlan") #doPlots(datasets, histoDict, MetBtagDeltaPhiAlphaTCuts, SaveExtension = "MetBtagDeltaPhiAlphaT") ### Keep session alive (otherwise canvases close automatically) if bBatchMode == False: raw_input("*** Press \"any\" key to exit pyROOT: ")
def getDatasetNames(multiCrabDir): datasets = dataset.getDatasetsFromMulticrabDirs([multiCrabDir], counters=counters) return datasets.getAllDatasetNames()
def main(): if len(sys.argv) < 2: usage() dirs = [] dirs.append(sys.argv[1]) # Read the datasets # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra, analysisBaseName="signalAnalysisInvertedTau") datasets = dataset.getDatasetsFromMulticrabDirs(dirs, dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters) # datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters, dataEra=dataEra) # datasets.updateNAllEventsToPUWeighted() datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() # Take QCD from data datasetsQCD = None if QCDfromData: datasetsQCD = dataset.getDatasetsFromMulticrabCfg( cfgfile= "/home/rkinnune/signalAnalysis/CMSSW_4_2_8_patch2/src/HiggsAnalysis/HeavyChHiggsToTauNu/test/multicrab_111123_132128/multicrab.cfg", counters=counters) datasetsQCD.loadLuminosities() print "QCDfromData", QCDfromData datasetsQCD.mergeData() datasetsQCD.remove(datasetsQCD.getMCDatasetNames()) datasetsQCD.rename("Data", "QCD") plots.mergeRenameReorderForDataMC(datasets) print "Int.Lumi", datasets.getDataset("Data").getLuminosity() # Remove signals other than M120 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())) datasets.merge("EWK", ["WJets", "DYJetsToLL", "SingleTop", "Diboson", "TTJets"], keepSources=True) datasets.remove( filter(lambda name: "W2Jets" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "W3Jets" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "W4Jets" in name, datasets.getAllDatasetNames())) datasets.remove( filter(lambda name: "Hplus_taunu_s-channel" in name, datasets.getAllDatasetNames())) datasets_lands = datasets.deepCopy() # Set the signal cross sections to the ttbar for datasets for lands # xsect.setHplusCrossSectionsToTop(datasets_lands) # Set the signal cross sections to a given BR(t->H), BR(h->taunu) xsect.setHplusCrossSectionsToBR(datasets, br_tH=0.01, br_Htaunu=1) # Set the signal cross sections to a value from MSSM # xsect.setHplusCrossSectionsToMSSM(datasets, tanbeta=20, mu=200) plots.mergeWHandHH( datasets ) # merging of WH and HH signals must be done after setting the cross section # Apply TDR style style = tdrstyle.TDRStyle() # Create plots doPlots(datasets) # Write mt histograms to ROOT file # writeTransverseMass(datasets_lands) # Print counters doCounters(datasets)
def main(): if len(sys.argv) < 2: usage() dirs = [] dirs.append(sys.argv[1]) datasets = dataset.getDatasetsFromMulticrabDirs(dirs, dataEra=dataEra, searchMode=searchMode, analysisName=analysis, optimizationMode=optMode) datasets.loadLuminosities() datasets.updateNAllEventsToPUWeighted() plots.mergeRenameReorderForDataMC(datasets) datasets.merge("EWK", ["TTJets", "WJets", "DYJetsToLL", "SingleTop", "Diboson"]) style = tdrstyle.TDRStyle() plot = plots.PlotBase() legends = {} name_re = re.compile("SelectedTau_pT_(?P<name>\S+)") for i, histo in enumerate(HISTONAMES): plot.histoMgr.appendHisto(purityGraph(i, datasets, histo)) name = histo match = name_re.search(histo) if match: name = match.group("name") legends["Purity%s" % i] = name # if "AfterMetCut" in name: # legends["Purity%s"%i] = "MET > 60 GeV" if "SelectedTau_pT_CollinearCuts" in name: legends["Purity%s" % i] = "Collinear cuts" if "AfterBtagging" in name: legends["Purity%s" % i] = "B tagging" if "AfterBveto" in name: legends["Purity%s" % i] = "B-jet veto" if "AfterBvetoPhiCuts" in name: legends["Purity%s" % i] = "B-jet veto, TailKiller" if "SelectedTau_pT_BackToBackCuts" in name: legends["Purity%s" % i] = "BackToBack cuts" plot.createFrame("purityLoose", opts={ "xmin": 40, "xmax": 160, "ymin": 0., "ymax": 1.05 }) plot.frame.GetXaxis().SetTitle("p_{T}^{#tau jet} (GeV/c)") plot.frame.GetYaxis().SetTitle("QCD purity") # plot.setEnergy(datasets.getEnergies()) plot.histoMgr.setHistoLegendLabelMany(legends) plot.setLegend(histograms.createLegend(0.3, 0.35, 0.6, 0.5)) # histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18) histograms.addText(0.35, 0.28, "BackToBack cuts: TightPlus", 20) histograms.addText(0.35, 0.22, "2011B", 20) histograms.addText(0.2, 0.3, "TailKiller: MediumPlus", 18) # histograms.addText(0.2, 0.3, "TailKiller: TightPlus", 18) plot.setEnergy(datasets.getEnergies()) plot.setLuminosity(datasets.getDataset("Data").getLuminosity()) plot.addStandardTexts() plot.draw() plot.save()
def main(argv): interactive = True interactive = False # HISTONAME = "TauIdJets" # HISTONAME = "TauIdBtag" HISTONAME = "TauIdBveto" dirs = [] if len(sys.argv) < 2: usage() dirs.append(sys.argv[1]) # Disable batch mode here to have the interactivity (see also the line with 'raw_input') below if interactive: ROOT.gROOT.SetBatch(False) # Create all datasets from a multicrab task # datasets = dataset.getDatasetsFromMulticrabCfg(counters=counters) # datasets = dataset.getDatasetsFromMulticrabDirs(dirs,counters=counters, dataEra=dataEra) datasets = dataset.getDatasetsFromMulticrabDirs( dirs, counters=counters, dataEra=dataEra, analysisbaseName="signalAnalysisInvertedTau") # 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())) # 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.2, 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) # Apply TDR style style = tdrstyle.TDRStyle() #dataMCExample(datasets) distComparison(datasets) # Script execution can be paused like this, it will continue after # user has given some input (which must include enter) if interactive: raw_input("Hit enter to continue")
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 )