コード例 #1
0
def PlotHisto(datasetsMgr, h):
    dsetsMgr = datasetsMgr.deepCopy()

    opts.normalizeToOne = False

    # Create the MC Plot with selected normalization ("normalizeToOne", "normalizeByCrossSection", "normalizeToLumi")
    kwargs = {}
    if opts.normalizeToOne:
        #p = plots.MCPlot(dsetsMgr, h, normalizeToOne=True, saveFormats=[], **kwargs)
        p = plots.PlotSameBase(dsetsMgr,
                               h,
                               normalizeToOne=True,
                               saveFormats=[],
                               **kwargs)
    else:
        #p = plots.MCPlot(dsetsMgr, h, normalizeToLumi=opts.intLumi, saveFormats=[], **kwargs)
        p = plots.PlotSameBase(
            dsetsMgr, h, saveFormats=[], **kwargs
        )  #def __init__(self, datasetMgr, name, normalizeToOne=False, datasetRootHistoArgs={}, **kwargs):

    # Set default styles (Called by default in MCPlot)
    p._setLegendStyles()
    p._setLegendLabels()
    p._setPlotStyles()

    # Customise legend
    # p.histoMgr.setHistoLegendStyleAll("L")
    for d in dsetsMgr.getAllDatasetNames():
        if "SingleNeutrino" in d:
            p.histoMgr.setHistoLegendStyle(d, "F")
        else:
            p.histoMgr.setHistoLegendStyle(d, "L")

    p.setLegend(
        histograms.createLegend(
            0.68, 0.85 - 0.05 * len(dsetsMgr.getAllDatasetNames()), 0.92,
            0.92))
    #p.histoMgr.setHistoLegendStyle("histo_" + dataset, "LP")
    p.histoMgr.forEachHisto(lambda h: h.getRootHisto().Scale(
        1 / h.getRootHisto().GetBinContent(1)))
    #
    # Draw a customised plot
    plots.drawPlot(p, h, **GetHistoKwargs(h, opts))
    p.getFrame().GetXaxis().SetLabelSize(15)
    p.getFrame().GetXaxis().LabelsOption("u")

    # Remove legend?
    if 0:
        p.removeLegend()

    # Save in all formats chosen by user
    aux.SavePlot(p, opts.saveDir, h, opts.saveFormats, opts.url)
    return
