예제 #1
0
        #        result.SetBinContent(ibin, 0.)
        result.SetBinError(ibin, 1.e+6)
        ibin += 1

    xmin = result.GetXaxis().GetXmin()
    xmax = result.GetXaxis().GetXmax()

    power = ROOT.TF1('power', '[0] + [1] * TMath::Power(x - [2], [3])', xmin,
                     xmax)
    power.SetParameters(0.01, 1., 10., -1.)
    power.SetParLimits(0, 0.005, 0.03)
    power.SetParLimits(1, 0.01, 3.)
    power.SetParLimits(2, -500., 500.)
    power.SetParLimits(3, -5., 0.)
    result.Fit(power)
    canvas.addObject(power)

    outputFile.cd()
    power.Write(PRODUCT + '_fit')

    text = 'f = %.4f + %.3f#times(p_{T} ' % (power.GetParameter(0),
                                             power.GetParameter(1))
    if power.GetParameter(2) >= 0.:
        text += ' - '
    else:
        text += ' + '
    text += '%.2f)^{%.2f}' % (abs(
        power.GetParameter(2)), power.GetParameter(3))

    canvas.addText(text, 0.4, 0.15, 0.6, 0.2)
예제 #2
0
파일: sf_compute.py 프로젝트: sraman2/MonoX
canvas.legend.add('sf_truth', 'MC truth', opt = 'LP', color = ROOT.kGreen, mstyle = 4)
canvas.ylimits = (0.9, 1.10)

canvas.legend.apply('sf_truth', sfTruth)
canvas.addHistogram(sfTruth, drawOpt = 'EP')

canvas.legend.apply('sf', scaleFactor)
canvas.addHistogram(scaleFactor, drawOpt = 'EP')

if ADDFIT:
    flat = ROOT.TF1('flat', '[0]', scaleFactor.GetXaxis().GetXmin(), scaleFactor.GetXaxis().GetXmax())
    flat.SetParameter(0, 1.)
    flat.SetParLimits(0, 0.95, 1.05)

    sfTruth.Fit(flat)
    canvas.addObject(flat)

    linear = ROOT.TF1('linear', '[0] + [1] * x', scaleFactor.GetXaxis().GetXmin(), scaleFactor.GetXaxis().GetXmax())
    linear.SetParameters(1., 0.01)
    linear.SetParLimits(0, 0.95, 1.05)
    linear.SetParLimits(1, -0.0001, 0.0001)

    sfTruth.Fit(linear)
    canvas.addObject(linear)

    text = 'flat = %.3f #pm %.3f' % (flat.GetParameter(0), flat.GetParError(0))
    canvas.addText(text, 0.3, 0.25, 0.5, 0.2)

    text = 'line = %.6f + %.6f * p_{T}' % (linear.GetParameter(0), linear.GetParameter(1))
    canvas.addText(text, 0.3, 0.35, 0.5, 0.25)
예제 #3
0
파일: sf_compute.py 프로젝트: yiiyama/MonoX
canvas.legend.apply('sf', scaleFactor)
canvas.addHistogram(scaleFactor, drawOpt = 'EP')

if ADDFIT:
    power = ROOT.TF1('power', '[0] + [1] / (x - [2])', scaleFactor.GetXaxis().GetXmin(), scaleFactor.GetXaxis().GetXmax())
    power.SetParameters(0.02, 1., 0.)
    power.SetParLimits(2, -175., 10000.)

    quad = ROOT.TF1('quad', '[0] + [1] * x + [2] * x**2', scaleFactor.GetXaxis().GetXmin(), scaleFactor.GetXaxis().GetXmax())
    quad.SetParameters(1., 0.001, 0.00001)

    function = quad

    scaleFactor.Fit(function)
    canvas.addObject(function)

    """
    text = 'f = %.4f + #frac{%.3f}{p_{T}' % (function.GetParameter(0), function.GetParameter(1))
    if function.GetParameter(2) >= 0.:
        text += ' - %.2f}' % function.GetParameter(2)
    else:
        text += ' + %.2f}' % (-function.GetParameter(2))
    """
    text = 'f = %.4f + %.4f * p_{T} + %.4f * p_{T}^{2}' % (function.GetParameter(0), function.GetParameter(1), function.GetParameter(2))

    canvas.addText(text, 0.3, 0.3, 0.5, 0.2)

canvas.xtitle = binningTitle
canvas.printWeb(outputName, 'scaleFactor_' + binningName, logy = False)