Example #1
0
    def test_set_values_from_intervals(self):
        '''Test behavior of Uncertainy.test_set_values_from_intervals function'''

        # Dummy central values and variatons relative to central value
        npoints = 100
        values = list(range(0, npoints, 1))
        uncertainty = [(-random.uniform(0, 1), random.uniform(0, 1)) for _ in range(100)]

        # Convert +- error to interval bounds
        intervals = [(val + unc_minus, val + unc_plus)
                     for val, (unc_minus, unc_plus) in zip(values, uncertainty)]

        # Reference uses "normal" assignment
        refunc = Uncertainty("reference_unc")
        refunc.is_symmetric = False
        refunc.values = uncertainty

        # Test uses new function
        testunc = Uncertainty("test_unc")
        testunc.is_symmetric = False
        testunc.set_values_from_intervals(intervals, nominal=values)

        # Check that both agree
        self.assertTrue(all((test_utilities.tuple_compare(tup1, tup2) \
                        for tup1, tup2 in zip(testunc.values, refunc.values))))
Example #2
0
    def test_scale_values(self):
        '''Test behavior of Uncertainty.scale_values function'''
        values = list(range(0, 300, 1))
        uncertainty = [x + random.uniform(0, 2) for x in values]

        testvar = Variable("testvar")
        testvar.is_binned = False
        testvar.units = "GeV"
        testvar.values = values

        testunc = Uncertainty("testunc")
        testunc.is_symmetric = True
        testunc.values = uncertainty
        testvar.uncertainties.append(testunc)

        assert testvar.values == values
        self.assertTrue(testunc.values == uncertainty)

        for factor in [random.uniform(0, 10000) for x in range(100)]:
            # Check that scaling works
            testvar.scale_values(factor)
            scaled_values = [factor * x for x in values]
            scaled_uncertainty = [factor * x for x in uncertainty]
            self.assertTrue(all(test_utilities.float_compare(x, y)
                                for x, y in zip(testvar.values, scaled_values)))
            self.assertTrue(all(test_utilities.float_compare(x, y)
                                for x, y in zip(testunc.values, scaled_uncertainty)))

            # Check that inverse also works
            testvar.scale_values(1. / factor)
            self.assertTrue(all(test_utilities.float_compare(x, y)
                                for x, y in zip(testvar.values, values)))
            self.assertTrue(all(test_utilities.float_compare(x, y)
                                for x, y in zip(testunc.values, uncertainty)))
Example #3
0
    def test_make_dict(self):
        """Test the make_dict function."""
        # pylint: disable=no-self-use
        var = Variable("testvar")

        # With or without units
        for units in ["", "GeV"]:
            var.units = units

            # Binned
            var.is_binned = False
            var.values = [1, 2, 3]
            var.make_dict()

            # Unbinned
            var.is_binned = True
            var.values = [(0, 1), (1, 2), (2, 3)]
            var.make_dict()

        # With symmetric uncertainty
        unc1 = Uncertainty("unc1")
        unc1.is_symmetric = True
        unc1.values = [random.random() for _ in range(len(var.values))]
        var.add_uncertainty(unc1)
        var.make_dict()

        # With asymmetric uncertainty
        unc2 = Uncertainty("unc2")
        unc2.is_symmetric = False
        unc2.values = [(-random.random(), random.random())
                       for _ in range(len(var.values))]
        var.add_uncertainty(unc2)
        var.make_dict()

        # With qualifiers (which only apply to dependent variables)
        var.is_independent = False
        var.add_qualifier("testqualifier1", 1, units="GeV")
        var.add_qualifier("testqualifier2", 1, units="")
        var.make_dict()
Example #4
0
    def test_add_uncertainty(self):
        '''Test behavior of Variable.add_uncertainty function'''
        var = Variable("testvar")
        var.is_binned = False

        var.values = range(5)

        # Normal behavior
        unc = Uncertainty("testunc")
        unc.is_symmetric = True
        unc.values = [x * 0.1 for x in var.values]

        var.add_uncertainty(unc)

        self.assertTrue(len(var.uncertainties) == 1)
        self.assertTrue(var.uncertainties[0] == unc)

        # Reset variable but leave uncertainty as is
        var.uncertainties = []
        var.values = []
        var.add_uncertainty(unc)

        self.assertTrue(len(var.uncertainties) == 1)
        self.assertTrue(var.uncertainties[0] == unc)

        # Exception testing
        var.values = range(5)

        def wrong_input_type():
            '''Call add_uncertainty with invalid input type.'''
            var.add_uncertainty("this is not a proper input argument")

        self.assertRaises(TypeError, wrong_input_type)

        def wrong_input_properties():
            '''Call add_uncertainty with invalid input properties.'''
            unc2 = Uncertainty("testunc2")
            unc2.is_symmetric = True
            unc2.values = unc.values + [3]
            var.add_uncertainty(unc2)

        self.assertRaises(ValueError, wrong_input_properties)
