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"}
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()
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()
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!'
'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))