Exemplo n.º 1
0
 'WWTo2L2Nu_13TeV_PH-skimid2859':lumisc,
 'WWTo4Q_13TeV-v2_PH-skimid2871':lumisc,
 'WWToLNuQQ_13TeV_PH-skimid2863':lumisc,
 'WZTo3LNu_13TeV_PH-skimid3032':lumisc,
 'ZZTo2L2Nu_13TeV_PH-skimid3046':lumisc,
 'ZZTo4L_13TeV_PH-skimid3045':lumisc,
 'TT_13TeV_PH-skimid2903':lumisc*1.138,
 'TT_13TeV_ext3_PH-skimid2901':lumisc*1.138,
 'TT_Mtt-1000toInf_13TeV_ext1_PH-skimid2989':lumisc*1.138/3.7,
 'TT_Mtt-700to1000_13TeV_ext1_PH-skimid2868':lumisc*1.138,
}

bghists.addFileList(bglist)

dat_hist=HistStorage(xs,lumi,path="/disk1/erdweg/television/DATA_25/merged/",isData=True)
dat_hist.addFile("allData")
# dat_hist.addFile("Data_Run2015B-PromptReco_251162_252126_SingleMuon-skimid81")
# dat_hist.addFile("Data_Run2015C-PromptReco_253888_254914_SingleMuon-skimid48")
# dat_hist.addFile("../../DATA_25/merged/Data_Run2015C-PromptReco_253888_254914_SingleMuon-skimid48")

basedir="/disk1/erdweg/television/SIGNAL/merged/"
sghist=HistStorage(xs,lumi,path=basedir,xstype=None)
sglist=OrderedDict()