Example #5
0
def convertWJetsHistToYaml( rootfile, label, channel ):

    tab = Table(label)

    reader = RootFileReader(rootfile)

    data = reader.read_hist_1d("dataAR")
#    ttg = reader.read_hist_1d("TTG_centralall")
    top = reader.read_hist_1d("Top_centralall")
    dy = reader.read_hist_1d("DY_LO_centralall")
    wjets = reader.read_hist_1d("WJets_centralall")
#    wg = reader.read_hist_1d("WG_centralall")
#    zg = reader.read_hist_1d("ZG_centralall")
    other = reader.read_hist_1d("other_centralall")
    qcd = reader.read_hist_1d("QCD")

    uncUp = reader.read_hist_1d("totalUncertainty_up")
    uncDown = reader.read_hist_1d("totalUncertainty_down")

    rootfile = ROOT.TFile(rootfile,"READ")
    statHist = rootfile.Get("dataAR")

    unc = []
    statunc = []
    relunc = []
    tot = []
    for i, i_up in enumerate(uncUp["y"]):
        stat = statHist.GetBinError(i+1)
        u = abs(i_up-uncDown["y"][i])*0.5
#        all = [ ttg["y"][i], top["y"][i], dy["y"][i], wjets["y"][i], wg["y"][i], zg["y"][i], other["y"][i], qcd["y"][i] ]
        all = [ top["y"][i], dy["y"][i], wjets["y"][i], other["y"][i], qcd["y"][i] ]
        sim = sum(all)
        unc.append(u)
        statunc.append(stat)
        tot.append(sim)
        relunc.append(u*100./sim)

    xbins = Variable( "$m_{T}(W)$", is_independent=True, is_binned=True, units="GeV")
    xbins.values = data["x_edges"]
    ydata = Variable( "Observed", is_independent=False, is_binned=False)
    ydata.values = data["y"]
    ydata.add_qualifier("CHANNEL",channel)
    ydata.add_qualifier("SQRT(S)","13","TeV")
    ydata.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytot = Variable( "Total simulation", is_independent=False, is_binned=False)
    ytot.values = tot
    ytot.add_qualifier("CHANNEL",channel)
    ytot.add_qualifier("SQRT(S)","13","TeV")
    ytot.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
#    yttg = Variable( "tt$\gamma$", is_independent=False, is_binned=False)
#    yttg.values = ttg["y"]
#    yttg.add_qualifier("CHANNEL",channel)
#    yttg.add_qualifier("SQRT(S)","13","TeV")
#    yttg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytop = Variable( "t/tt", is_independent=False, is_binned=False)
    ytop.values = top["y"]
    ytop.add_qualifier("CHANNEL",channel)
    ytop.add_qualifier("SQRT(S)","13","TeV")
    ytop.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ydy = Variable( "Drell-Yan", is_independent=False, is_binned=False)
    ydy.values = dy["y"]
    ydy.add_qualifier("CHANNEL",channel)
    ydy.add_qualifier("SQRT(S)","13","TeV")
    ydy.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ywjets = Variable( "W+jets", is_independent=False, is_binned=False)
    ywjets.values = wjets["y"]
    ywjets.add_qualifier("CHANNEL",channel)
    ywjets.add_qualifier("SQRT(S)","13","TeV")
    ywjets.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
#    ywg = Variable( "W$\gamma$", is_independent=False, is_binned=False)
#    ywg.values = wg["y"]
#    ywg.add_qualifier("CHANNEL",channel)
#    ywg.add_qualifier("SQRT(S)","13","TeV")
#    ywg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
#    yzg = Variable( "Z$\gamma$", is_independent=False, is_binned=False)
#    yzg.values = zg["y"]
#    yzg.add_qualifier("CHANNEL",channel)
#    yzg.add_qualifier("SQRT(S)","13","TeV")
#    yzg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yother = Variable( "Other", is_independent=False, is_binned=False)
    yother.values = other["y"]
    yother.add_qualifier("CHANNEL",channel)
    yother.add_qualifier("SQRT(S)","13","TeV")
    yother.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yqcd = Variable( "Multijet", is_independent=False, is_binned=False)
    yqcd.values = qcd["y"]
    yqcd.add_qualifier("CHANNEL",channel)
    yqcd.add_qualifier("SQRT(S)","13","TeV")
    yqcd.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