コード例 #2
0
def PlotHisto(datasetsMgr, h):
    dsetsMgr = datasetsMgr.deepCopy()

    if "_resolution" in h.lower():
        dsetsMgr.remove("SingleNeutrino_L1TPU140", close=False)
        dsetsMgr.remove("SingleNeutrino_L1TPU200", close=False)

    # Create the plot with selected normalization ("normalizeToOne", "normalizeByCrossSection", "normalizeToLumi")
    kwargs = {}
    hList = getHistoList(dsetsMgr, h)

    if opts.normalizeToOne:
        if 1:
            p = plots.ComparisonManyPlot(hList[0],
                                         hList[1:],
                                         saveFormats=[],
                                         **kwargs)
            norm = True
            for hist in p.histoMgr.getHistos():
                if hist.getRootHisto().Integral() == 0:
                    norm = False
                    break
            if (norm):
                p.histoMgr.forEachHisto(lambda h: h.getRootHisto().Scale(
                    1.0 / h.getRootHisto().Integral()))
        else:
            # p = plots.MCPlot(dsetsMgr, h, normalizeToOne=True, saveFormats=[], **kwargs)
            p = plots.PlotSameBase(dsetsMgr,
                                   h,
                                   normalizeToOne=True,
                                   saveFormats=[],
                                   **kwargs)
    else:
        if 1:
            p = plots.ComparisonManyPlot(hList[0],
                                         hList[1:],
                                         saveFormats=[],
                                         **kwargs)  #FIXME
        else:
            # p = plots.MCPlot(dsetsMgr, h, normalizeToLumi=opts.intLumi, saveFormats=[], **kwargs)
            p = plots.PlotSameBase(dsetsMgr, h, saveFormats=[], **kwargs)

    # Set default styles (Called by default in MCPlot)
    p._setLegendStyles()
    p._setLegendLabels()
    p._setPlotStyles()

    # Overwrite default settings
    cNoPU = ROOT.kAzure
    cPU140 = ROOT.kRed
    cPU200 = ROOT.kOrange  #kYellow+2
    p.histoMgr.forEachHisto(
        lambda h: h.getRootHisto().SetFillColor(cNoPU) if "noPU" in h.getName(
        ) else h.getRootHisto().SetLineStyle(ROOT.kSolid))
    p.histoMgr.forEachHisto(lambda h: h.getRootHisto().SetFillStyle(
        3002) if "noPU" in h.getName() else h.getRootHisto().SetFillStyle(0))
    p.histoMgr.forEachHisto(lambda h: h.getRootHisto().SetLineColor(cPU140)
                            if "PU140" in h.getName() else (h.getRootHisto(
                            ).SetLineColor(cPU200) if "PU200" in h.getName(
                            ) else h.getRootHisto().SetLineColor(cNoPU)))
    p.histoMgr.forEachHisto(lambda h: h.getRootHisto().SetMarkerColor(cPU140)
                            if "PU140" in h.getName() else (h.getRootHisto(
                            ).SetMarkerColor(cPU200) if "PU200" in h.getName(
                            ) else h.getRootHisto().SetMarkerColor(cNoPU)))

    # Customise legend
    dsetName0 = dsetsMgr.getAllDatasetNames()[0].rsplit("_L1T")[0]
    for d in dsetsMgr.getAllDatasetNames():
        # Sanity check
        dsetName = d.rsplit("_L1T")[0]
        if dsetName0 != dsetName:
            msg = "Different types of datasets detected (\"%s\" and \"%s\"). This script is designed for just one type of dataset for different PU" % (
                dsetName, dsetName0)
            raise Exception(es + msg + ns)
        else:
            # print "*"*100
            # print dsetName0
            # print dsetName
            # print "*"*100
            pass

        if "noPU" in d:
            p.histoMgr.setHistoLegendStyle(d, "L")
            p.histoMgr.setHistoDrawStyle(d, "HIST")
        else:
            p.histoMgr.setHistoLegendStyle(d, "AP")
            p.histoMgr.setHistoDrawStyle(d, "P")

    # Create legend
    if 0:
        p.setLegend(
            histograms.createLegend(
                0.18, 0.86 - 0.04 * len(dsetsMgr.getAllDatasetNames()), 0.42,
                0.92))
    else:
        p.setLegend(
            histograms.createLegend(
                0.68, 0.86 - 0.04 * len(dsetsMgr.getAllDatasetNames()), 0.98,
                0.92))

    # Draw a customised plot
    kwargs = GetHistoKwargs(h, opts)
    saveName = h.replace("", "")
    #saveName += #iro
    plots.drawPlot(p, h, **kwargs)

    # Remove legend?
    if kwargs["removeLegend"]:
        p.removeLegend()

    # Save in all formats chosen by user
    aux.SavePlot(p, opts.saveDir, h, opts.saveFormats, opts.url)
    return