sglist['RPV M=500']=[
 'RPVresonantToEMu_M-500_LLE_LQD-001_13TeV_CA-skimid3002',
]
sglist['RPV M=1000']=[
 'RPVresonantToEMu_M-1000_LLE_LQD-001_13TeV_CA-skimid3022',
]
sghist.additionalWeight = {'RPVresonantToEMu_M-500_LLE_LQD-001_13TeV_CA-skimid3002':lumisc}
class plotConfiguration:
    def __init__(self, useRoot=False ,basedir=None ,do_ddQCD=True):
        if basedir is None:
            self.basedir="/net/scratch_cms/institut_3a/materok/wprime/okt14/crab_projects/merged"
            #self.basedir="/net/scratch_cms/institut_3a/materok/wprime/run1/crab_projects/merged"
        else:
            self.basedir=basedir
        self.useRoot=useRoot


        self.xs= ConfigObj("xsFile13TeV_25ns_wprime.cfg")

        self.lumi=0
        self.lumi+= 5882 #RunB
        self.lumi+= 2646 #RunC
        self.lumi+= 4353 #RunD
        self.lumi+= 4049 #RunE
        self.lumi+= 3160 #RunF
        #self.lumi= 11048 #RunC + RunD + RunE
        #self.lumi= 12881 #RunB + RunC + RunF

        self.bghists=HistStorage(self.xs,self.lumi,path=self.basedir,useRoot=self.useRoot)
        self.bghists.setDataDriven("dataDrivenQCD")
        self.bghists.setDataDriven("dataDrivenTree")
        self.bghists.setDataDriven("dataDrivenTreept")
        self.bghists.setDataDriven("dataDrivenTreedecay_mode")
        self.bghists.setDataDriven("dataDrivenTreeeta")
        self.bghists.setDataDriven("dataDrivenTreelepton_n")
        self.bghists.setDataDriven("dataDrivenTree15_pt_base")
        self.bghists.setDataDriven("dataDrivenTree15_pt_baseFit")
        self.bghists.setDataDriven("dataDrivenTree15_pt_decay_base")
        self.bghists.setDataDriven("dataDrivenTree15_pt_decay_baseFit")
        self.bghists.setDataDriven("dataDrivenTree15_pt_eta_baseFit")
        self.bghists.setDataDriven("dataDrivenTree15_pt_eta_base")
        self.bghists.setDataDriven("dataDrivenTree15_lepton_n_base")
        self.bghists.setDataDriven("dataDrivenTree15_decay_mode_base")


        #do_ddQCD=False
        self.bglist=OrderedDict()

        self.bglist["Diboson"]=[
        "WW_TuneCUETP8M1_13TeV-pythia8",
        "WZ_TuneCUETP8M1_13TeV-pythia8",
        "ZZ_TuneCUETP8M1_13TeV-pythia8"
        ]

        if not do_ddQCD:
            self.bglist[r"$Z\rightarrow \nu\nu$"]=[
            "ZJetsToNuNu_HT-100To200_13TeV-madgraph",
            "ZJetsToNuNu_HT-200To400_13TeV-madgraph",
            "ZJetsToNuNu_HT-400To600_13TeV-madgraph",
            "ZJetsToNuNu_HT-600To800_13TeV-madgraph",
            "ZJetsToNuNu_HT-800To1200_13TeV-madgraph",
            "ZJetsToNuNu_HT-1200To2500_13TeV-madgraph",
            "ZJetsToNuNu_HT-2500ToInf_13TeV-madgraph"
            ]
        self.bglist[r"$\mathsf{Z/\gamma}$"]=[
        "DYJetsToLL_M-5to50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"
        ]

        self.bglist[r'$\mathsf{t\bar{t}}$']=[
        "TT_TuneCUETP8M1_13TeV-powheg-pythia8",
        "ST_t-channel_antitop_4f_leptonDecays_13TeV-powheg-pythia8_TuneCUETP8M1",
        "ST_t-channel_top_4f_leptonDecays_13TeV-powheg-pythia8_TuneCUETP8M1",
        "ST_tW_antitop_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1",
        "ST_tW_top_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1"
        ]
        if do_ddQCD:
            self.bglist["multijet"]=[
                "dataDrivenQCD",
            ]

        if not do_ddQCD:
            self.bglist["QCD"]=[
        "QCD_HT200to300_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "QCD_HT300to500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "QCD_HT500to700_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "QCD_HT700to1000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "QCD_HT1000to1500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "QCD_HT1500to2000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "QCD_HT2000toInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"
            ]



        #self.bglist[r'$\mathsf{W\rightarrow l \nu}$ $\mathsf{M_{W}<200 GeV}$']=[
        #"WJetsToLNu_HT-100To200_13TeV_MG",
        #"WJetsToLNu_HT-200To400_13TeV_MG",
        #"WJetsToLNu_HT-400To600_13TeV_MG",
        ##"WJetsToLNu_HT-600To800_13TeV_MG",
        #"WJetsToLNu_HT-600ToInf_13TeV_MG",
        ##"WJetsToLNu_HT-800To1200_13TeV_MG",
        ##"WJetsToLNu_HT-1200To2500_13TeV_MG",
        ##"WJetsToLNu_HT-2500ToInf_13TeV_MG",
        ##"WJetsToLNu_13TeV-FXFX_MC",
        ##"WJetsToLNu_13TeV_MG",
        #"WJetsToLNu_13TeV_AM",
        #]
        #self.bglist[r'$\mathsf{W\rightarrow l \nu}$ MCatNLO']=[
        ###"WJetsToLNu_13TeV-FXFX_MC",
        #"WJetsToLNu_13TeV_AM",
        ###"WJetsToLNu_13TeV-FXFX_MC",
        ##"WJetsToLNu_13TeVMLM_MG",
        #]

        self.bglist["WJets"]=[
        "WJetsToLNu_HT-100To200_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "WJetsToLNu_HT-200To400_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "WJetsToLNu_HT-400To600_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "WJetsToLNu_HT-600To800_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "WJetsToLNu_HT-800To1200_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "WJetsToLNu_HT-1200To2500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8",
        "WJetsToLNu_HT-2500ToInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"
        ]
        """
        self.bglist[r'$\mathsf{W\rightarrow \tau \nu}$']=[

        "WToTauNu_M-100_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-200_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-500_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-1000_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-2000_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-3000_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-4000_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-5000_TuneCUETP8M1_13TeV-pythia8-tauola",
        "WToTauNu_M-6000_TuneCUETP8M1_13TeV-pythia8-tauola"
        ]

        """


        self.bghists.additionalWeight["dataDrivenQCD"]=0.938091502614

        self.bghists.additionalWeight["TT_13TeV_AM"]=1./3.
        self.bghists.additionalWeight["TT_13TeV_ext1_AM"]=1./3.
        self.bghists.additionalWeight["TTJets_13TeV_AM"]=1./3.

        self.bghists.additionalWeight["TT_13TeV_ext3_PH"]=1./2.
        self.bghists.additionalWeight["TT_13TeV_ext4_PH"]=1./2.


        self.bghists.additionalWeight["TT_Mtt-700to1000_13TeV_ext1_PH"]=1./2.
        self.bghists.additionalWeight["TT_Mtt-700to1000_13TeV_PH"]=1./2.

        self.bghists.additionalWeight["TT_Mtt-1000toInf_13TeV_ext1_PH"]=1./2.
        self.bghists.additionalWeight["TT_Mtt-1000toInf_13TeV_ext2_PH"]=1./2.

        self.bghists.additionalWeight["WWToLNuQQ_13TeV_ext1_PH"]=1./2.
        self.bghists.additionalWeight["WWToLNuQQ_13TeV_PH"]=1./2.



        #bghists.additionalWeight["WJetsToLNu_HT-100To200_13TeV_MG"]=0.5
        #bghists.additionalWeight["TT_13TeV_PH"]=0.5
        #bghists.additionalWeight["TT_13TeV_ext3_PH"]=0.5
        #bghists.additionalWeight["ST_t-channel_4f_leptonDecays_13TeV_AM"]=0.5
        #bghists.additionalWeight["DYJetsToLL_M-50_13TeV_ext1_AM"]=0.5
        #bghists.additionalWeight["ST_t-channel_4f_leptonDecays_13TeV_ext1_AM"]=0.5


        self.bgcolorList={}
        self.bgcolorList[r'$\mathsf{W\rightarrow l \nu}$']=getRGBTColor(861)
        self.bgcolorList[r'$\mathsf{W\rightarrow \tau \nu}$']=getRGBTColor(861)
        self.bgcolorList["WJets"]="lightblue"
        self.bgcolorList["W"]=getRGBTColor(861)
        self.bgcolorList["W on shell"]="lightblue"
        self.bgcolorList[r'$\mathsf{W\rightarrow l \nu}$ MCatNLO']="brown"
        self.bgcolorList[r'$\mathsf{W\rightarrow l \nu}$ $\mathsf{M_{W}<200 GeV}$']="lightblue"
        self.bgcolorList["W HT"]="orange"
        self.bgcolorList["multijet"]=getRGBTColor(213)
        self.bgcolorList["multijet MC"]=getRGBTColor(216)
        self.bgcolorList["QCD from data"]=getRGBTColor(213)
        self.bgcolorList["QCD jet"]=getRGBTColor(213)
        self.bgcolorList["QCD MC"]="brown"
        self.bgcolorList["QCD"]="brown"
        self.bgcolorList["Z (inv)"]="darkblue"
        self.bgcolorList["Top"]=getRGBTColor(616)
        self.bgcolorList["$t\bar{t}$"]=getRGBTColor(616)
        self.bgcolorList[r'$\mathsf{t\bar{t}}$']="orange"
        self.bgcolorList["Diboson"]=getRGBTColor(413)
        self.bgcolorList[r"$\mathsf{Z/\gamma}$"]=getRGBTColor(810)
        self.bgcolorList["DY"]=getRGBTColor(810)
        self.bgcolorList[r"$\mathsf{\gamma  jets}$"]="yellow"
        self.bgcolorList[r"$Z\rightarrow \nu\nu$"]="yellow"

        # dummy signal
        #setup signals

        self.sghist=HistStorage(self.xs,self.lumi,path=self.basedir,useRoot=self.useRoot)
        self.sgList=OrderedDict()
        self.sgList["W' M=1TeV"]=["WprimeToTauNu_M-1000_TuneCUETP8M1_13TeV-pythia8-tauola"]

        self.sgcolorlist={}
        self.sgcolorlist["W' M=1TeV"]="darkred"

        self.dat_hist=HistStorage(self.xs,self.lumi,path=self.basedir,isData=True,useRoot=self.useRoot)

        #self.DataFiles=["TauRunC"]
        #self.DataFiles=["TauRunD"]
        #self.DataFiles=["TauRunE"]
        #self.DataFiles=["Tau_Run2016E_PromptReco_v2","Tau_Run2016C_PromptReco_v2","Tau_Run2016D_PromptReco_v2"]
        self.DataFiles=["Tau_Run2016B_PromptReco_v2","Tau_Run2016C_PromptReco_v2",
        "Tau_Run2016D_PromptReco_v2","Tau_Run2016E_PromptReco_v2","Tau_Run2016F_PromptReco_v1"]
        #self.DataFiles=["Tau_Run2016C_PromptReco_v2","Tau_Run2016D_PromptReco_v2"]
        #self.DataFiles=["TauRunC","TauRunD","TauRunE"]


    def compile_obj(self):
        self.bghists.addFileList(self.bglist)
        self.bghists.colorList=self.bgcolorList

        self.sghist.addFileList(self.sgList)
        self.sghist.colorList=self.sgcolorlist

        for data in self.DataFiles:
            self.dat_hist.addFile(data)