#    yunc = Variable( "Total systematic uncertainty", is_independent=False, is_binned=False)
#    yunc.values = unc
#    yunc.add_qualifier("SQRT(S)","13","TeV")
#    yunc.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    #yrelunc = Variable( "Rel. uncertainty (%)", is_independent=False, is_binned=False)
    #yrelunc.values = relunc

    yunc = Uncertainty( "syst" )
    yunc.is_symmetric = True
    yunc.values = unc

    ystatunc = Uncertainty( "stat" )
    ystatunc.is_symmetric = True
    ystatunc.values = statunc

    ydata.uncertainties.append(ystatunc)
    ytot.uncertainties.append(yunc)

    tab.add_variable(xbins)
    tab.add_variable(ydata)
    tab.add_variable(ytot)
    tab.add_variable(ywjets)
    tab.add_variable(yqcd)
    tab.add_variable(ydy)
    tab.add_variable(ytop)
    tab.add_variable(yother)
#    tab.add_variable(ywg)
#    tab.add_variable(yzg)
#    tab.add_variable(yttg)
#    tab.add_variable(yunc)

    return tab
Example #6
0
def convertEFTPtHistToYaml( rootfile, label, channel ):

    tab = Table(label)

    reader = RootFileReader(rootfile)

    data = reader.read_hist_1d("data")
    tot = reader.read_hist_1d("total")
    totbkg = reader.read_hist_1d("total_background")
    ttg = reader.read_hist_1d("signal")
    misID = reader.read_hist_1d("misID")
    had = reader.read_hist_1d("fakes")
    other = reader.read_hist_1d("other")
    wg = reader.read_hist_1d("WG")
    qcd = reader.read_hist_1d("QCD")
    zg = reader.read_hist_1d("ZG")

    eftbf = reader.read_hist_1d("bestFit")
    eftctZ045 = reader.read_hist_1d("ctZ0.45")
    eftctZI045 = reader.read_hist_1d("ctZI0.45")
    eftctZm045 = reader.read_hist_1d("ctZ-0.45")

    rootfile = ROOT.TFile(rootfile,"READ")
    totHist = rootfile.Get("total")
    datHist = rootfile.Get("data")

    unc = []
    statunc = []
    relunc = []
    for i, i_tot in enumerate(tot["y"]):
        u = totHist.GetBinError(i+1)
        ustat = datHist.GetBinError(i+1)
        unc.append(u)
        statunc.append(ustat)
        relunc.append(u*100./i_tot)


    xbins = Variable( "$p_{T}(\gamma)$", is_independent=True, is_binned=True, units="GeV")
    xbins.values = data["x_edges"]
    ydata = Variable( "Observed", is_independent=False, is_binned=False)
    ydata.values = data["y"]
    ydata.add_qualifier("CHANNEL",channel)
    ydata.add_qualifier("SQRT(S)","13","TeV")
    ydata.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytot = Variable( "Total simulation", is_independent=False, is_binned=False)
    ytot.values = tot["y"]
    ytot.add_qualifier("CHANNEL",channel)
    ytot.add_qualifier("SQRT(S)","13","TeV")
    ytot.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytotbkg = Variable( "Total background", is_independent=False, is_binned=False)
    ytotbkg.values = totbkg["y"]
    ytotbkg.add_qualifier("CHANNEL",channel)
    ytotbkg.add_qualifier("SQRT(S)","13","TeV")
    ytotbkg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ywg = Variable( "$W\gamma$", is_independent=False, is_binned=False)
    ywg.values = wg["y"]
    ywg.add_qualifier("CHANNEL",channel)
    ywg.add_qualifier("SQRT(S)","13","TeV")
    ywg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yzg = Variable( "$Z\gamma$", is_independent=False, is_binned=False)
    yzg.values = zg["y"]
    yzg.add_qualifier("CHANNEL",channel)
    yzg.add_qualifier("SQRT(S)","13","TeV")
    yzg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ymisID = Variable( "Misid. e", is_independent=False, is_binned=False)
    ymisID.values = misID["y"]
    ymisID.add_qualifier("CHANNEL",channel)
    ymisID.add_qualifier("SQRT(S)","13","TeV")
    ymisID.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yhad = Variable( "Hadronic $\gamma$", is_independent=False, is_binned=False)
    yhad.values = had["y"]
    yhad.add_qualifier("CHANNEL",channel)
    yhad.add_qualifier("SQRT(S)","13","TeV")
    yhad.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yqcd = Variable( "Multijet", is_independent=False, is_binned=False)
    yqcd.values = qcd["y"]
    yqcd.add_qualifier("CHANNEL",channel)
    yqcd.add_qualifier("SQRT(S)","13","TeV")
    yqcd.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yttg = Variable( "tt$\gamma$", is_independent=False, is_binned=False)
    yttg.values = ttg["y"]
    yttg.add_qualifier("CHANNEL",channel)
    yttg.add_qualifier("SQRT(S)","13","TeV")
    yttg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yother = Variable( "Other", is_independent=False, is_binned=False)
    yother.values = other["y"]
    yother.add_qualifier("CHANNEL",channel)
    yother.add_qualifier("SQRT(S)","13","TeV")
    yother.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    yeftbf = Variable( "SM-EFT best fit", is_independent=False, is_binned=False)
    yeftbf.values = eftbf["y"]
    yeftbf.add_qualifier("CHANNEL",channel)
    yeftbf.add_qualifier("SQRT(S)","13","TeV")
    yeftbf.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    yeftctZ045 = Variable( "$c_{tZ} = 0.45$", is_independent=False, is_binned=False,  units="($\Lambda$/TeV)$^2$")
    yeftctZ045.values = eftctZ045["y"]
    yeftctZ045.add_qualifier("CHANNEL",channel)
    yeftctZ045.add_qualifier("SQRT(S)","13","TeV")
    yeftctZ045.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    yeftctZI045 = Variable( "$c^I_{tZ} = 0.45$", is_independent=False, is_binned=False,  units="($\Lambda$/TeV)$^2$")
    yeftctZI045.values = eftctZI045["y"]
    yeftctZI045.add_qualifier("CHANNEL",channel)
    yeftctZI045.add_qualifier("SQRT(S)","13","TeV")
    yeftctZI045.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    yeftctZm045 = Variable( "$c_{tZ} = -0.45$", is_independent=False, is_binned=False,  units="($\Lambda$/TeV)$^2$")
    yeftctZm045.values = eftctZm045["y"]
    yeftctZm045.add_qualifier("CHANNEL",channel)
    yeftctZm045.add_qualifier("SQRT(S)","13","TeV")
    yeftctZm045.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    yunc = Uncertainty( "syst" )
    yunc.is_symmetric = True
    yunc.values = unc

    ystatunc = Uncertainty( "stat" )
    ystatunc.is_symmetric = True
    ystatunc.values = statunc

    ydata.uncertainties.append(ystatunc)
    ytot.uncertainties.append(yunc)

    tab.add_variable(xbins)
    tab.add_variable(ydata)
    tab.add_variable(ytot)
    tab.add_variable(yeftbf)
    tab.add_variable(yeftctZ045)
    tab.add_variable(yeftctZI045)
    tab.add_variable(yeftctZm045)
    tab.add_variable(ytotbkg)
    tab.add_variable(yttg)
    tab.add_variable(yhad)
    tab.add_variable(ymisID)
    tab.add_variable(yother)
    tab.add_variable(ywg)
    tab.add_variable(yqcd)
    tab.add_variable(yzg)

    return tab
