コード例 #1
0
cBins = []
for b in cBinsStr:
    cBins.append(float(b))

axis = ROOT.TAxis(len(cBins) - 1, array('d', cBins))

graph = {'scale': ROOT.TGraphErrors(), 'sigma': ROOT.TGraphErrors()}

#dataset = data.makeDataSet(options.genvar,options.genCut,-1)

for i in range(1, axis.GetNbins() + 1):
    cBinLo = axis.GetBinLowEdge(i)
    cBinHi = axis.GetBinUpEdge(i)
    cBinCenter = axis.GetBinCenter(i)
    dataset = data.makeDataSet(
        options.genvar, options.genCut + '*({cvar}>{lo}&&{cvar}<={hi})'.format(
            cvar=options.condVar, lo=cBinLo - 100, hi=cBinHi + 100), -1)
    histo = data.drawTH1(
        options.var, options.cut + '*({cvar}>{lo}&&{cvar}<={hi})'.format(
            cvar=options.condVar, lo=cBinLo, hi=cBinHi), "1", options.bins,
        options.mini, options.maxi)
    fitter = Fitter([options.var])
    fitter.importBinnedData(histo, [options.var], 'data')
    fitter.gaussianSum('model', options.var, dataset, options.genvar)
    fitter.fit('model', 'data', [ROOT.RooFit.SumW2Error(1)])
    chi = fitter.projection("model", "data", options.var,
                            "debugPlot_" + str(i) + "_" + options.output, 'x')
    print i, 'Chi2', chi
    for nuis in ['scale', 'sigma']:
        v, vErr = fitter.fetch(nuis)
        graph[nuis].SetPoint(i, cBinCenter, v)
コード例 #2
0
            if options.data == 0 or options.data == 2:
                dataPlotters[-1].setupFromFile(args[0] + '/' + fname + '.pck')
                dataPlotters[-1].addCorrectionFactor('xsec', 'tree')
                dataPlotters[-1].addCorrectionFactor('genWeight', 'tree')
                dataPlotters[-1].addCorrectionFactor('puWeight', 'tree')
if options.data == 2:
    sigmas = []
    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')
parameterization = {}

data = MergedPlotter(dataPlotters)
dataset = data.makeDataSet(options.genvar, options.genCut, -1)
histo = data.drawTH1(options.var, options.cut, "1", options.bins, options.mini,
                     options.maxi)
fitter = Fitter([options.var])
fitter.importBinnedData(histo, [options.var], 'data')
fitter.gaussianSum('model', options.var, dataset, options.genvar)
fitter.fit('model', 'data', [ROOT.RooFit.SumW2Error(1)])
chi = fitter.projection("model", "data", options.var,
                        "debugPlot_" + options.output + ".root", 'x')
print 'Chi2', chi

print 'make systematics'
meanDefault = fitter.w.var("scale").getVal()
sigmaDefault = fitter.w.var("sigma").getVal()

f2 = ROOT.TFile(options.output, "RECREATE")