Beispiel #1
0
def make_plots():

    fnames_map = {
        "rares": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/ZZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/GGHtoZZto4L.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WZZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WZG.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/VHtoNonBB.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TZQ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWDPS.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/QQWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWG.root",
        ],
        "xg": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WGToLNuGext.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTG.root",
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTGdilep.root",
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTGsinglelepbar.root",
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTGsinglelep.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/ZG.root",
        ],
        "ttw": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTWnlo.root",
        ],
        "ttz": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTZnlo.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTZLOW.root",
        ],
        "tth": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTHtoNonBB.root",
        ],
        "tt": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTBAR_PH.root",
        ]
    }

    chain_map = {}
    for key in fnames_map:
        chain_map[key] = r.TChain("t")
        make_aliases(chain_map[key])
        if type(fnames_map[key]) == type([]):
            for fname in fnames_map[key]:
                chain_map[key].Add(fname)
                print fname
        else:
            chain_map[key].Add(fnames_map[key])

    thedir = "plots_isr/"
    os.system("mkdir -p %s" % thedir)

    plotinfo = (
        "", "njets-2", "(10,0.5,10.5)",
        "((hyp_class==4||hyp_class==6) && Sum$(btags.pt()>40)==2 && abs(lep1_id)!=abs(lep2_id))"
    )
    title, variable, bins, selection = plotinfo
    d_hists = {}
    for name in fnames_map.keys():
        chain_map[name].Draw("%s>>h1%s%s" % (variable, name, bins),
                             "(35.9*scale1fb) * ((%s) )" % selection, "goff")
        d_hists[name] = gDirectory.Get("h1" + name)
    print d_hists

    bginfo = [
        ("rares", "Rares", r.kMagenta - 7, 0.0),
        ("xg", "X+#gamma", r.kViolet + 2, 0.0),
        ("ttw", "ttW", r.kGreen + 3, 0.0),
        ("ttz", "ttZ", r.kGreen - 6, 0.0),
        ("tth", "ttH", r.kBlue - 5, 0.0),
        ("tt", "ttbar", r.kMagenta, 0.0),
    ]

    bgnames, titles, colors, systs = map(list, zip(*bginfo))
    subtitle = ""

    opts_str = "--darkColorLines --lumi 35.9 --topYaxisTitle Data/Pred. --type Preliminary --poissonErrorsNoZeros --dataName Data --outOfFrame --systInclStat --systFillStyle 3344 --xAxisLabel njets-2 --noDivisionLabel --noXaxisUnit --isLinear --noOverflow --legendUp -.03 --legendRight -0.05    --legendTaller 0.05 --yTitleOffset -0.1  --makeTable    --percentageInBox   --legendCounts "

    bgs = map(lambda x: d_hists.get(x), bgnames)
    print bgs
    print map(lambda x: x.GetEntries(), bgs)
    h_data_empty = bgs[0].Clone("empty")
    h_data_empty.Reset()

    d_newopts = {}
    d_newopts["outputName"] = thedir + "isr.pdf"
    d_newopts["poissonErrorsNoZeros"] = False
    d_newopts["noTextBetweenPads"] = False
    # d_newopts["flagLocation"] = "0.6,0.965,0.07"
    dataMCplot(h_data_empty,
               bgs=bgs,
               systs=systs,
               titles=titles,
               title=title,
               subtitle=subtitle,
               colors=colors,
               opts=d_newopts,
               opts_str=opts_str)
Beispiel #2
0
            #     d_lims = get_lims(card=cards_dir, regions=regions, redocard=True, redolimits=True, domcfakes=False)
            #     exp, expp1, expm1 = d_lims["exp"], d_lims["sp1"]-d_lims["exp"], d_lims["exp"]-d_lims["sm1"]
            #     subtitle = "#sigma^{UL}_{exp} = %.2f^{+%.1f}_{-%.1f} fb" % (exp, expp1, expm1)

            # do_unblind = typ in ["ttwcr","ttzcr", "sr"]
            do_blind = not do_unblind
            if do_unblind:
                if "l3eta_el" not in name and "el_l3pt" not in name:
                    d_newopts["noTextBetweenPads"] = True
                    d_newopts["noGrass"] = True
                dataMCplot(h_data,
                           bgs=bgs,
                           sigs=[h_tttt],
                           sigtitles=["t#bar{t}t#bar{t} x 5"],
                           systs=systs,
                           titles=titles,
                           title=title,
                           subtitle=subtitle,
                           colors=colors,
                           opts=d_newopts,
                           opts_str=opts_str)

            new_d_newopts = d_newopts.copy()
            new_h_tttt = h_tttt.Clone("new_tttt")
            new_h_tttt.Scale(1.0 / tttt_sf)  # undo above scaling
            new_bgs = bgs + [new_h_tttt]
            new_colors = colors + [r.kPink - 1]
            new_systs = systs + [0.1]
            new_titles = titles + ["t#bar{t}t#bar{t}"]
            new_d_newopts["poissonErrorsNoZeros"] = False
            new_d_newopts["noTextBetweenPads"] = False