Example #7
0
def convertUnfoldingHistToYaml( rootfile, label, variable, unit ):

    tab = Table(label)

    reader = RootFileReader(rootfile)

    data = reader.read_hist_1d("unfoled_spectrum")
    simP8 = reader.read_hist_1d("fiducial_spectrum")
    simHpp = reader.read_hist_1d("fiducial_spectrum_Hpp")
    simH7 = reader.read_hist_1d("fiducial_spectrum_H7")
    totalUncUp = reader.read_hist_1d("totalUncertainty_up")
    mcstatUncUp = reader.read_hist_1d("mcStat_up")
    matrixUncUp = reader.read_hist_1d("totalMatrixVariationUnc_up")
    statUncUp = reader.read_hist_1d("stat_up")

    totunc = []
    reltotunc = []
    statunc = []
    relstatunc = []
    for i, i_up in enumerate(totalUncUp["y"]):
        tot = data["y"][i]
        utot = (i_up - tot)**2
        utot += (mcstatUncUp["y"][i] - tot)**2
        utot += matrixUncUp["y"][i]**2
        utot = sqrt(utot)
        ustat = statUncUp["y"][i] - tot
        totunc.append(utot)
        statunc.append(ustat)
        reltotunc.append(utot*100./tot)
        relstatunc.append(ustat*100./tot)

    xbins = Variable( variable, is_independent=True, is_binned=True, units=unit)
    xbins.values = data["x_edges"]
    ydata = Variable( "Observed", is_independent=False, is_binned=False)
    ydata.values = data["y"]
    ydata.add_qualifier("SQRT(S)","13","TeV")
    ydata.add_qualifier("LUMINOSITY","137","fb$^{-1}$")


    yunc = Uncertainty( "total" )
    yunc.is_symmetric = True
    yunc.values = totunc

    ystatunc = Uncertainty( "stat" )
    ystatunc.is_symmetric = True
    ystatunc.values = statunc