Exemplo n.º 3
0
def main():
    #get the list of bg and data files from the unusal config
    sampleinfos, basedir = getSampleInfo("201705_mergedext.config")
    lumi = sampleinfos.values()[-1]["lumi"]
    useRoot = False

    #we will use the same colors as the .c plotter for now
    colors = [100, 90, 80, 70, 60, 95, 85, 75, 65, 55]
    #reverse order and change to RGB
    colors = [getRGBTColor(i) for i in colors[::-1]]

    #make storage containers for the bgs and data
    bghists = HistStorage(xs=sampleinfos,
                          xstype="BSM3G",
                          lumi=lumi,
                          path=basedir,
                          useRoot=useRoot)
    dat_hist = HistStorage(path=basedir, isData=True, useRoot=useRoot)

    #make some lists that we will put into the containers
    colorList = {}
    bglist = OrderedDict()
    for sample in sampleinfos:
        info = sampleinfos[sample]
        sample = sample.replace(".root", "")
        if info["type"] == "bg":
            shortName = info["output"].replace(".root", "")
            if "#" in shortName:
                shortName = "$\mathsf{" + shortName.replace("#", "\\") + "}$"
            if shortName not in bglist:
                bglist[shortName] = [sample]
                colorList[shortName] = colors.pop()
            else:
                bglist[shortName].append(sample)
        #for data directly add the file
        if info["type"] == "data":
            dat_hist.addFile(sample)
    for bg in bglist:
        print("bglist['%s']=[" % (bg))
        for ibg in bglist[bg]:
            print("'ibg',")
        print("]")

    #now actually add the backgrounds
    bghists.addFileList(bglist)
    bghists.colorList = colorList

    hists = [
        "NDiMuonCombinations/MHT",
        "NDiMuonCombinations/Meff",
    ]

    histContainer = HistStorageContainer(bg=bghists, data=dat_hist)
    #histContainer=HistStorageContainer(bg=bghists,sg=sghist,data=dat_hist)

    binning = {
        "_pt": 25,
        "_mt": 25,
        "_met": 25,
        "MC_W_m_Gen": 10,
        "_jet_ht": 10,
    }

    xranges = {
        "_pt": [0, 1000],
        "_jet_ht": [0, 1600],
        "_mt": [150, 1600],
        "boson_qt": [0, 600],
        "_met": [0, 1300],
        "_ET_MET": [0, 4],
        "_DeltaPhi": [0.2, math.pi],
        "MC_W_m_Gen": [0, 1300],
        "relIso": [0, 0.05],
    }
    yranges = {
        "_ET_MET": [1.01e-3, 1e8],
        "_DeltaPhi": [1.01e-3, 1e8],
    }

    bghists.initStyle(style="bg")
    #sghist.initStyle(style="sg")
    for hist in hists:

        ##use different out dirs
        dir_name = "test"
        if not os.path.exists(dir_name):
            os.mkdir(dir_name)

        if "prof" in hist:
            hist_style = sc.style_container(kind="Lines",
                                            style='CMS',
                                            useRoot=useRoot,
                                            cmsPositon="upper left",
                                            lumi=lumi,
                                            cms=13)
        else:
            hist_style = sc.style_container(style='CMS',
                                            useRoot=useRoot,
                                            cmsPositon="upper left",
                                            lumi=lumi,
                                            cms=13)

        #change the style if you want
        #hist_style._error_bands_fcol=["grey","yellow"]
        #hist_style._error_bands_ecol=["lightgrey","yellow"]
        #hist_style._error_bands_alph=0.4
        #hist_style.Set_error_line_width(0.0000000001)
        hist_style.Set_poisson_error_off()
        #hist_style.Set_minor_ticks()
        #hist_style.Set_n_legend_columns(2)
        #hist_style.Set_xerr()
        #hist_style.Set_do_overflowbin()

        #get the actual histograms
        histContainer.getHist(hist)

        #programmable binning
        binf = getDictValue(hist, binning)
        if binf is not None:
            if isinstance(binf, list):
                histContainer.rebin(vector=binf)
            else:
                histContainer.rebin(width=binf)

        name = hist.replace("/", "")
        #test = plotter(hist=histContainer.getBGList(),data_hist=histContainer.getData(),data=True,style=hist_style)
        test = plotter(hist=histContainer.getBGList(), style=hist_style)
        test.Add_data(histContainer.getData())

        test.Add_plot('Ratio', pos=1, height=15)
        test.Add_plot('DiffRatio_width_increase', pos=2, height=15)
        mplt = test.create_plot()
        test.SavePlot('%s/%s.png' % (dir_name, name))
        test.SavePlot('%s/%s.pdf' % (dir_name, name))