Beispiel #3
0
                                  redocard=True,
                                  redolimits=True,
                                  domcfakes=False)
                exp, expp1, expm1 = d_lims["exp"], d_lims["sp1"] - d_lims[
                    "exp"], d_lims["exp"] - d_lims["sm1"]
                subtitle = "#sigma^{UL}_{exp} = %.2f^{+%.1f}_{-%.1f} fb" % (
                    exp, expp1, expm1)

            do_unblind = typ in ["ttwcr", "ttzcr"]
            if do_unblind:
                dataMCplot(h_data,
                           bgs=bgs,
                           sigs=[h_tttt],
                           sigtitles=["t#bar{t}t#bar{t} x 10"],
                           systs=systs,
                           titles=titles,
                           title=title,
                           subtitle=subtitle,
                           colors=colors,
                           opts=d_newopts,
                           opts_str=opts_str)

            d_newopts["outputName"] = d_newopts["outputName"].replace(
                ".pdf", "_blind.pdf")
            d_newopts["poissonErrorsNoZeros"] = False
            dataMCplot(h_data_empty,
                       bgs=bgs,
                       sigs=[h_tttt],
                       sigtitles=["t#bar{t}t#bar{t} x 10"],
                       systs=systs,
                       titles=titles,
Beispiel #4
0
def make_plots():

    fnames_map = {
        "rares": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/ZZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/GGHtoZZto4L.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WZZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WZG.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/VHtoNonBB.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TZQ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WWDPS.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/QQWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WWG.root",
        ],
        "xg": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/WGToLNuGext.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTG.root",
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTGdilep.root",
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTGsinglelepbar.root",
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTGsinglelep.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/ZG.root",
        ],
        "ttw": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTWnlo.root",
        ],
        "ttz": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTZnlo.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTZLOW.root",
        ],
        "tth": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTHtoNonBB.root",
        ],
        "tttt": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTTTnew.root",
        ],
        "mtop": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTHH.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTTJ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTTW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTWH.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTZH.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTZZ.root",
            # "tt"         : [
            #                 "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_WSF/output/TTBAR_PH.root",
            #                 ]
        ],
    }

    chain_map = {}
    for key in fnames_map:
        chain_map[key] = r.TChain("t")
        make_aliases(chain_map[key])
        if type(fnames_map[key]) == type([]):
            for fname in fnames_map[key]:
                chain_map[key].Add(fname)
                print fname
        else:
            chain_map[key].Add(fnames_map[key])

    thedir = "plots_wdecay/"
    os.system("mkdir -p %s" % thedir)

    bginfo = [
        ("rares", "Rares", r.kMagenta - 7, 0.0),
        ("xg", "X+#gamma", r.kViolet + 2, 0.0),
        ("ttw", "ttW", r.kGreen + 3, 0.0),
        ("ttz", "ttZ", r.kGreen - 6, 0.0),
        ("tth", "ttH", r.kBlue - 5, 0.0),
        ("mtop", "mtop", r.kAzure - 2, 0.0),
        ("tttt", "tttt", r.kRed + 1, 0.0),
    ]

    plotinfos = [
        ("nw", "nW", "(6,0.5,6.5)", "good"),
        ("sf", "decayWSF", "(20,0.75,1.25)", "good && promptMC"),
        # ("nleptonicW", "nleptonicW", "(6,0.5,6.5)", "good"),
    ]
    for plotinfo in plotinfos:
        title, variable, bins, selection = plotinfo
        d_hists = {}
        for name in fnames_map.keys():
            chain_map[name].Draw("%s>>h1%s%s" % (variable, name, bins),
                                 "(35.9*scale1fb) * ((%s) )" % selection,
                                 "goff")
            d_hists[name] = gDirectory.Get("h1" + name)
        print d_hists

        bgnames, titles, colors, systs = map(list, zip(*bginfo))
        subtitle = ""

        opts_str = "--darkColorLines --lumi 35.9 --topYaxisTitle Data/Pred. --type Preliminary --poissonErrorsNoZeros --dataName Data --outOfFrame --systInclStat --systFillStyle 3344 --xAxisLabel {0} --noDivisionLabel --noXaxisUnit  --noOverflow --legendUp -.03 --legendRight -0.05    --legendTaller 0.05 --yTitleOffset -0.1  --makeTable    --percentageInBox    ".format(
            title)

        bgs = map(lambda x: d_hists.get(x), bgnames)
        print bgs
        print map(lambda x: x.GetEntries(), bgs)
        h_data_empty = bgs[0].Clone("empty")
        h_data_empty.Reset()

        d_newopts = {}
        d_newopts["outputName"] = thedir + title + ".pdf"
        d_newopts["poissonErrorsNoZeros"] = False
        d_newopts["noTextBetweenPads"] = False
        # d_newopts["flagLocation"] = "0.6,0.965,0.07"
        dataMCplot(h_data_empty,
                   bgs=bgs,
                   systs=systs,
                   titles=titles,
                   title=title,
                   subtitle=subtitle,
                   colors=colors,
                   opts=d_newopts,
                   opts_str=opts_str)
