def extract_MET(f_tt, f_qcd, f_wjet): # get trees from files t_tt = f_tt.Get("Delphes") t_qcd = f_qcd.Get("Delphes") t_wjet = f_wjet.Get("Delphes") # get number of entries tt_n_entries = t_tt.GetEntries() qcd_n_entries = t_qcd.GetEntries() wjet_n_entries = t_wjet.GetEntries() # define leaves var_tt = "MissingET.MET" var_qcd = "MissingET.MET" var_wjet = "MissingET.MET" leaf_tt = t_tt.GetLeaf(var_tt) leaf_qcd = t_qcd.GetLeaf(var_qcd) leaf_wjet = t_wjet.GetLeaf(var_wjet) # create the histograms MET_tt = Hist(MET_NBINS, MET_NLO, MET_NHI, title='MET_tt', legendstyle='L') MET_qcd = Hist(MET_NBINS, MET_NLO, MET_NHI, title='MET_qcd', legendstyle='L') MET_wjet = Hist(MET_NBINS, MET_NLO, MET_NHI, title='MET_wjet', legendstyle='L') # FILLING THE TREE fill_MET_tree(tt_n_entries, t_tt, leaf_tt, MET_tt) fill_MET_tree(qcd_n_entries, t_qcd, leaf_qcd, MET_qcd) fill_MET_tree(wjet_n_entries, t_wjet, leaf_wjet, MET_wjet) #set line colors MET_tt.SetLineColor('blue') MET_qcd.SetLineColor('green') MET_wjet.SetLineColor('red') #begin drawing stuff c1 = Canvas() MET_qcd.SetStats(0) MET_qcd.Draw('HIST') MET_tt.Draw('HIST SAME') MET_wjet.Draw('HIST SAME') #make legend l1 = Legend([MET_tt, MET_qcd, MET_wjet], textfont=42, textsize=.03) l1.Draw() #save as pdf c1.SaveAs("../plots/MET_plots/MET.pdf") #make the plots wait on screen wait(True)
def plotResults(variable, data, templates, results): resCan = Canvas() leg = Legend(nTemplates + 2) data.Draw('PE') leg.AddEntry(data, style='LEP') nBins = len(inputTemplates[variable]['data'][whichBinFromFile]) h_tSumAfter = Hist(nBins, 0, nBins, title='after_' + variable) if useT1: plotTemplateAfter(templates[tNames['t1']], results[tNames['t1']][0], resCan, leg, h_tSumAfter) pass if useT2: plotTemplateAfter(templates[tNames['t2']], results[tNames['t2']][0], resCan, leg, h_tSumAfter) pass if useT3: plotTemplateAfter(templates[tNames['t3']], results[tNames['t3']][0], resCan, leg, h_tSumAfter) pass if useT4: plotTemplateAfter(templates[tNames['t4']], results[tNames['t4']][0], resCan, leg, h_tSumAfter) pass leg.Draw() h_tSumAfter.SetLineColor(2) h_tSumAfter.SetLineStyle(7) h_tSumAfter.SetMarkerSize(0) h_tSumAfter.Draw('SAME HIST') resCan.Update() return resCan, h_tSumAfter
def makeDiscr(discr_dict, outfile, xtitle="discriminator", nbins=30, x_min=0, x_max=1): c = ROOT.TCanvas("c", "c", 800, 500) ROOT.gStyle.SetOptStat(0) ROOT.gPad.SetMargin(0.15, 0.1, 0.2, 0.1) #ROOT.gPad.SetLogy(1) #ROOT.gPad.SetGrid(1,1) ROOT.gStyle.SetGridColor(17) l = TLegend(0.17, 0.75, 0.88, 0.88) l.SetTextSize(0.055) l.SetBorderSize(0) l.SetFillStyle(0) l.SetNColumns(2) colors = [2, 4, 8, ROOT.kCyan + 2] counter = 0 for leg, discr in discr_dict.iteritems(): a = Hist(nbins, x_min, x_max) #fill_hist_with_ndarray(a, discr) a.fill_array(discr) a.SetLineColor(colors[counter]) a.SetLineWidth(2) a.GetXaxis().SetTitle(xtitle) a.GetXaxis().SetLabelSize(0.05) a.GetXaxis().SetTitleSize(0.05) a.GetXaxis().SetTitleOffset(1.45) a.GetYaxis().SetTitle("a.u.") a.GetYaxis().SetTickSize(0) a.GetYaxis().SetLabelSize(0) a.GetYaxis().SetTitleSize(0.06) a.GetYaxis().SetTitleOffset(0.9) a.Scale(1. / a.Integral()) #a.GetYaxis().SetRangeUser(0.00001,100) a.GetYaxis().SetRangeUser(0, 0.2) if counter == 0: a.draw("hist") else: a.draw("same hist") l.AddEntry(a, leg, "l") counter += 1 l.Draw("same") c.SaveAs(outfile)
res = ROOT.TMath.KolmogorovProb(dn * sqrt(n)) return dn if __name__ == '__main__': """ this is an example of drawing a quantile-quantile plot with confidential level (CL) band by Zhiyi Liu, [email protected] """ ROOT.gROOT.SetStyle("Plain") ROOT.gStyle.SetOptStat(0) can = Canvas(name="can", title="can", width=600, height=450) rand = ROOT.TRandom3() h1 = Hist(100, -5, 5, name="h1", title="Histogram 1") h1.Sumw2() h1.SetLineColor(ROOT.kRed) h2 = Hist(100, -5, 5, name="h2", title="Histogram 2") h2.SetLineColor(ROOT.kBlue) for ievt in xrange(10000): #some test histograms: #1. let 2 histograms screwed #h1.Fill(rand.Gaus(0.5, 0.8)) #h2.Fill(rand.Gaus(0, 1)) #2. long tail and short tail h1.Fill(rand.Gaus(0, 0.8)) h2.Fill(rand.Gaus(0, 1)) #hs = ROOT.THStack("hs", "2 example distributions") #hs.Add(h1)
def extract_Electron(f_tt, f_qcd, f_wjet): # get trees from files t_tt = f_tt.Get("Delphes") t_qcd = f_qcd.Get("Delphes") t_wjet = f_wjet.Get("Delphes") # get number of entries tt_n_entries = t_tt.GetEntries() qcd_n_entries = t_qcd.GetEntries() wjet_n_entries = t_wjet.GetEntries() # define leaves var_tt = "Electron.PT" var_qcd = "Electron.PT" var_wjet = "Electron.PT" leaf_tt = t_tt.GetLeaf(var_tt) leaf_qcd = t_qcd.GetLeaf(var_qcd) leaf_wjet = t_wjet.GetLeaf(var_wjet) # create the histograms numElectrons_tt = Hist(NBINS,NLO,NHI, title = 'numElectrons_tt', legendstyle = 'L') numElectrons_qcd = Hist(NBINS,NLO,NHI, title = 'numElectrons_qcd', legendstyle = 'L') numElectrons_wjet = Hist(NBINS,NLO,NHI, title = 'numElectrons_wjet', legendstyle = 'L') # interesting values to plot max_ept_per_event_tt = Hist(PT_NBINS,PT_NLO,PT_NHI, title = 'Max ElectronPT/Event tt', legendstyle = 'L') min_ept_per_event_tt = Hist(PT_NBINS,PT_NLO,PT_NHI, title = 'Min ElectronPT/Event tt', legendstyle = 'L') max_ept_per_event_qcd = Hist(PT_NBINS,PT_NLO,PT_NHI, title = 'Max ElectronPT/Event qcd', legendstyle = 'L') min_ept_per_event_qcd = Hist(PT_NBINS,PT_NLO,PT_NHI, title = 'Min ElectronPT/Event qcd', legendstyle = 'L') max_ept_per_event_wjet = Hist(PT_NBINS,PT_NLO,PT_NHI, title = 'Max ElectronPT/Event wjet', legendstyle = 'L') min_ept_per_event_wjet = Hist(PT_NBINS,PT_NLO,PT_NHI, title = 'Min ElectronPT/Event wjet', legendstyle = 'L') # FILLING THE TREE fill_Electron_tree(tt_n_entries, t_tt, leaf_tt, numElectrons_tt, min_ept_per_event_tt, max_ept_per_event_tt) fill_Electron_tree(qcd_n_entries, t_qcd, leaf_qcd, numElectrons_qcd, min_ept_per_event_qcd, max_ept_per_event_qcd) fill_Electron_tree(wjet_n_entries, t_wjet, leaf_wjet, numElectrons_wjet, min_ept_per_event_wjet, max_ept_per_event_wjet) #set line colors numElectrons_tt.SetLineColor('blue') numElectrons_qcd.SetLineColor('green') numElectrons_wjet.SetLineColor('red') #begin drawing stuff c1 = Canvas() numElectrons_wjet.SetStats(0) numElectrons_wjet.Draw('HIST') numElectrons_tt.Draw('HIST SAME') numElectrons_qcd.Draw('HIST SAME') #make legend l1 = Legend([numElectrons_tt, numElectrons_qcd, numElectrons_wjet], textfont = 42, textsize = .03) l1.Draw() #save as pdf c1.SaveAs("../plots/ElectronPT_plots/numElectrons.pdf"); ################ MIN MAX STUFF # TT #set line colors max_ept_per_event_tt.SetLineColor('blue') min_ept_per_event_tt.SetLineColor('green') #begin drawing stuff c2 = Canvas() min_ept_per_event_tt.SetStats(0) min_ept_per_event_tt.Draw('HIST') max_ept_per_event_tt.Draw('HIST SAME') #make legend l2 = Legend([min_ept_per_event_tt, max_ept_per_event_tt], textfont = 42, textsize = .03) l2.Draw() #save as pdf c2.SaveAs("../plots/ElectronPT_plots/e_maxminpt_tt.pdf") # QCD #set line colors max_ept_per_event_qcd.SetLineColor('blue') min_ept_per_event_qcd.SetLineColor('green') #begin drawing stuff c3 = Canvas() max_ept_per_event_qcd.SetStats(0) max_ept_per_event_qcd.Draw('HIST') min_ept_per_event_qcd.Draw('HIST SAME') #make legend l3 = Legend([min_ept_per_event_qcd, max_ept_per_event_qcd], textfont = 42, textsize = .03) l3.Draw() #save as pdf c3.SaveAs("../plots/ElectronPT_plots/e_maxminpt_qcd.pdf") #WJET #set line colors max_ept_per_event_wjet.SetLineColor('blue') min_ept_per_event_wjet.SetLineColor('green') #begin drawing stuff c4 = Canvas() min_ept_per_event_wjet.SetStats(0) min_ept_per_event_wjet.Draw('HIST') max_ept_per_event_wjet.Draw('HIST SAME') #make legend l4 = Legend([min_ept_per_event_wjet, max_ept_per_event_wjet], textfont = 42, textsize = .03) l4.Draw() #save as pdf c4.SaveAs("../plots/ElectronPT_plots/e_maxminpt_wjet.pdf") #make the plots wait on screen wait(True)
# create histograms h1 = Hist(100, 40, 160) h2 = Hist(100, 40, 160) # fill the histograms with our distributions map(h1.Fill, x1) map(h2.Fill, x2) # normalize the histograms h1 /= h1.Integral() h2 /= h2.Integral() # set visual attributes h1.SetFillStyle("solid") h1.SetFillColor("green") h1.SetLineColor("green") h2.SetFillStyle("solid") h2.SetFillColor("red") h2.SetLineColor("red") # plot with ROOT h1.GetXaxis().SetTitle('Smarts') h1.GetYaxis().SetTitle('Probability') h1.SetTitle("Histogram of IQ: #mu=100, #sigma=15") h1.Draw("hist") h2.Draw("same") # plot with matplotlib plt.figure() rplt.hist(h1, alpha=0.75)
mu, sigma = 100, 15 x = mu + sigma * np.random.randn(10000) # create a histogram with 100 bins from 40 to 160 h = Hist(100, 40, 160) # fill the histogram with our distribution map(h.Fill, x) # normalize the histogram h /= h.Integral() # set visual attributes h.SetFillStyle('solid') h.SetFillColor('green') h.SetLineColor('green') # the histogram of the data plt.figure(figsize=(16, 12), dpi=200) axes = plt.axes() axes.minorticks_on() rplt.hist(h, label=r'$\epsilon$(Something complicated)', alpha=0.7) plt.xlabel('Discovery', CMS.x_axis_title) plt.ylabel('Probability of a discovery', CMS.y_axis_title) #plt.title(r'combined, CMS Preliminary, $\mathcal{L}$ = 5.1 fb$^{-1}$ at $\sqrt{s}$ = 7 TeV', # fontsize=30, # verticalalignment='bottom') #plt.title(r'e+jets, CMS Preliminary, $\mathcal{L}$ = 5.1 fb$^{-1}$ at $\sqrt{s}$ = 7 TeV', #fontsize=30, # verticalalignment='bottom') plt.title(
print "==================================== TRAIN ====================================" response = RooUnfoldResponse(40, -10.0, 10.0) # Train with a Breit-Wigner, mean 0.3 and width 2.5. for i in xrange(100000): xt = gRandom.BreitWigner(0.3, 2.5) x = smear(xt) if x != None: response.Fill(x, xt) else: response.Miss(xt) print "==================================== TEST =====================================" hTrue = Hist(40, -10.0, 10.0) hMeas = Hist(40, -10.0, 10.0) hTrue.SetLineColor('red') hMeas.SetLineColor('blue') # Test with a Gaussian, mean 0 and width 2. for i in xrange(10000): xt = gRandom.Gaus(0.0, 2.0) x = smear(xt) hTrue.Fill(xt) if x != None: hMeas.Fill(x) print "==================================== UNFOLD ===================================" unfold = RooUnfoldBayes(response, hMeas, 4) # OR # unfold= RooUnfoldSvd (response, hMeas, 20); # OR # unfold= RooUnfoldTUnfold (response, hMeas); hReco = unfold.Hreco()
# h_data.Scale(absolute_eta_initialValues['data'][whichBinFromFile][0] / h_data.Integral() ) # h_data.FillRandom( dataFillingHistogram, int(absolute_eta_initialValues['data'][whichBinFromFile][0]) ) # h_data.FillRandom( dataFillingHistogram, int(absolute_eta_initialValues['data'][whichBinFromFile][0]) ) pass # for bin in range (0,nBins+1): # # h_data.SetBinContent( bin, t1Scale * h_t1.GetBinContent( bin ) + t2Scale*h_t2.GetBinContent( bin ) + t3Scale*h_t3.GetBinContent( bin ) ) # h_data.SetBinError(bin, sqrt(h_data.GetBinContent(bin))) # h_t1.SetBinError( bin, sqrt(h_t1.GetBinContent(bin))) # h_t2.SetBinError( bin, sqrt(h_t2.GetBinContent(bin))) # h_t3.SetBinError( bin, sqrt(h_t3.GetBinContent(bin))) # h_t4.SetBinError( bin, sqrt(h_t4.GetBinContent(bin))) # pass # Make pretty h_t1.SetLineColor(4) h_t2.SetLineColor(8) h_t3.SetLineColor(6) h_t4.SetLineColor(7) h_data.SetLineColor(1) h_data.SetMarkerColor(1) ymax = getMax([h_data, h_t1, h_t2, h_t3]) ymax = ymax * 1.1 h_data.GetYaxis().SetRangeUser(0, ymax) h_t1.GetYaxis().SetRangeUser(0, ymax) h_t2.GetYaxis().SetRangeUser(0, ymax) h_t3.GetYaxis().SetRangeUser(0, ymax) h_t4.GetYaxis().SetRangeUser(0, ymax) c = Canvas()
def makeDiscr(train_discr_dict, discr_dict, outfile, xtitle="discriminator"): c = ROOT.TCanvas("c", "c", 800, 500) ROOT.gStyle.SetOptStat(0) ROOT.gPad.SetMargin(0.15, 0.1, 0.2, 0.1) #ROOT.gPad.SetLogy(1) #ROOT.gPad.SetGrid(1,1) ROOT.gStyle.SetGridColor(17) l = TLegend(0.17, 0.75, 0.88, 0.88) l.SetTextSize(0.055) l.SetBorderSize(0) l.SetFillStyle(0) l.SetNColumns(2) colors = [2, 1, 4, ROOT.kCyan + 2] counter = 0 for leg, discr in train_discr_dict.iteritems(): a = Hist(30, 0, 1) #fill_hist_with_ndarray(a, discr) a.fill_array(discr) a.SetLineColor(colors[counter]) a.SetLineWidth(2) a.GetXaxis().SetTitle(xtitle) a.GetXaxis().SetLabelSize(0.05) a.GetXaxis().SetTitleSize(0.06) a.GetXaxis().SetTitleOffset(1.45) a.GetYaxis().SetTitle("a.u.") a.GetYaxis().SetTickSize(0) a.GetYaxis().SetLabelSize(0) a.GetYaxis().SetTitleSize(0.06) a.GetYaxis().SetTitleOffset(0.9) a.Scale(1. / a.Integral()) #a.GetYaxis().SetRangeUser(0.00001,100) a.GetYaxis().SetRangeUser(0, 0.9) if counter == 0: a.draw("hist") else: a.draw("same hist") l.AddEntry(a, leg, "l") counter += 1 counter = 0 for leg, discr in discr_dict.iteritems(): a = Hist(30, 0, 1) #fill_hist_with_ndarray(a, discr) a.fill_array(discr) a.SetLineColor(colors[counter]) a.SetMarkerColor(colors[counter]) a.SetMarkerStyle(34) a.SetMarkerSize(1.8) a.SetLineWidth(2) a.GetXaxis().SetTitle(xtitle) a.GetXaxis().SetLabelSize(0.05) a.GetXaxis().SetTitleSize(0.06) a.GetXaxis().SetTitleOffset(1.45) a.GetYaxis().SetTitle("a.u.") a.GetYaxis().SetTickSize(0) a.GetYaxis().SetLabelSize(0) a.GetYaxis().SetTitleSize(0.06) a.GetYaxis().SetTitleOffset(0.9) a.Scale(1. / a.Integral()) #a.GetYaxis().SetRangeUser(0.00001,100) a.GetYaxis().SetRangeUser(0, 0.4) a.draw("same p X0") l.AddEntry(a, leg, "p") counter += 1 # counter = 0 # for leg,discr in train_discr_dict.iteritems(): # d = Hist(30, 0, 1) # d.fill_array(discr) # d.SetLineColor(colors[counter]) # d.SetLineWidth(2) # l.AddEntry(d,leg,"l") # # b = Hist(30, 0, 1) # d.fill_array(discr_dict[leg.split(" ")[0] + " test"]) # b.SetLineColor(colors[counter]) # b.SetMarkerColor(colors[counter]) # b.SetMarkerStyle(34) # b.SetMarkerSize(1.8) # b.SetLineWidth(2) # l.AddEntry(b,leg,"p") # counter += 1 l.Draw("same") c.SaveAs(outfile)
# create histograms h1 = Hist(100, 40, 160) h2 = Hist(100, 40, 160) # fill the histograms with our distributions map(h1.Fill, x1) map(h2.Fill, x2) # normalize the histograms h1 /= h1.Integral() h2 /= h2.Integral() # set visual attributes h1.SetFillStyle('solid') h1.SetFillColor('green') h1.SetLineColor('green') h2.SetFillStyle('solid') h2.SetFillColor('red') h2.SetLineColor('red') stack = HistStack() stack.Add(h1) stack.Add(h2) # plot with ROOT h1.SetTitle('Histogram of IQ: #mu=100, #sigma=15') stack.Draw() h1.GetXaxis().SetTitle('Smarts') h1.GetYaxis().SetTitle('Probability')
def extract_JetBTag(f_tt, f_qcd, f_wjet): # get trees from files t_tt = f_tt.Get("Delphes") t_qcd = f_qcd.Get("Delphes") t_wjet = f_wjet.Get("Delphes") # get number of entries tt_n_entries = t_tt.GetEntries() qcd_n_entries = t_qcd.GetEntries() wjet_n_entries = t_wjet.GetEntries() # define leaves var_tt = "Jet.BTag" var_qcd = "Jet.BTag" var_wjet = "Jet.BTag" leaf_tt = t_tt.GetLeaf(var_tt) leaf_qcd = t_qcd.GetLeaf(var_qcd) leaf_wjet = t_wjet.GetLeaf(var_wjet) # create the histograms loose_tt = Hist(NBINS, NLO, NHI, title='loose_tt', legendstyle='L') medium_tt = Hist(NBINS, NLO, NHI, title='medium_tt', legendstyle='L') tight_tt = Hist(NBINS, NLO, NHI, title='tight_tt', legendstyle='L') loose_qcd = Hist(NBINS, NLO, NHI, title='loose_qcd', legendstyle='L') medium_qcd = Hist(NBINS, NLO, NHI, title='medium_qcd', legendstyle='L') tight_qcd = Hist(NBINS, NLO, NHI, title='tight_qcd', legendstyle='L') loose_wjet = Hist(NBINS, NLO, NHI, title='loose_wjet', legendstyle='L') medium_wjet = Hist(NBINS, NLO, NHI, title='medium_wjet', legendstyle='L') tight_wjet = Hist(NBINS, NLO, NHI, title='tight_wjet', legendstyle='L') # FILLING THE TREE fill_JetBTag_tree(tt_n_entries, t_tt, leaf_tt, loose_tt, medium_tt, tight_tt) fill_JetBTag_tree(qcd_n_entries, t_qcd, leaf_qcd, loose_qcd, medium_qcd, tight_qcd) fill_JetBTag_tree(wjet_n_entries, t_wjet, leaf_wjet, loose_wjet, medium_wjet, tight_wjet) #set line colors loose_tt.SetLineColor('blue') medium_tt.SetLineColor('green') tight_tt.SetLineColor('red') loose_qcd.SetLineColor('blue') medium_qcd.SetLineColor('green') tight_qcd.SetLineColor('red') loose_wjet.SetLineColor('blue') medium_wjet.SetLineColor('green') tight_wjet.SetLineColor('red') #begin drawing stuff c1 = Canvas() tight_tt.SetStats(0) tight_tt.Draw('HIST') medium_tt.Draw('HIST SAME') loose_tt.Draw('HIST SAME') #make legend l1 = Legend([tight_tt, medium_tt, loose_tt], textfont=42, textsize=.03) l1.Draw() #save as pdf c1.SaveAs("../plots/JetBTag_plots/btag_tt.pdf") c2 = Canvas() tight_qcd.SetStats(0) tight_qcd.Draw('HIST') medium_qcd.Draw('HIST SAME') loose_qcd.Draw('HIST SAME') #make legend l2 = Legend([tight_qcd, medium_qcd, loose_qcd], textfont=42, textsize=.03) l2.Draw() #save as pdf c2.SaveAs("../plots/JetBTag_plots/btag_qcd.pdf") c3 = Canvas() tight_wjet.SetStats(0) tight_wjet.Draw('HIST') medium_wjet.Draw('HIST SAME') loose_wjet.Draw('HIST SAME') #make legend l3 = Legend([tight_wjet, medium_wjet, loose_wjet], textfont=42, textsize=.03) l3.Draw() #save as pdf c3.SaveAs("../plots/JetBTag_plots/btag_wjet.pdf") wait(True)