'/Run2017.AllZpAnomalonData_unc_' + reg +
                               '_Zptcut' + str(zptcut) + '_Hptcut' +
                               str(hptcut) + '_metcut' + str(metcut) +
                               '_btagwp' + str(btagwp) + '.pkl')
    datuncs18 = pd.read_pickle('analysis_output_ZpAnomalon/' + args.date +
                               '/Run2018.AllZpAnomalonData_unc_' + reg +
                               '_Zptcut' + str(zptcut) + '_Hptcut' +
                               str(hptcut) + '_metcut' + str(metcut) +
                               '_btagwp' + str(btagwp) + '.pkl')

    #check for plotting, prep backgrounds
    bkg_colors = gecorg.colsFromPalette(bkgnames, ROOT.kLake)
    if not year:
        lumi = 41.53 + 59.74
        print("Stacking for a luminosity of ", round(lumi, 2))
        bkg_info17 = gecorg.prepBkg(bkgupout17, bkgnames, bkg_colors,
                                    'xsects_2017.ini', 41.53, "yes")
        bkg_info18 = gecorg.prepBkg(bkgupout18, bkgnames, bkg_colors,
                                    'xsects_2017.ini', 59.74, "yes")
        bkguncs = (bkguncs17**2 + bkguncs18**2)**(1 / 2)
        datfiles = datfiles17 + datfiles18
        dat_info = [ROOT.TFile(dat) for dat in datfiles]
        datuncs = (datuncs17**2 + datuncs18**2)**(1 / 2)
        regiondescrip = reg + '_1718'
        keys = bkg_info17[0]['binlist'][0]['tfile'].GetListOfKeys()
    if year == 17:
        lumi = 41.53
        print("Stacking for 2017 luminosity alone.")
        bkg_info17 = gecorg.prepBkg(bkgupout17, bkgnames, bkg_colors,
                                    'xsects_2017.ini', 41.53, "yes")
        dat_info = [ROOT.TFile(dat) for dat in datfiles17]
        datuncs = datuncs17
                             str(hptcut) + '_metcut' + str(metcut) +
                             '_btagwp*')
        bkgfiles = [DYJetsToLL, TT, WZTo2L2Q, ZZTo2L2Q]
        bkgnames = ["DYJetsToLL", "TT", "WZTo2L2Q", "ZZTo2L2Q"]
        sigfiles = glob.glob('analysis_output_ZpAnomalon/' + args.date +
                             '/ZpAnomalonHZ_UFO-' + sigsamp + '_upout_' +
                             btag + '_Zptcut' + str(zptcut) + '_Hptcut' +
                             str(hptcut) + '_metcut' + str(metcut) + '.root')

        #Prep signals
        sig_colors = gecorg.colsFromPalette(sigfiles, ROOT.kCMYK)
        sig_info = gecorg.prepSig(sigfiles, sig_colors, sig_xsec, lumi)

        #Prep backgrounds
        bkg_colors = gecorg.colsFromPalette(bkgnames, ROOT.kLake)
        bkg_info = gecorg.prepBkg(bkgfiles, bkgnames, bkg_colors,
                                  'xsects_2017.ini', lumi)

        #Make the stacked plot

        hname = released_plot
        hsbkg = ROOT.THStack('hsbkg', '')
        leg = ROOT.TLegend(0.45, 0.55, 0.90, 0.88)
        gecorg.stackBkg(bkg_info, released_plot, hsbkg, leg, plotmax, 0.0)

        #Signal Plot
        hsig = sig_info[0]["tfile"].Get(released_plot)
        hsig.Scale(sig_info[0]["scale"])

        #LUT with titles
        titles = {
            "h_z_pt": "Z pT",
    args = parser.parse_args()

    #Get command line parameters
    lumi          = args.lumi
    sig_xsec      = args.xsec
    zptcut        = args.zptcut
    hptcut        = args.hptcut
    metcut        = args.metcut
    btagwp        = args.btagwp
    year          = args.year

    bkgfiles = go.gatherBkg('analysis_output_ZpAnomalon/'+args.date,'upout',zptcut,hptcut,metcut,btagwp,year)
    #bkguncs  = np.load('analysis_output_ZpAnomalon/'+args.date+'/Fall17.AllZpAnomalonBkgs_unc_Zptcut'+str(zptcut)+'_Hptcut'+str(hptcut)+'_metcut'+str(metcut)+'_btagwp'+str(btagwp)+'.npz')
    bkgnames = ["DYJetsToLL","TT","WZTo2L2Q","ZZTo2L2Q"]
    bkgcols  = go.colsFromPalette(bkgnames,ROOT.kLake)
    bkginfo  = go.prepBkg(bkgfiles,bkgnames,bkgcols,'xsects_2017.ini',lumi,"yes")#gathers xs scales

    metstr = "Percent Passing \(MET > "+str(metcut)+"\)"
    zptstr = "Percent Passing \(Z p_{T} > "+str(zptcut)+"\)"
    hptstr = "Percent Passing Fat Jet \(p_{T} > "+str(hptcut)+"\)"
    btgstr = "Percent Passing {0} btag WP".format(str(btagwp))
    sbstr  = "Percent in side band"
    
    
    cfdict = {metstr:{},zptstr:{},hptstr:{},btgstr:{},sbstr:{}}
    totorig = 0
    totymet = 0
    totyzpt = 0
    totyhpt = 0
    totybtg = 0
    totysb  = 0
    bkgupout17 = go.gatherBkg('analysis_output_ZpAnomalon/' + args.date,
                              'upout_' + reg, zptcut, hptcut, metcut, btagwp,
                              17)
    bkgtopia17 = go.gatherBkg('analysis_output_ZpAnomalon/2021-03-26',
                              'topiary', 0.0, 250.0, 0.0, 0.0, 17)
    bkgupout18 = go.gatherBkg('analysis_output_ZpAnomalon/' + args.date,
                              'upout_' + reg, zptcut, hptcut, metcut, btagwp,
                              18)
    bkgtopia18 = go.gatherBkg('analysis_output_ZpAnomalon/2021-03-28',
                              'topiary', 0.0, 250.0, 0.0, 0.0, 18)
    #bkguncs  = np.load('analysis_output_ZpAnomalon/'+args.date+'/Fall17.AllZpAnomalonBkgs_unc_Zptcut'+str(zptcut)+'_Hptcut'+str(hptcut)+'_metcut'+str(metcut)+'_btagwp'+str(btagwp)+'.npz')

    bkgnames = ["DYJetsToLL", "TT", "WZTo2L2Q", "ZZTo2L2Q"]
    bkgcols = go.colsFromPalette(bkgnames, ROOT.kLake)
    bkginfo17 = go.prepBkg(bkgupout17, bkgnames, bkgcols, 'xsects_2017.ini',
                           41.53, "yes")  #gathers xs scales
    bkginfo18 = go.prepBkg(bkgupout18, bkgnames, bkgcols, 'xsects_2017.ini',
                           59.74, "yes")

    skimstr = "Events with \( > 0\) fat jets and \( Z(\ell^{+}\ell^{-}) cand \)"
    trigstr = "Events Pass trigger"
    zrecostr = "Events with \( 70 < m_{\ell\ell} < 110 \)"
    hrecostr = "Events Pass $H$ reco "
    metstr = "Events Passing \(MET > " + str(metcut) + "\)"
    zptstr = "Events Passing \(Z p_{T} > " + str(zptcut) + "\)"
    hptstr = "Events Passing Fat Jet \(p_{T} > " + str(hptcut) + "\)"
    btgstr = "Events Passing {0} btag WP".format(str(btagwp))
    sbstr = "Events in side band"

    cfdict = {
        metstr: {},