Beispiel #5
0
def make_plots():

    fnames_map = {
        "TTWW":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTWW.root",
        "TTTW":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTTW.root",
        "TTWZ":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTWZ.root",
        "TTTJ":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTTJ.root",
        "TTWH":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTWH.root",
        "TTHH":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTHH.root",
        "TTZH":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTZH.root",
        "TTZZ":
        "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_raresxg/output/TTZZ.root",
    }

    chain_map = {}
    for key in fnames_map:
        chain_map[key] = r.TChain("t")
        make_aliases(chain_map[key])
        chain_map[key].Add(fnames_map[key])

    thedir = "plots_rares/"
    os.system("mkdir -p %s" % thedir)

    plotinfo = ("sr", "", "sr-2", "(8,0.5,8.5)", "(sr>2)")
    shortname, title, variable, bins, selection = plotinfo
    d_hists = {}
    for name in fnames_map.keys():
        chain_map[name].Draw("%s>>h1%s%s" % (variable, name, bins),
                             "(35.9*scale1fb) * ((%s && good) )" % selection,
                             "goff")
        d_hists[name] = gDirectory.Get("h1" + name)

    # from https://github.com/sgnoohc/Ditto/blob/master/python/makeplot.py#L193-L200
    mycolors = []
    mycolors.append(r.TColor(7000, 0 / 255., 0 / 255., 0 / 255.))
    mycolors.append(r.TColor(7001, 213 / 255., 94 / 255., 0 / 255.))  #r
    mycolors.append(r.TColor(7002, 230 / 255., 159 / 255., 0 / 255.))  #o
    mycolors.append(r.TColor(7003, 240 / 255., 228 / 255., 66 / 255.))  #y
    mycolors.append(r.TColor(7004, 0 / 255., 158 / 255., 115 / 255.))  #g
    mycolors.append(r.TColor(7005, 0 / 255., 114 / 255., 178 / 255.))  #b
    mycolors.append(r.TColor(7006, 86 / 255., 180 / 255., 233 / 255.))  #k
    mycolors.append(r.TColor(7007, 204 / 255., 121 / 255., 167 / 255.))  #p
    mycolors.append(r.TColor(7011, 110 / 255., 54 / 255., 0 / 255.))  #alt r
    mycolors.append(r.TColor(7017, 140 / 255., 93 / 255., 119 / 255.))  #alt p

    bginfo = [
        # ("TTWW" , "TTWW" , r.kMagenta-7 , 0.0),
        # ("TTTW" , "TTTW" , r.kGray+2    , 0.0),
        # ("TTWZ" , "TTWZ" , r.kViolet+2  , 0.0),
        # ("TTTJ" , "TTTJ" , r.kAzure-4   , 0.0),
        # ("TTWH" , "TTWH" , r.kGreen-6   , 0.0),
        # ("TTHH" , "TTHH" , 18           , 0.0),
        # ("TTZH" , "TTZH" , r.kBlue-5    , 0.0),
        # ("TTZZ" , "TTZZ" , r.kGreen+3   , 0.0),
        # ("TTTW" , "TTTW" , 7006 , 0.0),
        # ("TTWW" , "TTWW" , 7001 , 0.0),
        # ("TTWZ" , "TTWZ" , 7003 , 0.0),
        # ("TTWH" , "TTWH" , 7005 , 0.0),
        # ("TTHH" , "TTHH" , 7002 , 0.0),
        # ("TTZH" , "TTZH" , 7007 , 0.0),
        # ("TTTJ" , "TTTJ" , 7004 , 0.0),
        # ("TTZZ" , "TTZZ" , 7011 , 0.0),
        ("TTTW", "TTTW", 7006, 0.0),
        ("TTWW", "TTWW", 7005, 0.0),
        ("TTWZ", "TTWZ", 7004, 0.0),
        ("TTWH", "TTWH", 7003, 0.0),
        ("TTHH", "TTHH", 7002, 0.0),
        ("TTZH", "TTZH", 7001, 0.0),
        ("TTTJ", "TTTJ", 7007, 0.0),
        ("TTZZ", "TTZZ", 7017, 0.0),
    ]

    bgnames, titles, colors, systs = map(list, zip(*bginfo))
    subtitle = ""

    opts_str = "--darkColorLines --lumi 35.9 --topYaxisTitle Data/Pred. --type Preliminary --poissonErrorsNoZeros --dataName Data --outOfFrame --systInclStat --systFillStyle 3344 --xAxisLabel SR --noDivisionLabel --noXaxisUnit --isLinear --noOverflow --legendUp -.03 --legendRight -0.05    --legendTaller 0.05 --yTitleOffset -0.1  --makeTable    --percentageInBox --xAxisBinLabels SR1,SR2,SR3,SR4,SR5,SR6,SR7,SR8 --legendCounts "

    bgs = map(lambda x: d_hists.get(x), bgnames)
    h_data_empty = bgs[0].Clone("empty")
    h_data_empty.Reset()

    d_newopts = {}
    d_newopts["outputName"] = thedir + "sr.pdf"
    d_newopts["poissonErrorsNoZeros"] = False
    d_newopts["noTextBetweenPads"] = False
    # d_newopts["flagLocation"] = "0.6,0.965,0.07"
    # d_newopts["flagLocation"] = "0.21,0.96,0.08"
    dataMCplot(h_data_empty,
               bgs=bgs,
               systs=systs,
               titles=titles,
               title=title,
               subtitle=subtitle,
               colors=colors,
               opts=d_newopts,
               opts_str=opts_str)