コード例 #3
0
def PlotHisto(datasetsMgr, h):
    dsetsMgr = datasetsMgr.deepCopy()

    if "_eff" in h.lower():
        dsetsMgr.remove("SingleNeutrino_L1TPU140", close=False)
        dsetsMgr.remove("SingleNeutrino_L1TPU200", close=False)
        opts.normalizeToOne = False
    elif "_deltargenp" in h.lower():
        dsetsMgr.remove("SingleNeutrino_L1TPU140", close=False)
        dsetsMgr.remove("SingleNeutrino_L1TPU200", close=False)
    elif "_resolution" in h.lower():
        dsetsMgr.remove("SingleNeutrino_L1TPU140", close=False)
        dsetsMgr.remove("SingleNeutrino_L1TPU200", close=False)
    elif "_rate" in h.lower():
        opts.normalizeToOne = False
        for d in dsetsMgr.getAllDatasetNames():
            if "SingleNeutrino" in d:
                continue
            else:
                dsetsMgr.remove(d, close=False)
    else:
        pass

    # Create the plot with selected normalization ("normalizeToOne", "normalizeByCrossSection", "normalizeToLumi")
    kwargs = {}
    hList = getHistoList(dsetsMgr, h)

    if opts.normalizeToOne:
        if 1:
            p = plots.ComparisonManyPlot(hList[0],
                                         hList[1:],
                                         saveFormats=[],
                                         **kwargs)
            norm = True
            for hist in p.histoMgr.getHistos():
                if hist.getRootHisto().Integral() == 0:
                    norm = False
                    break
            if (norm):
                p.histoMgr.forEachHisto(lambda h: h.getRootHisto().Scale(
                    1.0 / h.getRootHisto().Integral()))
        else:
            # p = plots.MCPlot(dsetsMgr, h, normalizeToOne=True, saveFormats=[], **kwargs)
            p = plots.PlotSameBase(dsetsMgr,
                                   h,
                                   normalizeToOne=True,
                                   saveFormats=[],
                                   **kwargs)
    else:
        if 1:
            p = plots.ComparisonManyPlot(hList[0],
                                         hList[1:],
                                         saveFormats=[],
                                         **kwargs)  #FIXME
        else:
            # p = plots.MCPlot(dsetsMgr, h, normalizeToLumi=opts.intLumi, saveFormats=[], **kwargs)
            p = plots.PlotSameBase(dsetsMgr, h, saveFormats=[], **kwargs)

    # Set default styles (Called by default in MCPlot)
    p._setLegendStyles()
    p._setLegendLabels()
    p._setPlotStyles()

    # Customise legend
    for d in dsetsMgr.getAllDatasetNames():
        if "SingleNeutrino" in d:
            p.histoMgr.setHistoLegendStyle(d, "F")
        else:
            p.histoMgr.setHistoLegendStyle(d, "L")
            p.histoMgr.setHistoDrawStyle(d, "HIST9")

            #p.histoMgr.setHistoLegendStyle(d, "P") #"L"
            #p.histoMgr.setHistoDrawStyle(d, "AP")

    # Create legend
    if 0:
        p.setLegend(
            histograms.createLegend(
                0.18, 0.86 - 0.04 * len(dsetsMgr.getAllDatasetNames()), 0.42,
                0.92))
    else:
        p.setLegend(
            histograms.createLegend(
                0.58, 0.86 - 0.04 * len(dsetsMgr.getAllDatasetNames()), 0.92,
                0.92))

    # Draw a customised plot
    kwargs = GetHistoKwargs(h, opts)
    plots.drawPlot(p, h, **kwargs)

    # Remove legend?
    if kwargs["removeLegend"]:
        p.removeLegend()

    # Save in all formats chosen by user
    aux.SavePlot(p, opts.saveDir, h, opts.saveFormats, opts.url)
    return
コード例 #4
0
ファイル: plotTH1.py プロジェクト: whahmad/HLTausAnalysis
def PlotHisto(datasetsMgr, h):
    dsetsMgr = datasetsMgr.deepCopy()

    if "eff" in h.lower():
        dsetsMgr.remove("SingleNeutrino_L1TPU140", close=False)
        dsetsMgr.remove("SingleNeutrino_L1TPU200", close=False)
        opts.normalizeToOne = False
    elif "resolution" in h.lower(
    ) or "PoorNeuResol" in h or "match" in h.lower():
        dsetsMgr.remove("SingleNeutrino_L1TPU140", close=False)
        dsetsMgr.remove("SingleNeutrino_L1TPU200", close=False)
    elif "rate" in h.lower():
        opts.normalizeToOne = False
        for d in dsetsMgr.getAllDatasetNames():
            if "SingleNeutrino" in d:
                continue
            else:
                dsetsMgr.remove(d, close=False)
    else:
        pass

    # Create the MC Plot with selected normalization ("normalizeToOne", "normalizeByCrossSection", "normalizeToLumi")
    kwargs = {}
    '''
    hList  = getHistoList(dsetsMgr, h)

    if opts.normalizeToOne:
        if 1:
            p = plots.ComparisonManyPlot(hList[0], hList[1:], saveFormats=[], **kwargs)
            p.histoMgr.forEachHisto(lambda h: h.getRootHisto().Scale(1.0/h.getRootHisto().Integral()) )
        else:
            # p = plots.MCPlot(dsetsMgr, h, normalizeToOne=True, saveFormats=[], **kwargs)
            p = plots.PlotSameBase(dsetsMgr, h, normalizeToOne=True, saveFormats=[], **kwargs)
    else:
        if 1:
            p = plots.ComparisonManyPlot(hList[0], hList[1:], saveFormats=[], **kwargs) #FIXME
        else:
            # p = plots.MCPlot(dsetsMgr, h, normalizeToLumi=opts.intLumi, saveFormats=[], **kwargs)
            p = plots.PlotSameBase(dsetsMgr, h, saveFormats=[], **kwargs)
    
    '''
    if opts.normalizeToOne:
        #p = plots.MCPlot(dsetsMgr, h, normalizeToOne=True, saveFormats=[], **kwargs)
        p = plots.PlotSameBase(dsetsMgr,
                               h,
                               normalizeToOne=True,
                               saveFormats=[],
                               **kwargs)
    else:
        #p = plots.MCPlot(dsetsMgr, h, normalizeToLumi=opts.intLumi, saveFormats=[], **kwargs)
        p = plots.PlotSameBase(
            dsetsMgr, h, saveFormats=[], **kwargs
        )  #def __init__(self, datasetMgr, name, normalizeToOne=False, datasetRootHistoArgs={}, **kwargs):

    # Set default styles (Called by default in MCPlot)
    p._setLegendStyles()
    p._setLegendLabels()
    p._setPlotStyles()

    # Customise legend
    # p.histoMgr.setHistoLegendStyleAll("L")
    for d in dsetsMgr.getAllDatasetNames():
        if "SingleNeutrino" in d:
            p.histoMgr.setHistoLegendStyle(d, "F")
        else:
            p.histoMgr.setHistoLegendStyle(d, "L")

    p.setLegend(
        histograms.createLegend(
            0.68, 0.85 - 0.05 * len(dsetsMgr.getAllDatasetNames()), 0.77,
            0.92))
    #p.histoMgr.setHistoLegendStyle("histo_" + dataset, "LP")

    # Draw a customised plot
    plots.drawPlot(p, h, **GetHistoKwargs(h, opts))
    if ("photons_egs_matching" in h.lower()):
        p.getFrame().GetXaxis().SetLabelSize(14)
        p.getFrame().GetXaxis().LabelsOption("u")

    # Remove legend?
    if 0:
        p.removeLegend()

    # Save in all formats chosen by user
    aux.SavePlot(p, opts.saveDir, h, opts.saveFormats, opts.url)
    return
