示例#1
0
def ProjectDraw(var, cut, Lumi, samplelist, pd):

    plt.cfg.register(samplelist)
    groupList = plt.cfg.getGroupPlot()

    histList = OrderedDict()
    VAR = var
    # remove extra space
    CUT = ' '.join(filter(None, selection[cut].split(" ")))

    # group tag
    for igroup in groupList:
        CUT_ = CUT
        if igroup == 'BkgSum': continue
        #if igroup in [ 'Fake', 'DATA' ] : CUT_ =  CUT.replace("isbVeto && ","")

        print col.CYAN + "drawLambda::GroupTag : ", igroup + col.ENDC
        histList[igroup] = {}
        ##sample tag
        for isample in groupList[igroup]['samples']:
            print("isample : ", isample)
            histList[igroup][isample] = []
            if 'weights' in samples[isample].keys():
                for jsample in samples[isample]['weights'].keys():
                    WEIGHTS = '(%s)*(%s)' % (
                        expressAliases(samples[isample]['weight']),
                        samples[isample]['weights'][jsample])
                    #WEIGHTS = '(%s)*(%s)' %( samples[isample]['weight'] , samples[isample]['weights'][jsample] )
                    if igroup not in ['Fake', 'DATA']:
                        WEIGHTS = "%s*(%s)" % (str(
                            float(Lumi) / 1000.), WEIGHTS)
                    filelist = [
                        x for x in samples[isample]['name']
                        if os.path.basename(x).split('_', 1)[-1].replace(
                            '.root', '').split('__part')[0] == jsample
                    ]
                    files = makeVectorList(filelist)
                    df = ROOT.RDataFrame("Events", files)
                    gROOT.cd()
                    histList[igroup][isample].append(
                        makeHisto(df, VAR, CUT_, WEIGHTS, jsample))
            else:
                WEIGHTS = expressAliases(samples[isample]['weight'])
                #WEIGHTS = samples[isample]['weight']
                if igroup not in ['Fake', 'DATA']:
                    WEIGHTS = "%s*(%s)" % (str(float(Lumi) / 1000.), WEIGHTS)
                filelist = samples[isample]['name']
                files = makeVectorList(filelist)
                df = ROOT.RDataFrame("Events", files)
                gROOT.cd()
                histList[igroup][isample].append(
                    makeHisto(df, VAR, CUT_, WEIGHTS, isample))

        pass
    # apply action
    return applyAction(histList, groupList)
示例#2
0
   def test1DirectWarningCall( self ):
      """Test Cling warning translation"""

      import warnings, ROOT

      warnings.filterwarnings( 'ignore', 'c1test' )
    # namespaced call, as 'Warning' is a builtin exception
      ROOT.Warning( 'c1test', 'c1test' )
示例#3
0
from modules.DataMCPlot import DataMCPlot
# from modules.DDE import DDE
from modules.binning import binning_dimuonmass
from modules.path_to_NeuralNet import path_to_NeuralNet
# from modules.nn import run_nn
# import modules.fr_net as fr_net
# from CMGTools.RootTools.DataMC.Histogram import Histogram
from modules.SignalReweighter import reweightSignals
from pdb import set_trace

from ROOT import ROOT, RDataFrame, TH1F, TFile, TTree, TTreeFormula, gInterpreter, gROOT, gSystem

# Enable ROOT's implicit multi-threading for all objects that provide an internal parallelisation mechanism
# ROOT.EnableImplicitMT()
# ROOT.EnableImplicitMT(68)
ROOT.EnableImplicitMT(20)


def initHist(hist, vcfg):
    hist.Sumw2()
    xtitle = vcfg.xtitle
    if vcfg.unit:
        xtitle += ' ({})'.format(vcfg.unit)
    hist.GetXaxis().SetTitle(xtitle)
    hist.SetStats(False)


