Example #1
0
def eff_stuff(h, fs, *xrng):
	print "analysis.eff_stuff()"
	# some other plots
	
	h1loc = h["pas"].Clone()
	h2loc = h["tot"].Clone()
	
	print h1loc, h2loc
	
	h1loc = aux.rebin(h1loc, range(100,201,100))
	h2loc = aux.rebin(h2loc, range(100,201,100))
	
	if rt.TEfficiency.CheckConsistency(h1loc, h2loc):
		print "consistency checked!"
		eff = rt.TEfficiency(h1loc, h2loc)
		egraph = eff.CreateGraph()
		
		#egraph.Fit(f, "r")
		
		#fmin = f.GetMinimumX()
		#fmax = f.GetMaximumX()
		
		#pmin = (f.Eval(fmin-fmin/2.))
		#pmax = (f.Eval(fmax+fmax/2.))
		pmin = 0.005
		pmax = 0.045
		
		#print "xrng: ", xrng[0][0], xrng[0][1]
		if xrng:
			egraph.GetXaxis().SetRangeUser(xrng[0][0],xrng[0][1]);
		
		if pmin < pmax:
			egraph.SetMinimum(pmin)
			egraph.SetMaximum(pmax)
		if pmin >= pmax:
			egraph.SetMinimum(pmax)
			egraph.SetMaximum(pmin)
		
		csize = 800
		name = h1loc.GetName() + "_" + h2loc.GetName()
		egraph.SetTitle(name)
		c = rt.TCanvas("c_"+name,"c_"+name,csize,csize)
		c.cd()
		
		egraph.Draw("ap")
		#f.Draw("same")
		
		c.Update()
		
		fs.save(c, name)
		
	else:
		print "not consistent"
Example #2
0
 def rebin(self, binEdges):
     self.initial = aux.rebin(self.initial, binEdges)
     self.target = aux.rebin(self.target, binEdges)
     
     # strange trick:
     # clear the overflow bin to avoid strange binning effects
     #self.initial.ClearUnderflowAndOverflow()
     #self.target.ClearUnderflowAndOverflow()
     
     #if self.h:
     #   for entry in self.h:
     #       entry= aux.rebin(entry, binEdges)
     return 0
Example #3
0
def closure():
    
    # genmatch for e->e and e->g, without Ht100To200 bin
    filename = "/user/rmeyer/Dropbox/data_uni/root_selectorFiles/myTestSelector_closureWJetsToLNu__1466503598.root"
    
    # no genmatch for e->e, only leading em object
    filename = "/user/rmeyer/Dropbox/data_uni/root_selectorFiles/myTestSelector_closureWJetsToLNu__1466514536.root"
    # nur barrell
    filename = "/user/rmeyer/Dropbox/data_uni/root_selectorFiles/myTestSelector_closureWJetsToLNu__1466514983.root"
    
    # drell yan
    #filename = "/user/rmeyer/Dropbox/data_uni/root_selectorFiles/myTestSelector_closureDY__1466515252.root"
    
    
    data = rt.TFile(filename)
    
    g = data.Get("clos_gen_g")
    e = data.Get("clos_gen_e")
    
    
    f = 0.0107
    f = 0.0077
    
    edges = [50., 60., 70., 70., 80., 90., 100., 120., 140., 160., 250.]
    #edges = [40., 250.]
    
    g = aux.rebin(g, edges)
    e = aux.rebin(e, edges)
    
    #g.Rebin(10)
    #e.Rebin(10)
    
    print "predicted: ", e.Integral()*f/(1-f)
    print "matched:   ", g.Integral()
    
    e.Scale(f/(1-f))
    
    e.SetMarkerColor(rt.kRed)
    g.SetMarkerColor(rt.kBlack)
    
    e.SetMarkerStyle(rt.kFullCircle)
    g.SetMarkerStyle(rt.kFullSquare)
    
    
    
    
    
    # empty histogram
    #h = rt.TH1F("h", "h", len(edges)-1, array( 'd', edges ))
    
    
    
    ### create ratio
    #def ratio_hishis(h1, h2):
    ##returns h1/h2
    ratio = aux.ratio_hishis(g, e)
    
    ratio.GetYaxis().SetLabelSize(0.065)
    ratio.GetYaxis().SetTitle("gen./pred.")
    ratio.GetYaxis().SetTitleSize(0.08)
    ratio.GetYaxis().SetTitleOffset(0.5)
    
    ratio.GetXaxis().SetLabelSize(0.)
    ratio.GetXaxis().SetTitleSize(0.)
    
    
    l = rt.TLegend(0.5,0.7,0.9,0.9);
    l.AddEntry(g, "N_{e#rightarrow#gamma}", "ep")
    l.AddEntry(e, "N_{e#rightarrowe} * f/(1-f)", "ep")
    
    
    c = rt.TCanvas("c", "c", 700, 700)
    c.cd()
    
    p1 = rt.TPad("p1", "p1", 0., 0.3, 1., 1.)
    p1.SetLeftMargin(0.12)
    p1.Draw()
    p1.cd()
    
    g.Draw("ep")
    e.Draw("ep same")
    l.Draw()
    
    c.cd()
    p2 = rt.TPad("p2", "p2", 0., 0.01, 1., 0.3)
    p2.SetLeftMargin(0.12)
    p2.SetGridy()
    p2.Draw()
    p2.cd()
    
    ratio.Draw("ep")
    
    
    
    raw_input()
    
    return 0
