示例#1
0
                dataPlotters[-1].addCorrectionFactor('puWeight', 'tree')

data = MergedPlotter(dataPlotters)

pvars = options.vars.split(',')
pmins = options.mins.split(',')
pmaxes = options.maxes.split(',')
pbins = options.bins.split(',')

if len(pvars) == 1:
    histo = data.drawTH1(pvars[0], options.cut, "1", int(pbins[0]),
                         float(pmins[0]), float(pmaxes[0]))

if len(pvars) == 2:
    histo = data.drawTH2(pvars[1] + ":" + pvars[0], options.cut, "1",
                         int(pbins[0]), float(pmins[0]), float(pmaxes[0]),
                         int(pbins[1]), float(pmins[1]), float(pmaxes[1]))

if len(pvars) == 3:
    histo = data.drawTH3(pvars[2] + ":" + pvars[1] + ":" + pvars[0],
                         options.cut, "1", int(pbins[0]), float(pmins[0]),
                         float(pmaxes[0]), int(pbins[1]), float(pmins[1]),
                         float(pmaxes[1]), int(pbins[2]), float(pmins[2]),
                         float(pmaxes[2]))

histo.Scale(options.factor)

F = ROOT.TFile(options.output, "RECREATE")
F.cd()
histo.Write("histo")
F.Close()
for d in dataPlotters:
    sigmas.append(d.tree.GetMaximum("xsec") / d.weightinv)
sigmaW = max(sigmas)
for p in dataPlotters:
    p.addCorrectionFactor(1.0 / sigmaW, 'flat')

data = MergedPlotter(dataPlotters)

orderInfo = {}
orders = options.order.split('|')
for v in orders:
    sp = v.split(':')
    orderInfo[sp[0]] = int(sp[1])

h = data.drawTH2(options.vary + ':' + options.varx, options.cut,
                 str(options.lumi), options.binsx, options.minx, options.maxx,
                 options.binsy, options.miny, options.maxy)
histo = copy.deepcopy(h)

fitter = Fitter(['M', 'mjj'])
fitter.w.var("M").setVal((options.maxx - options.minx) / 2.0)
fitter.w.var("M").setMax(options.maxx)
fitter.w.var("M").setMin(options.minx)
fitter.w.var("mjj").setVal((options.maxy - options.miny) / 2.0)
fitter.w.var("mjj").setMax(options.maxy)
fitter.w.var("mjj").setMin(options.miny)

#The MJ first that is trivial

jsonFile = open(options.json)
data = json.load(jsonFile)
            fnameParts=filename.split('.')
            fname=fnameParts[0]
            ext=fnameParts[1]
            if ext.find("root") ==-1:
                continue
            dataPlotters.append(TreePlotter(args[0]+'/'+fname+'.root','tree'))
            dataPlotters[-1].setupFromFile(args[0]+'/'+fname+'.pck')
            dataPlotters[-1].addCorrectionFactor('xsec','tree')
            dataPlotters[-1].addCorrectionFactor('genWeight','tree')
            dataPlotters[-1].addCorrectionFactor('puWeight','tree')
            dataPlotters[-1].addCorrectionFactor('truth_genTop_weight','branch')
            ##dataPlotters[-1].addCorrectionFactor('lnujj_sf','branch')
            ##dataPlotters[-1].addCorrectionFactor('lnujj_btagWeight','branch')
data=MergedPlotter(dataPlotters)

h = data.drawTH2(options.vary+":"+options.varx,options.cut,str(options.lumi),options.binsxfit,options.minx,options.maxx,options.binsyfit,options.miny,options.maxy) 



fitter=Fitter(['MVV','MJJ'])
fitter.w.var("MVV").setVal((options.maxx-options.minx)/2.0)
fitter.w.var("MVV").setMax(options.maxx)
fitter.w.var("MVV").setMin(options.minx)
fitter.w.var("MJJ").setVal((options.maxy-options.miny)/2.0)
fitter.w.var("MJJ").setMax(options.maxy)
fitter.w.var("MJJ").setMin(options.miny)

scaleSysts= {'Scale':"0.0094"}
resSysts  = {'Res':"0.2"}
fracSysts = {'TopPt0':"0.2",
             'TopPt1':"25000.0/MVV^2"} 
示例#4
0
                dataPlotters[-1].addCorrectionFactor('genWeight','tree')
                dataPlotters[-1].addCorrectionFactor('puWeight','tree')
    

data=MergedPlotter(dataPlotters)

pvars=options.vars.split(',')
pmins=options.mins.split(',')
pmaxes=options.maxes.split(',')
pbins=options.bins.split(',')

if len(pvars)==1:
    histo=data.drawTH1(pvars[0],options.cut,"1",int(pbins[0]),float(pmins[0]),float(pmaxes[0]))