class CreateHists(object):
    def __init__(self,
                 hist_cfg,
                 analysis_dir='/home/dehuazhu/SESSD/4_production/',
示例#4
0
def plot_signal( var, cut, norm=False ):

    colors = [ 616+4 , 800 , 416+1 , 800+7 , 860+10 , 600 , 616 , 921 , 922 ]

    if cut in selection: plotdir = cut
    pathname = PLOTDIR+"/signals/"+plotdir
    if not os.path.exists(pathname): os.system('mkdir -p %s'%pathname)

    histlist={}
    plt.cfg.register(sign) #sign is grouptag
    samples = plt.cfg.getModule('samples')
    
    CUT = ' '.join(filter( None , selection[cut].split(" ") ))
    signlist = plt.cfg.getGroupPlot()['Higgs']['samples']
    for i,isample in enumerate(signlist):
        WEIGHTS = "%s*(%s)" %( str(float(LUMI)/1000.) , expressAliases(samples[isample]['weight']) )
        filelist = [ x for x in samples[isample]['name'] ]
        files = makeVectorList(filelist)
        df = ROOT.RDataFrame("Events", files); gROOT.cd()
        histlist[isample] = makeHisto( df , var , CUT , WEIGHTS , isample )
        histlist[isample] = histlist[isample].GetPtr()
        histlist[isample].Sumw2()
        histlist[isample].SetLineWidth(2)
        histlist[isample].SetLineColor(colors[i])
    #######################################################################################################
    # add total histograms
    histlist['Higgs']=None
    for i, ihist in enumerate(histlist):
        if i==0:
            histlist['Higgs'] = histlist[ihist].Clone('totsignal')
            histlist['Higgs'].Sumw2()
        histlist['Higgs'].Add(histlist[ihist])
    
    leg = TLegend( 0.7 if not options.Statebox else 0.4 , 0.9-0.035*len(signlist), 0.9, 0.9)
    leg.SetBorderSize(0)
    leg.SetFillStyle(1001) #1001                                                                                                                                    
    leg.SetFillColor(0)
    for s in signlist : leg.AddEntry(histlist[s], '%s [%.1f]' %( s , histlist[s].Integral() ) , "l")

    c1 = TCanvas("c1", "Signals", 800, 600)
    c1.cd().SetLogy() if options.logy else c1.cd()
    c1.cd()
    c1.GetPad(0).SetTopMargin(0.06)
    c1.GetPad(0).SetRightMargin(0.05)
    c1.GetPad(0).SetTicks(1, 1)

    hmax = 0.
    for i, s in enumerate(signlist):
        if histlist[s].GetMaximum() > hmax: hmax = histlist[s].GetMaximum()
    if not options.logy:
        histlist[signlist[0]].SetMaximum(hmax*1.2)
        histlist[signlist[0]].SetMinimum(0.)
    else:
        histlist[signlist[0]].SetMaximum(hmax*4)

    c1.cd()
    for i, s in enumerate(signlist):
        histlist[s].Draw("HIST" if i==0 else "SAMES, HIST")
        if options.Statebox:
            c1.GetPad(0).Update()
            if i==1:
                lof = histlist[s].GetListOfFunctions()
                statbox = lof.FindObject('stats')
                statbox.SetX1NDC(0.779026); statbox.SetX2NDC(0.979401)
                statbox.SetY1NDC(0.593168); statbox.SetY2NDC(0.754658)
    leg.Draw()

    drawCMS(LUMI, "Simulation")
    printTable_signal( histlist , pathname , '%s_%s.txt' %(plotdir,var) , signlist , histplease=True )
    ### fitting mass shape?
    ########################

    if gROOT.IsBatch():
        c1.Print(pathname+"/"+var.replace('.', '_')+".png")
        #c1.Print(pathname+"/"+var.replace('.', '_')+".pdf")
        
    #print col.WARNING+"PURGE OBJECTS IN MEMORY"+col.ENDC
    #for process in histlist:
    #    histlist[process].Delete()
    pass
示例#5
0
import os, multiprocessing
import copy
import math
from array import array
from ROOT import ROOT, gROOT, gStyle, gRandom, TSystemDirectory
from ROOT import TFile, TChain, TTree, TCut, TH1, TH1F, TH2F, THStack, TGraph, TGraphAsymmErrors
from ROOT import TStyle, TCanvas, TPad
from ROOT import TLegend, TLatex, TText, TLine, TBox

from PhysicsTools.NanoAODTools.LambPlot.Utils.configs import Config
import PhysicsTools.NanoAODTools.LambPlot.Utils.color as col
from PhysicsTools.NanoAODTools.LambPlot.Utils.drawLambda import *
import importlib

from collections import OrderedDict
ROOT.EnableImplicitMT(12)

########## SETTINGS ##########

import optparse
usage = "usage: %prog [options]"
parser = optparse.OptionParser(usage)
parser.add_option("-v",
                  "--variable",
                  action="store",
                  type="string",
                  dest="variable",
                  default="")
parser.add_option("-c",
                  "--cut",
                  action="store",
示例#6
0
samples = plt.cfg.getModule('samples')
variables = plt.cfg.getModule('variables')
selection = plt.cfg.getModule('selection')
aliases = plt.cfg.getModule('aliases')
########################################

from collections import OrderedDict
import pandas as pds
import numpy as np

gROOT.SetBatch(True)
#gROOT.Macro('functions.C')
gStyle.SetOptStat(0)

#GO PARALLELISM!!!
ROOT.EnableImplicitMT(12)


def expressAliases(cut_):

    newcut = []
    for icut in cut_.split('*'):
        # level 1 expressing
        if icut in aliases.keys():
            for jcut in aliases[icut]['expr'].split('*'):
                # level 2 expressing
                if jcut in aliases.keys():
                    for kcut in aliases[jcut]['expr'].split('*'):
                        # level 3 expressing
                        if kcut in aliases.keys():
                            for lcut in aliases[kcut]['expr'].split('*'):
def ProjectDraw(var, cut, Lumi, samplelist, pd):

    plt.cfg.register(samplelist)
    groupList = plt.cfg.getGroupPlot()

    histList = {}
    VAR = var
    # remove extra space
    CUT = ' '.join(filter(None, selection[cut].split(" ")))

    # group tag
    for igroup in groupList:
        CUT_ = CUT
        if igroup == 'BkgSum': continue
        #if igroup in [ 'Fake', 'DATA' ] : CUT_ =  CUT.replace("isbVeto && ","")

        print col.OKGREEN + "drawLambda::GroupTag : ", igroup + col.ENDC
        #histList[igroup]={} ;
        hists = {}
        ##sample tag
        for isample in groupList[igroup]['samples']:
            print("isample : ", isample)
            hists[isample] = {}
            isptr = False
            ## check if weights exist
            if 'weights' in samples[isample].keys():
                ## sub-samples tag
                subhists = {}
                for jsample in samples[isample]['weights'].keys():
                    subhists[jsample] = {}
                    WEIGHTS = '(%s)*(%s)' % (
                        expressAliases(samples[isample]['weight']),
                        samples[isample]['weights'][jsample])
                    #WEIGHTS = '(%s)*(%s)' %( samples[isample]['weight'] , samples[isample]['weights'][jsample] )
                    if igroup not in ['Fake', 'DATA']:
                        WEIGHTS = "%s*(%s)" % (str(
                            float(Lumi) / 1000.), WEIGHTS)
                    filelist = [
                        x for x in samples[isample]['name']
                        if os.path.basename(x).split('_', 1)[-1].replace(
                            '.root', '').split('__part')[0] == jsample
                    ]
                    files = makeVectorList(filelist)
                    df = ROOT.RDataFrame("Events", files)
                    gROOT.cd()
                    subhists[jsample] = makeHisto(df, VAR, CUT_, WEIGHTS,
                                                  jsample)
                # Wg = (Wg*w1,Wg*w2)
                hists[isample] = sumHistoPtr(subhists, isample, True)
            else:
                ## all sub-samples share common weights
                ###print col.OKGREEN+ "drawLambda::Sub-Samples : "  , samples[isample]['weights'].keys() + col.ENDC
                isptr = True
                WEIGHTS = expressAliases(samples[isample]['weight'])
                #WEIGHTS = samples[isample]['weight']
                if igroup not in ['Fake', 'DATA']:
                    WEIGHTS = "%s*(%s)" % (str(float(Lumi) / 1000.), WEIGHTS)
                filelist = samples[isample]['name']
                files = makeVectorList(filelist)
                df = ROOT.RDataFrame("Events", files)
                gROOT.cd()
                hists[isample] = makeHisto(df, VAR, CUT_, WEIGHTS, isample)

        # Vg = sum(Wg,Zq)
        histList[igroup] = sumHistoPtr(hists, igroup, isptr)

        print col.YELLOW + "group tag processed : ", histList.keys(), col.ENDC

        histList[igroup].Sumw2()
        histList[igroup].SetFillColor(groupList[igroup]['fillcolor'])
        histList[igroup].SetFillStyle(groupList[igroup]['fillstyle'])
        histList[igroup].SetLineColor(groupList[igroup]['linecolor'])
        histList[igroup].SetLineStyle(groupList[igroup]['linestyle'])
    return histList