예제 #1
0
 def __init__(self):
     self.bins = to_array(0., 0.04, 0.07, 4)
     self.nbins = len(self.bins)-1
     # 2015 is included in 2016. We scale/sum up 2015, 2016hip, 2016nonhip below, instead of that being done separately in
     # SignalEfficiencyCombiner--this simplifies the datacard and plot making downstream.
     self.years = '2016', '2017', '2018'
     self.nyears = len(self.years)
     import JMTucker.MFVNeutralino.AnalysisConstants as ac
     self.int_lumis = ac.scaled_int_lumi_2015p6, ac.scaled_int_lumi_2017, ac.scaled_int_lumi_2018
     self.fn = 'limitsinput.root'
     self.l1eeprefiring_2017 = True # whether to simulate L1 EE prefiring in 2017
     self.hem1516_2018 = True # whether to simulate the HEM 15/16 failure in for part of 2018
예제 #2
0
 def fmt(h, name, color, save=[]):
     binning = to_array(0., 0.04, 0.07, 0.15)
     h = h.Rebin(len(binning)-1, name, binning)
     h.Sumw2()
     h.SetStats(0)
     h.SetLineWidth(3)
     h.SetLineColor(color)
     h.SetTitle(';d_{VV} (cm);event rate (unit norm.)')
     move_overflow_into_last_bin(h)
     h.Scale(1./h.Integral(0,h.GetNbinsX()+2))
     save.append(h)
     return h
예제 #3
0
def axisize(l):
    l = sorted(set(l))
    delta = l[-1] - l[-2]
    l.append(l[-1] + delta)
    return to_array(l)
 rec_eff,l,u = clopper_pearson(rec_hist.GetEntries(), nrec)
 rec_err = (u-l)/2
 if generated[i] != '':
     gen_hist = f.Get('mfvGen%s/h_gen%s_dvv' % (generated[i], match))
     gen_eff,l,u = clopper_pearson(gen_hist.GetEntries(), ngen)
     gen_err = (u-l)/2
     gen_rec_div = gen_eff/rec_eff if rec_eff != 0 else 9999
     gen_rec_err = (gen_rec_div * ((rec_err/rec_eff)**2 + (gen_err/gen_eff)**2))**0.5 if rec_eff != 0 and gen_eff != 0 else 9999
     if generated[i] == gen_num:
         print '%20s%6d%20s%6d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n' % (rec, rec_hist.GetEntries(), generated[i], gen_hist.GetEntries(), rec_eff, rec_err, gen_eff, gen_err, gen_rec_div, gen_rec_err)
         print r'%s & $%4.3f \pm %4.3f$ & $%4.3f \pm %4.3f$ & $%4.3f \pm %4.3f$ \\' % (sample.latex, rec_eff, rec_err, gen_eff, gen_err, gen_rec_div, gen_rec_err)
         x.append(rec_eff)
         y.append(gen_eff)
         ex.append(rec_err)
         ey.append(gen_err)
         g = ROOT.TGraphErrors(1, to_array(rec_eff), to_array(gen_eff), to_array(rec_err), to_array(gen_err))
         g.SetMarkerStyle(style(sample))
         g.SetMarkerColor(color(sample))
         gs.append(g)
         label = sample.latex.split(',')[0] + sample.latex.split(',')[2]
         label = label.replace('\\','#').replace('#GeV',' GeV').replace('$','').replace(' M',', M')
         if sample.tau == 1000 or ctau != '':
             if style(sample) == 20:
                 l1.AddEntry(g, label.split(', ')[1], 'P')
             if color(sample) == 6:
                 l2.AddEntry(g, label.split(', ')[0], 'P')
         if gen_eff >= (1-0.01*gen_rec_cut)*rec_eff and gen_eff <= (1+0.01*gen_rec_cut)*rec_eff:
             matched.append(sample.name)
         else:
             not_matched.append(sample.name)
         break