Example #4
0
 def rebin(self, binEdges):
     p = self.pas.Clone()
     t = self.tot.Clone()
     self.pas = aux.rebin(p, binEdges)
     self.tot = aux.rebin(t, binEdges)
     return 0
Example #5
0
def tagnprobe_new():
    print "gen_tp_debugging.tagnprobe_new()"
    
    #rt.gROOT.Reset()
    rt.gROOT.SetBatch(rt.kTRUE) # dont show the canvases
    
    plotfilename = "debugging.root"
    
    _fm = fm.FileManager()
    tstr = str(dt.datetime.now()).replace(" ", "_").replace(":","-").split(".")[0]
    fs = fm.FileSaver(plotfilename,tstr,_fm)
    
    #filename = "myTestSelector_DY_debug_genMatchTagnProbe_1458133145.root"
    #filename = "myTestSelector_DY_debug_genMatchTagnProbe_1458257495.root"
    #filename = "myTestSelector_DY_debug_genMatchTagnProbe_1458263936.root"
    #filename = "myTestSelector_DY_debug_genMatchTagnProbe_1458270353.root"
    #filename = "myTestSelector_DY_debug_genMatchTagnProbe_1458271176.root"
    #filename = "myTestSelector_DY_debug_genMatchTagnProbe_1458273497.root"
    
    #filename = "myTestSelector_NEW_tnp_forPlots_1460026482.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460033048.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460036199.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460036586.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460040961.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460042765.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460048500.root"
    #filename = "myTestSelector_NEW_tnp_forPlots_1460109853.root"
    filename = "myTestSelector_NEW_tnp_forPlots_1460109853.root"
    
    
    h, h2, h3 = _fm.loadfile(filename)
    
    tnp_ee = h2["tnp_ee"].Clone() # pt dependency
    tnp_eg = h2["tnp_eg"].Clone()
    
    tnp_ee_ntracks = h2["tnp_ee_ntracks"].Clone()
    tnp_eg_ntracks = h2["tnp_eg_ntracks"].Clone()
    
    tnp_ee_nvtx = h2["tnp_ee_nvtx"].Clone()
    tnp_eg_nvtx = h2["tnp_eg_nvtx"].Clone()
    
    tnp_ee_eta = h2["tnp_ee_eta"].Clone()
    tnp_eg_eta = h2["tnp_eg_eta"].Clone()
    
    
    
    samplename = "DYJetsToLL"
    strClosure = "_perbin"
    
    
    
    '''
    # closure on wgamma sample
    #filename = "myTestSelector_WG_debug_genMatchTagnProbe_1458286818.root"
    
    
    if "WG" in filename:
        strClosure = "_perbin_wg"
        samplename = "WGToLNuG"
        del h
        del h2
        del h3
        h, h2, h3 = _fm.loadfile(filename)
    # '''
    
    clos_e = h["clos_gen_e"]
    clos_g = h["clos_gen_g"]
    clos_e_ntracks = h["clos_gen_e_ntracks"]
    clos_g_ntracks = h["clos_gen_g_ntracks"]
    clos_e_nvtx = h["clos_gen_e_nvtx"]
    clos_g_nvtx = h["clos_gen_g_nvtx"]
    clos_e_eta = h["clos_gen_e_eta"]
    clos_g_eta = h["clos_gen_g_eta"]
    
    # '''
    
    
    # BINNINGS
    
    #ss = "1bin_" # for the plots
    ss = "_1bin"
    
    #pt_binning = range(40, 60, 5)+range(60, 100, 10)+range(100, 200+1, 20)
    pt_binning = range(40, 201, 160)
    print "pt_binning: ", pt_binning
    #ntracks_binning = range(0, 200+1, 10)
    ntracks_binning = range(0, 200+1, 200)
    print "ntracks_binning: ", ntracks_binning
    #nvtx_binning = range(0, 30+1, 1)
    nvtx_binning = range(0, 30+1, 30)
    print "nvtx_binning: ", nvtx_binning
    #eta_binning = range(0, 150+1, 10)
    eta_binning = range(0, 150+1, 150)
    for i in range(len(eta_binning)):
        eta_binning[i] = eta_binning[i]*0.01
    #    #eta_binning[i] = round(eta_binning[i]*0.01, 2)
    
    
    # CALCULATIONS
    
    # pt:
    tnp_ee.Add(tnp_eg)
    tpf = h2f.h2Fakerate("pt", tnp_ee, tnp_eg)
    tpf.rebin(pt_binning)
    #tpf.addFitModel(rt.TF1("tpf", "[0]+[1]/x+[2]/(x*x)", 40, 200))
    tpf.addFitModel(rt.TF1("tpf", "[0]", 40, 200))
    tpf.fit()
    tpcan = h2f.h2FakerateCanvas(tpf)
    tpcan.setLabel("Tag n probe")
    
    clos_e = aux.rebin(clos_e, pt_binning)
    clos_g = aux.rebin(clos_g, pt_binning)
    
    tpclos = h2f.closure("tagnprobe"+strClosure, clos_e, clos_g)
    tpclos.setLabel("Closure on "+samplename)
    #tpclos.addFakerate(tpgenf, "Tag n Probe gen info"+strClosure)
    tpclos.addFakerate(tpf, "Tag n Probe"+strClosure)
    tpclos.createFitPrediction()
    tpclos.createHistoPrediction()
    
    
    # Ntracks:
    
    tnp_ee_ntracks.Add(tnp_eg_ntracks)
    tpf_ntracks = h2f.h2Fakerate("ntracks", tnp_ee_ntracks, tnp_eg_ntracks)
    tpf_ntracks.rebin(ntracks_binning)
    tpf_ntracks.addFitModel(rt.TF1("tpf_ntracks", "[0]+[1]*x+[2]*x*x", 0, 200))
    tpf_ntracks.fit()
    tpcan_ntracks = h2f.h2FakerateCanvas(tpf_ntracks)
    tpcan_ntracks.setLabel("Tag n probe")
    
    clos_e_ntracks = aux.rebin(clos_e_ntracks, ntracks_binning)
    clos_g_ntracks = aux.rebin(clos_g_ntracks, ntracks_binning)
    
    tpclos_ntracks = h2f.closure("tnp_ntracks"+strClosure, clos_e_ntracks, clos_g_ntracks)
    #tpclos_ntracks.addFakerate(tpgenf_ntracks, "Tag n Probe gen info"+strClosure)
    tpclos_ntracks.addFakerate(tpf_ntracks, "Tag n Probe"+strClosure)
    tpclos_ntracks.createFitPrediction()
    tpclos_ntracks.createHistoPrediction()
    
    
    
    
    # Nvtx:
    
    tnp_ee_nvtx.Add(tnp_eg_nvtx)
    tpf_nvtx = h2f.h2Fakerate("nvtx", tnp_ee_nvtx, tnp_eg_nvtx)
    tpf_nvtx.rebin(nvtx_binning)
    tpf_nvtx.addFitModel(rt.TF1("tpf_nvtx", "[0]+[1]*x", 0, 30))
    tpf_nvtx.fit()
    tpcan_nvtx = h2f.h2FakerateCanvas(tpf_nvtx)
    tpcan_nvtx.setLabel("Tag n probe")
    
    clos_e_nvtx = aux.rebin(clos_e_nvtx, nvtx_binning)
    clos_g_nvtx = aux.rebin(clos_g_nvtx, nvtx_binning)
    
    tpclos_nvtx = h2f.closure("tnp_nvtx"+strClosure, clos_e_nvtx, clos_g_nvtx)
    
    #tpclos_nvtx.addFakerate(tpgenf_nvtx, "Tag n Probe gen info"+strClosure)
    tpclos_nvtx.addFakerate(tpf_nvtx, "Tag n Probe"+strClosure)
    
    tpclos_nvtx.createFitPrediction()
    tpclos_nvtx.createHistoPrediction()
    
    
    
    
    # Eta:
        
    print "eta_binning: ", eta_binning
    
    tnp_ee_eta.Add(tnp_eg_eta)
    tpf_eta = h2f.h2Fakerate("eta", tnp_ee_eta, tnp_eg_eta)
    tpf_eta.rebin(eta_binning)
    tpf_eta.addFitModel(rt.TF1("tpf_eta", "[0]+[1]*x", 0.1, 1.4))
    tpf_eta.fit()
    tpcan_eta = h2f.h2FakerateCanvas(tpf_eta)
    tpcan_eta.setLabel("Tag n probe")
    
    clos_e_eta = aux.rebin(clos_e_eta, eta_binning)
    clos_g_eta = aux.rebin(clos_g_eta, eta_binning)
    #clos_e_eta.Rebin(10)
    #clos_g_eta.Rebin(10)
    
    tpclos_eta = h2f.closure("tnp_eta"+strClosure, clos_e_eta, clos_g_eta)
    #tpclos_eta.addFakerate(tpgenf_eta, "Tag n Probe gen info"+strClosure)
    tpclos_eta.addFakerate(tpf_eta, "Tag n Probe"+strClosure)
    tpclos_eta.createFitPrediction()
    tpclos_eta.createHistoPrediction()
        
    
    
    # PLOTS and CANVASES
    
    
    
    tpcan.createCanvas(fs, name="f_tnp_pt"+ss)#, yrng=[0.002, 0.015])
    tpcan_ntracks.createCanvas(fs, yrng=[0., .03], name="f_tnp_ntracks"+ss)
    tpcan_nvtx.createCanvas(fs, name="f_tnp_nvtx"+ss)
    tpcan_eta.createCanvas(fs, name="f_tnp_eta"+ss)
    
    # def histoCanvas(self, fs, name, clabel, logy=True, *opt):
    tpclos.histoCanvas( fs,
                        "tnp_pt_closure_ownclass"+ss+strClosure,
                        "Closure on "+samplename,
                        logy = True,
                        opt=[0])
    h2f.histoCanvas(    fs,
                        "tnp_pt_closure"+ss+strClosure, 
                        tpclos.target, 
                        tpclos.predictionh[0],
                        "Closure on "+samplename,
                        logy = True,
                        yrng = [1000., 10000000.])
    h2f.histoCanvas(    fs,
                        "tnp_ntracks_closure"+ss+strClosure,
                        tpclos_ntracks.target,
                        tpclos_ntracks.predictionh[0],
                        "Closure on "+samplename)
    h2f.histoCanvas(    fs,
                        "tnp_nvtx_closure"+ss+strClosure,
                        tpclos_nvtx.target,
                        tpclos_nvtx.predictionh[0],
                        "Closure on "+samplename,
                        logy = True,
                        yrng = [1, 10000000])
    h2f.histoCanvas(    fs,
                        "tnp_eta_closure"+ss+strClosure,
                        tpclos_eta.target,
                        tpclos_eta.predictionh[0],
                        "Closure on "+samplename,
                        logy=True)
    
    
    # '''
    
    #c = rt.TCanvas("c", "c", 600, 600)
    #c.cd()
    #tpf.egraph.Draw("ap")
    #raw_input()
    #raw_input()
    #x = 50.
    #err = [rt.Double(0)]
    #xerr = tpf.fitres.GetConfidenceIntervals(1, 1, 1, x, err, 0.683, False);
    #print tpf.fitres.GetConfidenceIntervals(10, 1, 2, x, err, 0.94999, True);
    
    
    #raw_input()
    
    return 0