#    ydata.uncertainties.append(ystatunc)
#    ydata.uncertainties.append(yunc)


    ysimP8 = Variable( "Simulation MG5_aMC + Pythia8", is_independent=False, is_binned=False)
    ysimP8.values = simP8["y"]
    ysimP8.add_qualifier("SQRT(S)","13","TeV")
    ysimP8.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ysimH7 = Variable( "Simulation MG5_aMC + Herwig7", is_independent=False, is_binned=False)
    ysimH7.values = simH7["y"]
    ysimH7.add_qualifier("SQRT(S)","13","TeV")
    ysimH7.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ysimHpp = Variable( "Simulation MG5_aMC + Herwig++", is_independent=False, is_binned=False)
    ysimHpp.values = simHpp["y"]
    ysimHpp.add_qualifier("SQRT(S)","13","TeV")
    ysimHpp.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    tab.add_variable(xbins)
    tab.add_variable(ydata)
    tab.add_variable(ysimP8)
    tab.add_variable(ysimH7)
    tab.add_variable(ysimHpp)

    return tab
Example #8
0
def convertSRHistToYaml( rootfile, label, variable, unit ):

    tab = Table(label)

    reader = RootFileReader(rootfile)

    data = reader.read_hist_1d("dataAR")
    gen = reader.read_hist_1d("TTG_centralnoChgIsoNoSieiephotoncat0")
    had = reader.read_hist_1d("TTG_centralnoChgIsoNoSieiephotoncat134")
    misID = reader.read_hist_1d("TTG_centralnoChgIsoNoSieiephotoncat2")
    qcd = reader.read_hist_1d("QCD")
    uncUp = reader.read_hist_1d("totalUncertainty_up")
    uncDown = reader.read_hist_1d("totalUncertainty_down")

    rootfile = ROOT.TFile(rootfile,"READ")
    statHist = rootfile.Get("dataAR")

    unc = []
    statunc = []
    relunc = []
    tot = []
    for i, i_up in enumerate(uncUp["y"]):
        stat = statHist.GetBinError(i+1)
        u = abs(i_up-uncDown["y"][i])*0.5
        sim = sum([ gen["y"][i], had["y"][i], misID["y"][i], qcd["y"][i] ])
        unc.append(u)
        statunc.append(stat)
        tot.append(sim)
        relunc.append(u*100./sim)

    xbins = Variable( variable, is_independent=True, is_binned=True, units=unit)
    xbins.values = data["x_edges"]
    ydata = Variable( "Observed", is_independent=False, is_binned=False)
    ydata.values = data["y"]
    ydata.add_qualifier("CHANNEL","l+jets")
    ydata.add_qualifier("SQRT(S)","13","TeV")
    ydata.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytot = Variable( "Total simulation", is_independent=False, is_binned=False)
    ytot.values = tot
    ytot.add_qualifier("CHANNEL","l+jets")
    ytot.add_qualifier("SQRT(S)","13","TeV")
    ytot.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ygen = Variable( "Genuine $\gamma$", is_independent=False, is_binned=False)
    ygen.values = gen["y"]
    ygen.add_qualifier("CHANNEL","l+jets")
    ygen.add_qualifier("SQRT(S)","13","TeV")
    ygen.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yhad = Variable( "Hadronic $\gamma$", is_independent=False, is_binned=False)
    yhad.values = had["y"]
    yhad.add_qualifier("CHANNEL","l+jets")
    yhad.add_qualifier("SQRT(S)","13","TeV")
    yhad.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ymisID = Variable( "Misid. e", is_independent=False, is_binned=False)
    ymisID.values = misID["y"]
    ymisID.add_qualifier("CHANNEL","l+jets")
    ymisID.add_qualifier("SQRT(S)","13","TeV")
    ymisID.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yqcd = Variable( "Multijet", is_independent=False, is_binned=False)
    yqcd.values = qcd["y"]
    yqcd.add_qualifier("CHANNEL","l+jets")
    yqcd.add_qualifier("SQRT(S)","13","TeV")
    yqcd.add_qualifier("LUMINOSITY","137","fb$^{-1}$")

    yunc = Uncertainty( "syst" )
    yunc.is_symmetric = True
    yunc.values = unc

    ystatunc = Uncertainty( "stat" )
    ystatunc.is_symmetric = True
    ystatunc.values = statunc

    ydata.uncertainties.append(ystatunc)
    ytot.uncertainties.append(yunc)

    tab.add_variable(xbins)
    tab.add_variable(ydata)
    tab.add_variable(ytot)
    tab.add_variable(ygen)
    tab.add_variable(yhad)
    tab.add_variable(ymisID)
    tab.add_variable(yqcd)

    return tab