Beispiel #6
0
def make_plots():

    fnames_map = {
        "rares": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/ZZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/GGHtoZZto4L.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WZZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WZG.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/VHtoNonBB.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TZQ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWDPS.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/QQWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWZ.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWW.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WWG.root",
        ],
        "xg": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/WGToLNuGext.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTG.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/ZG.root",
        ],
        "ttw": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTWnlo.root",
        ],
        "ttz": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTZnlo.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTZLOW.root",
        ],
        "tth": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTHtoNonBB.root",
        ],
        "tt": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/TTBAR_PH.root",
        ],
        "st": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/ST1.root",
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/ST2.root",
        ],
        "data": [
            # "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_data/output/DataMuonEG*root",
            "/home/users/namin/2017/fourtop/analysis/scripts/skim/unique.root",
        ],
        "dy": [
            "/nfs-7/userdata/namin/tupler_babies/merged/FT/v0.10_mcosv2/output/DY_*.root",
        ],
    }

    chain_map = {}
    for key in fnames_map:
        chain_map[key] = r.TChain("t")
        make_aliases(chain_map[key])
        if type(fnames_map[key]) == type([]):
            for fname in fnames_map[key]:
                chain_map[key].Add(fname)
                print fname
        else:
            chain_map[key].Add(fnames_map[key])

    thedir = "plots_tw/"
    os.system("mkdir -p %s" % thedir)

    # plotinfo = ("", "njets-1", "(10,0.5,10.5)", "((hyp_class==4) && Sum$(btags.pt()>40)==1 && abs(lep1_id)!=abs(lep2_id))")
    plotinfo = ("", "njets-1", "(10,-0.5,9.5)",
                "((hyp_class==4) && nbtags==1 && abs(lep1_id)!=abs(lep2_id))")
    title, variable, bins, selection = plotinfo
    d_hists = {}
    for name in fnames_map.keys():
        if name == "data":
            # chain_map[name].BuildIndex("run","event")
            blah = chain_map[name].Draw("%s>>h1%s%s" % (variable, name, bins),
                                        "(filters && (%s) )" % selection,
                                        "goff")
            # print "blah:",blah,"(filters && (%s) )" % selection
        else:
            # chain_map[name].Draw("%s>>h1%s%s" % (variable, name, bins),"(35.9*scale1fb) * ((%s) )" % selection, "goff")
            chain_map[name].Draw(
                "%s>>h1%s%s" % (variable, name, bins),
                "(35.9*scale1fb*eventScaleFactor(lep1_id,lep2_id,lep1_p4.pt(),lep2_p4.pt(),lep1_p4.eta(),lep2_p4.eta(),ht)*getTruePUw_Moriond(trueNumInt[0])*weight_btagsf) * ((%s) )"
                % selection, "goff")
        d_hists[name] = gDirectory.Get("h1" + name)
        print name, d_hists[name].GetEntries(), d_hists[name].Integral()
    print d_hists

    bginfo = [
        ("rares", "Rares", r.kMagenta - 7, 0.0),
        ("xg", "X+#gamma", r.kViolet + 2, 0.0),
        ("ttw", "ttW", r.kGreen + 3, 0.0),
        ("ttz", "ttZ", r.kGreen - 6, 0.0),
        ("tth", "ttH", r.kBlue - 5, 0.0),
        ("tt", "ttbar", r.kOrange + 1, 0.0),
        ("st", "singletop", r.kAzure + 2, 0.0),
        ("dy", "DY", r.kGray + 2, 0.0),
    ]

    bgnames, titles, colors, systs = map(list, zip(*bginfo))
    subtitle = ""

    # opts_str = "--darkColorLines --lumi 35.9 --topYaxisTitle Data/Pred. --type Preliminary --poissonErrorsNoZeros --dataName Data --outOfFrame --systInclStat --systFillStyle 3344 --xAxisLabel njets-1 --noDivisionLabel --noXaxisUnit --isLinear --noOverflow --legendUp -.03 --legendRight -0.05    --legendTaller 0.05 --yTitleOffset -0.1  --makeTable    --percentageInBox   --legendCounts "
    opts_str = "--darkColorLines --lumi 35.9 --topYaxisTitle Data/Pred. --type Preliminary --poissonErrorsNoZeros --dataName Data --outOfFrame --systInclStat --systFillStyle 3344 --xAxisLabel njets-1 --noDivisionLabel --noXaxisUnit  --noOverflow --legendUp -.03 --legendRight -0.05    --legendTaller 0.05 --yTitleOffset -0.1  --makeTable    --percentageInBox   --legendCounts "

    bgs = map(lambda x: d_hists.get(x), bgnames)
    # print bgs
    print map(lambda x: x.GetEntries(), bgs)
    h_data_empty = bgs[0].Clone("empty")
    h_data_empty.Reset()
    h_data = d_hists["data"]

    for bg in bgs:
        rw_hist(bg)
    # print h_data.GetEntries()
    # print h_data.Integral()

    tot_sum_bgs = sum([bg.Integral() for bg in bgs])
    sf = h_data.Integral() / tot_sum_bgs
    tot_data = np.array(list(h_data)[1:-1])
    for bg in bgs:
        bg.Scale(sf)

    d_newopts = {}
    d_newopts["outputName"] = thedir + "tw.pdf"
    # d_newopts["poissonErrorsNoZeros"] = False
    # d_newopts["noTextBetweenPads"] = False
    # d_newopts["flagLocation"] = "0.6,0.965,0.07"
    # dataMCplot(h_data_empty, bgs=bgs, systs=systs, titles=titles, title=title, subtitle=subtitle, colors=colors, opts=d_newopts, opts_str=opts_str)
    dataMCplot(h_data,
               bgs=bgs,
               systs=systs,
               titles=titles,
               title=title,
               subtitle=subtitle,
               colors=colors,
               opts=d_newopts,
               opts_str=opts_str)