コード例 #5
0
def PlotHisto(datasetsMgr, h):
    Verbose("Plotting histogram %s" % (h), True)

    dsetsMgr = datasetsMgr.deepCopy()

    # Create the plot with selected normalization
    kwargs = {}
    hList = getHistoList(dsetsMgr, h)

    if opts.normalizeToOne:
        p = plots.ComparisonManyPlot(hList[0],
                                     hList[1:],
                                     saveFormats=[],
                                     **kwargs)

        # For-loop: All histograms in manager
        normValue = 1.0
        for hist in p.histoMgr.getHistos():
            # print "hist.getRootHisto().GetName() = ", hist.getRootHisto().GetName()
            # print "histo.getRootHistos().GetBinContent(1) = ", hist.getRootHisto().GetBinContent(1)
            normValue = hist.getRootHisto().GetBinContent(1)
            hist.getRootHisto().Scale(1.0 / normValue)

        # Normalise wrt bin #1
        #p.histoMgr.forEachHisto(lambda h: h.getRootHisto().Scale(1.0/normValue) )
    else:
        p = plots.ComparisonManyPlot(hList[0],
                                     hList[1:],
                                     saveFormats=[],
                                     **kwargs)
        #p = plots.PlotSameBase(dsetsMgr, h, saveFormats=[], **kwargs)

    # Set default styles (Called by default in MCPlot)
    p._setLegendStyles()
    p._setLegendLabels()
    p._setPlotStyles()

    # Customise legend
    for d in dsetsMgr.getAllDatasetNames():
        if "SingleNeutrino" in d:
            p.histoMgr.setHistoLegendStyle(d, "F")
        else:
            p.histoMgr.setHistoLegendStyle(d, "L")
            p.histoMgr.setHistoDrawStyle(d, "HIST9")

    # Create legend
    if 0:
        p.setLegend(
            histograms.createLegend(
                0.18, 0.86 - 0.04 * len(dsetsMgr.getAllDatasetNames()), 0.42,
                0.92))
    else:
        p.setLegend(
            histograms.createLegend(
                0.58, 0.86 - 0.04 * len(dsetsMgr.getAllDatasetNames()), 0.92,
                0.92))

    # Draw a customised plot
    kwargs = GetHistoKwargs(h, opts)
    plots.drawPlot(p, h, **kwargs)

    # Remove legend?
    if kwargs["removeLegend"]:
        p.removeLegend()

    # Save in all formats chosen by user
    aux.SavePlot(p, opts.saveDir, h, opts.saveFormats, opts.url)
    return