Example #9
0
def convertSRPlotToYaml():

    tab = Table("Figure 6")

    reader = RootFileReader("../regionPlots/SR_incl.root")

    data = reader.read_hist_1d("0dc_2016data")
    tot = reader.read_hist_1d("0dc_2016total")
    totbkg = reader.read_hist_1d("0dc_2016total_background")
    ttg = reader.read_hist_1d("0dc_2016signal")
    misID = reader.read_hist_1d("0dc_2016misID")
    had = reader.read_hist_1d("0dc_2016fakes")
    other = reader.read_hist_1d("0dc_2016other")
    wg = reader.read_hist_1d("0dc_2016WG")
    qcd = reader.read_hist_1d("0dc_2016QCD")
    zg = reader.read_hist_1d("0dc_2016ZG")

    rootfile = ROOT.TFile("../regionPlots/SR_incl.root","READ")
    totHist = rootfile.Get("0dc_2016total")
    datHist = rootfile.Get("0dc_2016data")

    unc = []
    statunc = []
    relunc = []
    for i, i_tot in enumerate(tot["y"]):
        u = totHist.GetBinError(i+1)
        ustat = datHist.GetBinError(i+1)
        unc.append(u)
        statunc.append(ustat)
        relunc.append(u*100./i_tot)

    crBinLabel = [
            "SR3, e, $M_{3}$ $<$ 280 GeV",
            "SR3, e, 280 $\leq$ $M_{3}$ $<$ 420 GeV",
            "SR3, e, $M_{3}$ $\geq$ 420 GeV",
            "SR3, $\mu$, $M_{3}$ $<$ 280 GeV",
            "SR3, $\mu$, 280 $\leq$ $M_{3}$ $<$ 420 GeV",
            "SR3, $\mu$, $M_{3}$ $\geq$ 420 GeV",
            "SR4p, e, $M_{3}$ $<$ 280 GeV",
            "SR4p, e, 280 $\leq$ $M_{3}$ $<$ 420 GeV",
            "SR4p, e, $M_{3}$ $\geq$ 420 GeV",
            "SR4p, $\mu$, $M_{3}$ $<$ 280 GeV",
            "SR4p, $\mu$, 280 $\leq$ $M_{3}$ $<$ 420 GeV",
            "SR4p, $\mu$, $M_{3}$ $\geq$ 420 GeV",
            ]
    xbins = Variable( "Bin", is_independent=True, is_binned=False)
    xbins.values = crBinLabel
    ydata = Variable( "Observed", is_independent=False, is_binned=False)
    ydata.values = data["y"]
    ydata.add_qualifier("SQRT(S)","13","TeV")
    ydata.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytot = Variable( "Total simulation", is_independent=False, is_binned=False)
    ytot.values = tot["y"]
    ytot.add_qualifier("SQRT(S)","13","TeV")
    ytot.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytotbkg = Variable( "Total background", is_independent=False, is_binned=False)
    ytotbkg.values = totbkg["y"]
    ytotbkg.add_qualifier("SQRT(S)","13","TeV")
    ytotbkg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ywg = Variable( "$W\gamma$", is_independent=False, is_binned=False)
    ywg.values = wg["y"]
    ywg.add_qualifier("SQRT(S)","13","TeV")
    ywg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yzg = Variable( "$Z\gamma$", is_independent=False, is_binned=False)
    yzg.values = zg["y"]
    yzg.add_qualifier("SQRT(S)","13","TeV")
    yzg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ymisID = Variable( "Misid. e", is_independent=False, is_binned=False)
    ymisID.values = misID["y"]
    ymisID.add_qualifier("SQRT(S)","13","TeV")
    ymisID.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yhad = Variable( "Hadronic $\gamma$", is_independent=False, is_binned=False)
    yhad.values = had["y"]
    yhad.add_qualifier("SQRT(S)","13","TeV")
    yhad.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yqcd = Variable( "Multijet", is_independent=False, is_binned=False)
    yqcd.values = qcd["y"]
    yqcd.add_qualifier("SQRT(S)","13","TeV")
    yqcd.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yttg = Variable( "tt$\gamma$", is_independent=False, is_binned=False)
    yttg.values = ttg["y"]
    yttg.add_qualifier("SQRT(S)","13","TeV")
    yttg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yother = Variable( "Other", is_independent=False, is_binned=False)
    yother.values = other["y"]
    yother.add_qualifier("SQRT(S)","13","TeV")
    yother.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