if len(pvars)==2:
    histo=data.drawTH2(pvars[1]+":"+pvars[0],options.cut,"1",int(pbins[0]),float(pmins[0]),float(pmaxes[0]),int(pbins[1]),float(pmins[1]),float(pmaxes[1]))

if len(pvars)==3:
    histo=data.drawTH3(pvars[2]+":"+pvars[1]+":"+pvars[0],options.cut,"1",int(pbins[0]),float(pmins[0]),float(pmaxes[0]),int(pbins[1]),float(pmins[1]),float(pmaxes[1]),int(pbins[2]),float(pmins[2]),float(pmaxes[2]))


histo.Scale(options.factor)


F=ROOT.TFile(options.output,"RECREATE")
F.cd()
histo.Write("histo")
F.Close()


示例#5
0
            ext = fnameParts[1]
            if ext.find("root") == -1:
                continue
            dataPlotters.append(
                TreePlotter(args[0] + '/' + fname + '.root', 'tree'))
            dataPlotters[-1].setupFromFile(args[0] + '/' + fname + '.pck')
            dataPlotters[-1].addCorrectionFactor('xsec', 'tree')
            dataPlotters[-1].addCorrectionFactor('genWeight', 'tree')
            dataPlotters[-1].addCorrectionFactor('puWeight', 'tree')

data = MergedPlotter(dataPlotters)

#STandard histogramming
if not options.keys:
    histo = data.drawTH2(options.vary + ":" + options.varx, options.cut, "1",
                         options.binsx, options.minx, options.maxx,
                         options.binsy, options.miny, options.maxy)
    histoSUP = data.drawTH2(options.vary + "Up:" + options.varx, options.cut,
                            "1", options.binsx, options.minx, options.maxx,
                            options.binsy, options.miny, options.maxy)
    histoSDWN = data.drawTH2(options.vary + "Down:" + options.varx,
                             options.cut, "1", options.binsx, options.minx,
                             options.maxx, options.binsy, options.miny,
                             options.maxy)
    histoRUP = data.drawTH2(options.vary + "Smear:" + options.varx,
                            options.cut, "1", options.binsx, options.minx,
                            options.maxx, options.binsy, options.miny,
                            options.maxy)

    for i in range(0, options.smooth):
        histo.Smooth()
示例#6
0
            fnameParts = filename.split('.')
            fname = fnameParts[0]
            ext = fnameParts[1]
            if ext.find("root") == -1:
                continue
            dataPlotters.append(
                TreePlotter(args[0] + '/' + fname + '.root', 'tree'))
            dataPlotters[-1].setupFromFile(args[0] + '/' + fname + '.pck')
            dataPlotters[-1].addCorrectionFactor('xsec', 'tree')
            dataPlotters[-1].addCorrectionFactor('genWeight', 'tree')
            dataPlotters[-1].addCorrectionFactor('puWeight', 'tree')

data = MergedPlotter(dataPlotters)

#STandard histogramming
histo = data.drawTH2Keys(options.varx + "," + options.vary, options.cut,
                         options.binsx, options.minx, options.maxx,
                         options.binsy, options.miny, options.maxy)
if histo.Integral() > 0:
    histoNorm = data.drawTH2(options.vary + ":" + options.varx, options.cut,
                             "1", options.binsx, options.minx, options.maxx,
                             options.binsy, options.miny, options.maxy)
    histo.Scale(1.0 / histo.Integral())
    histo.Scale(histoNorm.Integral())
    F = ROOT.TFile(options.output, "UPDATE")
    F.cd()
    histo.Write(options.name)
    F.Close()
else:
    print 'No events to make keys with after cut!'
示例#7
0
    'weight': '(1.1*lnujj_l2_gen_pt)'
}
histograms['ptSpectrum_Down'] = {
    'scalex': 1.0,
    'scaley': 1.0,
    'weight': '(0.8*lnujj_l2_gen_pt)'
}

f = ROOT.TFile(options.output, "RECREATE")
f.cd()

for histo, info in histograms.iteritems():
    histSource = data.drawTH2(
        str(info['scaley']) + '*' + variables[1] + ':' + str(info['scalex']) +
        '*' + variables[0], '(' + options.cut + '*' + info['weight'] + ')',
        "1", int(options.binsx * options.kdeFactor),
        options.minx * 0.8, options.maxx * 1.5,
        int(options.binsy * options.kdeFactor), options.miny * 0.8,
        options.maxy * 1.5)
    vectorx = ROOT.vector('double')()
    vectory = ROOT.vector('double')()
    weight = ROOT.vector('double')()

    for i in range(1, histSource.GetNbinsX() + 1):
        for j in range(1, histSource.GetNbinsY() + 1):
            bin = histSource.GetBin(i, j)
            content = histSource.GetBinContent(bin)
            if content == 0.0:
                continue
            vectorx.push_back(histSource.GetXaxis().GetBinCenter(i))
            vectory.push_back(histSource.GetYaxis().GetBinCenter(j))