#    yunc = Variable( "Total uncertainty", is_independent=False, is_binned=False)
#    yunc.values = unc
#    yunc.add_qualifier("SQRT(S)","13","TeV")
#    yunc.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    #yrelunc = Variable( "Rel. uncertainty (%)", is_independent=False, is_binned=False)
    #yrelunc.values = relunc

    yunc = Uncertainty( "syst" )
    yunc.is_symmetric = True
    yunc.values = unc

    ystatunc = Uncertainty( "stat" )
    ystatunc.is_symmetric = True
    ystatunc.values = statunc

    ydata.uncertainties.append(ystatunc)
    ytot.uncertainties.append(yunc)


    tab.add_variable(xbins)
    tab.add_variable(ydata)
    tab.add_variable(ytot)
    tab.add_variable(ytotbkg)
    tab.add_variable(yttg)
    tab.add_variable(ymisID)
    tab.add_variable(yhad)
    tab.add_variable(yother)
    tab.add_variable(ywg)
    tab.add_variable(yqcd)
    tab.add_variable(yzg)
#    tab.add_variable(yunc)

    return tab
Example #10
0
def convertMlgHistToYaml( rootfile, label, variable, channel ):

    tab = Table(label)

    reader = RootFileReader(rootfile)

    data = reader.read_hist_1d("dataAR")
    misID = reader.read_hist_1d("TTG_centralnoChgIsoNoSieiephotoncat2")
    wg = reader.read_hist_1d("WG_centralnoChgIsoNoSieiephotoncat0")
    zg = reader.read_hist_1d("ZG_centralnoChgIsoNoSieiephotoncat0")
    other = reader.read_hist_1d("TTG_centralnoChgIsoNoSieiephotoncat0")
    had = reader.read_hist_1d("TTG_centralnoChgIsoNoSieiephotoncat134")
    qcd = reader.read_hist_1d("QCD")

    uncUp = reader.read_hist_1d("totalUncertainty_up")
    uncDown = reader.read_hist_1d("totalUncertainty_down")

    rootfile = ROOT.TFile(rootfile,"READ")
    statHist = rootfile.Get("dataAR")

    unc = []
    statunc = []
    relunc = []
    tot = []
    for i, i_up in enumerate(uncUp["y"]):
        stat = statHist.GetBinError(i+1)
        u = abs(i_up-uncDown["y"][i])*0.5
        all = [ misID["y"][i], wg["y"][i], zg["y"][i], other["y"][i], had["y"][i], qcd["y"][i] ]
        sim = sum(all)
        unc.append(u)
        statunc.append(stat)
        tot.append(sim)
        relunc.append(u*100./sim)

    xbins = Variable( variable, is_independent=True, is_binned=True, units="GeV")
    xbins.values = data["x_edges"]
    ydata = Variable( "Observed", is_independent=False, is_binned=False)
    ydata.values = data["y"]
    ydata.add_qualifier("CHANNEL",channel)
    ydata.add_qualifier("SQRT(S)","13","TeV")
    ydata.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ytot = Variable( "Total simulation", is_independent=False, is_binned=False)
    ytot.values = tot
    ytot.add_qualifier("CHANNEL",channel)
    ytot.add_qualifier("SQRT(S)","13","TeV")
    ytot.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ymisID = Variable( "Misid. e", is_independent=False, is_binned=False)
    ymisID.values = misID["y"]
    ymisID.add_qualifier("CHANNEL",channel)
    ymisID.add_qualifier("SQRT(S)","13","TeV")
    ymisID.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yhad = Variable( "Hadronic $\gamma$", is_independent=False, is_binned=False)
    yhad.values = had["y"]
    yhad.add_qualifier("CHANNEL",channel)
    yhad.add_qualifier("SQRT(S)","13","TeV")
    yhad.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    ywg = Variable( "W$\gamma$", is_independent=False, is_binned=False)
    ywg.values = wg["y"]
    ywg.add_qualifier("CHANNEL",channel)
    ywg.add_qualifier("SQRT(S)","13","TeV")
    ywg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yzg = Variable( "Z$\gamma$", is_independent=False, is_binned=False)
    yzg.values = zg["y"]
    yzg.add_qualifier("CHANNEL",channel)
    yzg.add_qualifier("SQRT(S)","13","TeV")
    yzg.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yother = Variable( "Other", is_independent=False, is_binned=False)
    yother.values = other["y"]
    yother.add_qualifier("CHANNEL",channel)
    yother.add_qualifier("SQRT(S)","13","TeV")
    yother.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    yqcd = Variable( "Multijet", is_independent=False, is_binned=False)
    yqcd.values = qcd["y"]
    yqcd.add_qualifier("CHANNEL",channel)
    yqcd.add_qualifier("SQRT(S)","13","TeV")
    yqcd.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
#    yunc = Variable( "Total systematic uncertainty", is_independent=False, is_binned=False)
#    yunc.values = unc
#    yunc.add_qualifier("SQRT(S)","13","TeV")
#    yunc.add_qualifier("LUMINOSITY","137","fb$^{-1}$")
    #yrelunc = Variable( "Rel. uncertainty (%)", is_independent=False, is_binned=False)
    #yrelunc.values = relunc

    yunc = Uncertainty( "syst" )
    yunc.is_symmetric = True
    yunc.values = unc

    ystatunc = Uncertainty( "stat" )
    ystatunc.is_symmetric = True
    ystatunc.values = statunc

    ydata.uncertainties.append(ystatunc)
    ytot.uncertainties.append(yunc)

    tab.add_variable(xbins)
    tab.add_variable(ydata)
    tab.add_variable(ytot)
    tab.add_variable(ymisID)
    tab.add_variable(ywg)
    tab.add_variable(yzg)
    tab.add_variable(yother)
    tab.add_variable(yhad)
    tab.add_variable(yqcd)
#    tab.add_variable(yunc)

    return tab
Example #11
0
 def wrong_input_properties():
     '''Call add_uncertainty with invalid input properties.'''
     unc2 = Uncertainty("testunc2")
     unc2.is_symmetric = True
     unc2.values = unc.values + [3]
     var.add_uncertainty(unc2)
Example #12
0
sfType = Variable("Scale factor",
                  is_independent=True,
                  is_binned=False,
                  units="")
sfType.values = [
    "Misidentified electrons (2016)", "Misidentified electrons (2017)",
    "Misidentified electrons (2018)", "Z$\gamma$ normalization",
    "W$\gamma$ normalization"
]
value = Variable("Value", is_independent=False, is_binned=False, units="")
value.values = [2.25, 2.00, 1.52, 1.01, 1.13]
value.add_qualifier("SQRT(S)", "13", "TeV")
value.add_qualifier("LUMINOSITY", "137", "fb$^{-1}$")
unc = Uncertainty("total")
unc.is_symmetric = True
unc.values = [0.29, 0.27, 0.17, 0.10, 0.08]
value.uncertainties.append(unc)

tabSF.add_variable(sfType)
tabSF.add_variable(value)

tabSF.keywords["reactions"] = [
    "P P --> TOP TOPBAR X", "P P --> TOP TOPBAR GAMMA"
]
tabSF.keywords["cmenergies"] = [13000.0]
tabSF.keywords["phrases"] = [
    "Top", "Quark", "Photon", "lepton+jets", "semileptonic", "Cross Section",
    "Proton-Proton Scattering", "Inclusive", "Differential"
]
submission.add_table(tabSF)