Skip to content

Instantly share code, notes, and snippets.

@wiso
Created February 20, 2015 15:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wiso/497b3ea55ccc639db829 to your computer and use it in GitHub Desktop.
Save wiso/497b3ea55ccc639db829 to your computer and use it in GitHub Desktop.
Discrete profiling
{
"metadata": {
"name": "",
"signature": "sha256:49129f1ba75369822f0d975a66b9800a024085f4bca7ab501f6b1a8cf3ba306c"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import ROOT\n",
"import numpy as np\n",
"from collections import OrderedDict\n",
"\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def safe_factory(func):\n",
" def wrapper(self, *args):\n",
" result = func(self, *args)\n",
" if not result:\n",
" raise ValueError('invalid factory input \"%s\"' % args)\n",
" return result\n",
" return wrapper\n",
"\n",
"ROOT.RooWorkspace.factory = safe_factory(ROOT.RooWorkspace.factory)\n",
"\n",
"import urllib\n",
"urllib.urlretrieve(\"https://gist.githubusercontent.com/mazurov/6194738/raw/67e851fdac969e670a11296642478f1801324b8d/rootnotes.py\",\n",
" \"rootnotes.py\")\n",
"from rootnotes import default_canvas as TCanvas\n",
"#from ROOT import TCanvas\n",
"\n",
"try:\n",
" ROOT.gROOT.ProcessLine(\".x ~/atlasstyle/AtlasStyle.C\")\n",
" ROOT.SetAtlasStyle()\n",
"except AttributeError:\n",
" print \"no ATLAS atyle for you\"\n",
"\n",
"#ROOT.gROOT.ProcessLine(\".x /home/turra/cms_classes/loadClasses.C\")\n",
"%matplotlib inline\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"colors = ROOT.kBlue, ROOT.kRed, ROOT.kOrange, ROOT.kViolet, ROOT.kGreen, ROOT.kYellow, ROOT.kSpring\n",
"from itertools import cycle\n",
"colors = cycle(colors)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nsignal_expected = 1000\n",
"nbackground = 100000"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define observable and POI\n",
"-------------------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws = ROOT.RooWorkspace(\"workspace\")\n",
"ws_import = getattr(ws, \"import\")\n",
"\n",
"mass = ws.factory(\"mass[100,160]\")\n",
"mass.setBins(480)\n",
"mH = ws.factory(\"mH[125,110,150]\")\n",
"mH_shiftted = ws.factory(\"sum::mH_shifted(mH, mH_shift[-125])\")\n",
"mass_shifted = ws.factory(\"sum::mass_shifted(mass, mass_shift[-125])\")\n",
"bkg_index = ROOT.RooCategory(\"bkg_index\", \"bkg_index\")\n",
"ws_import(bkg_index)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"False"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define signal\n",
"--------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"signal = ws.factory(\"Gaussian:signal(mass, mH, res[1.3])\")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define background\n",
"-----------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bkgs = OrderedDict()\n",
"\n",
"bkgs['exp'] = 1, ws.factory(\"RooExponential::bkg_exp(mass, bkg_exp_par0[-0.05, -1, 0.01])\")\n",
"\n",
"bkgs['poly1'] = 1, ws.factory(\"RooBernstein::bkg_poly1(mass, {bkg_poly1_par0[1], bkg_poly1_par1[0.1, 0, 1000]})\")\n",
"bkgs['poly2'] = 2, ws.factory(\"RooBernstein::bkg_poly2(mass, {bkg_poly2_par0[1], bkg_poly2_par1[0.1,0,1000], bkg_poly2_par2[0,0,1000]})\")\n",
"bkgs['poly3'] = 3, ws.factory(\"RooBernstein::bkg_poly3(mass, {bkg_poly3_par0[1], bkg_poly3_par1[0.1,0,1000], bkg_poly3_par2[0,0,1000], bkg_poly3_par3[0,0,1000]})\")\n",
"bkgs['poly4'] = 4, ws.factory(\"RooBernstein::bkg_poly4(mass, {bkg_poly4_par0[1], bkg_poly4_par1[0.1,0,1000], bkg_poly4_par2[0,0,1000], bkg_poly4_par3[0,0,1000], bkg_poly4_par4[0,0,1000]})\")\n",
"bkgs['poly5'] = 5, ws.factory(\"RooBernstein::bkg_poly5(mass, {bkg_poly5_par0[1], bkg_poly5_par1[0.1,0,1000], bkg_poly5_par2[0,0,1000], bkg_poly5_par3[0,0,1000], bkg_poly5_par4[0,0,1000], bkg_poly5_par5[0,0,1000]})\")\n",
"\n",
"bkgs['landau'] = 2, ws.factory(\"Landau::bkg_landau(mass, bkg_landau_par0[80, 70, 130], bkg_landau_par1[10, 0, 1000])\")\n",
"\n",
"bkgs['exppol2'] = 2, ws.factory(\"EXPR::bkg_exppol2('exp(@1*(@0-100)/100.0 + @2*(@0-100)*(@0-100)/10000.0)', mass, bkg_exppol2_par0[-0.0025,-100.,100.],bkg_exppol2_par1[-0.02,-100,100.])\")\n",
"bkgs['exppol3'] = 3, ws.factory(\"EXPR::bkg_exppol3('exp(@1*(@0-100)/100.0 + @2*(@0-100)*(@0-100)/10000.0 + @3*(@0-100)*(@0-100)*(@0-100)/1000000.0)', mass, bkg_exppol3_par0[-0.0025,-100.,100.],bkg_exppol3_par1[-0.02,-100,100.],bkg_exppol3_par2[-0.02,-100,100.])\")\n",
"bkgs['exppol4'] = 4, ws.factory(\"EXPR::bkg_exppol4('exp(@1*(@0-100)/100.0 + @2*(@0-100)*(@0-100)/10000.0 + @3*(@0-100)*(@0-100)*(@0-100)/1000000.0 + @4*(@0-100)*(@0-100)*(@0-100)*(@0-100)/100000000.0)', mass, bkg_exppol4_par0[-0.0025,-100.,100.],bkg_exppol4_par1[-0.02,-100,100.],bkg_exppol4_par2[-0.02,-100,100.], bkg_exppol4_par3[-0.02,-100,100.])\")\n",
"\n",
"bkgs['laurent2'] = 2, ws.factory(\"EXPR::bkg_laurent2('@1 + @2/@0 + @3/(@0 * @0)', mass, bkg_laurent2_par0[0.002, -100, 100], bkg_laurent2_par1[-0.3, -100, 100], bkg_laurent2_par3[60, -100, 100])\")\n",
"bkgs['laurent3'] = 3, ws.factory(\"EXPR::bkg_laurent3('@1 + @2/@0 + @3/(@0 * @0) + @4/(@0 * @0 * @0)', mass, bkg_laurent3_par0[0.002, -100, 100], bkg_laurent3_par1[-0.3, -100, 100], bkg_laurent3_par3[60, -100, 100], bkg_laurent3_par4[1, -1000, 1000])\")\n",
"\n",
"bkgs['laurent_half'] = 4, ws.factory(\"EXPR::bkg_laurent_half('@1 + @2/@0 + @3/(@0 * @0) + @4/(sqrt(@0)) + @5 * @0', mass, bkg_laurent_half_par0[0.002, -100, 100], bkg_laurent_half_par1[-0.3, -100, 100], bkg_laurent_half_par3[60, -100, 100], bkg_laurent_half_par4[1, -1000, 1000], bkg_laurent_half_par5[1, -1000, 1000])\")\n",
"\n",
"ws.factory(\"RooBernstein::bkg_poly5_clone(mass, {bkg_poly5_par0_clone[1], bkg_poly5_par1_clone[0.5,0,1000], bkg_poly5_par2_clone[0.4,0,1000], bkg_poly5_par3_clone[0.3,0,1000], bkg_poly5_par4_clone[0.2,0,1000], bkg_poly5_par5_clone[0.2,0,1000]})\")\n",
"ws.factory(\"EXPR::bkg_exppol3_clone('exp(@1*(@0-100)/100.0 + @2*(@0-100)*(@0-100)/10000.0 + @3*(@0-100)*(@0-100)*(@0-100)/1000000.0)', mass, bkg_exppol3_par0_clone[-0.0025,-100.,100.],bkg_exppol3_par1_clone[-0.02,-100,100.],bkg_exppol3_par2_clone[-0.02,-100,100.])\")\n",
"ws.factory(\"Landau::bkg_landau_clone(mass, bkg_landau_clone_par0[80, 70, 130], bkg_landau_clone_par1[10, 0, 1000])\")\n",
"ws.factory(\"SUM::bkg_complicated(nc1[0.4] * bkg_poly5_clone, nc2[0.4] * bkg_landau_clone, bkg_exppol3_clone)\")\n",
"\n",
"bkgs['complicated'] = 999, ws.pdf(\"bkg_complicated\")\n",
"\n",
"#bkg_multi = ROOT.RooMultiPdf(\"bkg_multi\", \"bkg_multi\", bkg_index, bkg_list)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mu = ws.factory(\"mu[1, 0, 3]\")\n",
"nsignal = ws.factory(\"prod::nsignal(mu, nsignal_expected[%d])\" % nsignal_expected)\n",
"\n",
"models = OrderedDict()\n",
"models['exp'] = ws.factory(\"SUM::model_exp(nbkg[%d, 0, 1000000] * bkg_exp, nsignal * signal)\" % nbackground)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def create_model_from_template(template, new_name, old_bkg, new_bkg):\n",
" command = \"EDIT::%s(%s, %s=%s)\" % (new_name, template, old_bkg, new_bkg)\n",
" return ws.factory(command)\n",
"\n",
"def create_model_from_exp(new_name, new_bkg):\n",
" return create_model_from_template('model_exp', new_name, 'bkg_exp', new_bkg)\n",
"\n",
"cmfe = create_model_from_exp\n",
"\n",
"for bkg_name, bkg in bkgs.iteritems():\n",
" models[bkg_name] = cmfe('model_%s' % bkg_name, bkg[1].GetName())"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for i, model in enumerate(models, 1):\n",
" print \"{:<5d}{:<30}{:d}\".format(i, model, bkgs[model][0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1 exp 1\n",
"2 poly1 1\n",
"3 poly2 2\n",
"4 poly3 3\n",
"5 poly4 4\n",
"6 poly5 5\n",
"7 landau 2\n",
"8 exppol2 2\n",
"9 exppol3 3\n",
"10 exppol4 4\n",
"11 laurent2 2\n",
"12 laurent3 3\n",
"13 laurent_half 4\n",
"14 complicated 999\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# fit the constant to landau\n",
"obs_set = ROOT.RooArgSet(mass)\n",
"data_landau = models['landau'].generateBinned(obs_set, ROOT.RooFit.ExpectedData())\n",
"for k, pdf in models.iteritems():\n",
" pdf.fitTo(data_landau)\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mu.setVal(1)\n",
"mH.setVal(125)\n",
"true_model = models['complicated']\n",
"ws.var('bkg_poly5_par5_clone').setVal(ws.var('bkg_poly5_par5_clone').getVal() * 1.5)\n",
"ws.var('bkg_poly5_par4_clone').setVal(ws.var('bkg_poly5_par4_clone').getVal() * 1.5)\n",
"ws.var('bkg_poly5_par3_clone').setVal(ws.var('bkg_poly5_par3_clone').getVal() * 1.5)\n",
"data = true_model.generateBinned(obs_set,\n",
" ROOT.RooFit.ExpectedData()\n",
")\n",
"ws_import(data)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 11,
"text": [
"False"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"bkg only fit\n",
"------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws.var('mu').setVal(0)\n",
"ws.var('mu').setConstant()\n",
"\n",
"canvas = TCanvas()\n",
"frame = mass.frame()\n",
"\n",
"legend = ROOT.TLegend(0.4, 0.7, 0.9, 0.9)\n",
"legend.SetNColumns(2)\n",
"\n",
"data_bkg_only = true_model.generateBinned(obs_set,\n",
" ROOT.RooFit.ExpectedData()\n",
")\n",
"data_bkg_only.plotOn(frame)\n",
"\n",
"\n",
"for color, pdfname in zip(colors, models):\n",
" pdf = ws.pdf('model_' + pdfname)\n",
" pdf.fitTo(data_bkg_only)\n",
" pdf.plotOn(frame, ROOT.RooFit.LineColor(color), ROOT.RooFit.Name(\"curve_sb_%s\" % pdfname))\n",
" curve = frame.findObject(\"curve_sb_%s\" % pdfname)\n",
" curve.SetFillColor(0)\n",
" curve.SetMarkerSize(0)\n",
" legend.AddEntry(curve, pdfname)\n",
" \n",
"frame.addObject(legend)\n",
"frame.SetTitle(\"bkg-only fit\")\n",
"frame.Draw()\n",
"canvas"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 12,
"text": [
"<ROOT.TCanvas object (\"icanvas\") at 0x4fe9d10>"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"signal + background fit\n",
"------------------------"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mu.setConstant(False)\n",
"mH.setConstant(False)\n",
"mu.setVal(1)\n",
"mH.setVal(125)\n",
"\n",
"canvas = TCanvas()\n",
"frame = mass.frame()\n",
"data.plotOn(frame, ROOT.RooFit.Name(\"curve_data\"))\n",
"\n",
"legend = ROOT.TLegend(0.4, 0.5, 0.9, 0.9)\n",
"\n",
"print \"{:<20s}{:^4s}{:^12s}{:^12s}{:^17s}{:^17s}\".format(\"\", \"ndof bkg\", \"min nll\", \"chi/ndof\", \"mH\", \"mu\")\n",
"print \"=\" * 80\n",
"\n",
"mu_values, mu_values_err, mH_values, mH_values_err = [], [], [], []\n",
"models_for_fit = [m for m in models.keys() if (m != 'complicated' and m != 'landau')]\n",
"\n",
"for i, (color, pdfname) in enumerate(zip(colors, models_for_fit)):\n",
" mH.setVal(1)\n",
" mH.setVal(125)\n",
" pdf = ws.pdf('model_' + pdfname)\n",
" fit_result = pdf.fitTo(data, ROOT.RooFit.Save())#, ROOT.RooFit.Minos(True))\n",
" \n",
" curve_sb_name = \"curve_sb_%s\" % pdfname\n",
" pdf.plotOn(frame, ROOT.RooFit.LineColor(color), ROOT.RooFit.Name(curve_sb_name))\n",
" pdf.plotOn(frame, ROOT.RooFit.Components(\"bkg*\"), ROOT.RooFit.LineColor(color), ROOT.RooFit.LineStyle(ROOT.kDashed))\n",
" chi2 = frame.chiSquare(curve_sb_name, \"curve_data\", bkgs[pdfname][0])\n",
" print u\"{:<20s}{:>4d}{:>12.0f}{:>12f}{:>8.2f} \u00b1 {:<8.2f}{:>5.3f} \u00b1 {:<7.2f}\".format(pdfname, bkgs[pdfname][0], fit_result.minNll(), chi2, mH.getVal(), mH.getError(), mu.getVal(), mu.getError())\n",
" curve = frame.findObject(curve_sb_name)\n",
" curve.SetFillColor(0)\n",
" curve.SetMarkerSize(0)\n",
" legend.AddEntry(curve, pdfname)\n",
" \n",
" mu_values.append(mu.getVal())\n",
" mH_values.append(mH.getVal())\n",
" mu_values_err.append(mu.getError())\n",
" mH_values_err.append(mH.getError()) \n",
"\n",
"legend.SetNColumns(2)\n",
"frame.addObject(legend)\n",
"frame.SetTitle(\"s+b fit\")\n",
"frame.Draw()\n",
"\n",
"fig, ax = plt.subplots(figsize=(5, 8))\n",
"ax.errorbar(np.arange(len(models_for_fit)) + 0.5, mu_values, mu_values_err, fmt='.')\n",
"ax.set_ylim(1 - 3 * np.mean(mu_values_err), 1 + 3 * np.mean(mu_values_err))\n",
"ax.set_xticks(np.arange(len(models_for_fit)) + 0.5)\n",
"ax.set_xticklabels(models_for_fit, rotation='vertical')\n",
"ax.hlines(1., 0.5, len(models_for_fit), linestyles='dotted')\n",
"ax.set_ylabel(\"$\\hat{\\mu}$\")\n",
"plt.show()\n",
"\n",
"canvas"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" ndof bkg min nll chi/ndof mH mu \n",
"================================================================================\n",
"exp 1 -659715 0.295886 125.02 \u00b1 0.22 0.577 \u00b1 0.10 \n",
"poly1 1 -659005 3.156457 124.66 \u00b1 26.66 0.000 \u00b1 1.88 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"poly2 2 -659736 0.209648 125.08 \u00b1 0.20 0.731 \u00b1 0.10 \n",
"poly3 3 -659785 0.004059 125.02 \u00b1 0.17 1.011 \u00b1 0.10 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"poly4 4 -659786 0.000141 125.00 \u00b1 0.17 0.992 \u00b1 0.10 \n",
"poly5 5 -659786 0.000012 125.00 \u00b1 0.17 1.000 \u00b1 0.11 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"exppol2 2 -659784 0.006975 125.02 \u00b1 0.17 0.951 \u00b1 0.10 \n",
"exppol3 3 -659786 0.002118 125.00 \u00b1 0.17 0.961 \u00b1 0.10 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"exppol4 4 -659786 0.000216 125.00 \u00b1 0.17 0.991 \u00b1 0.10 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"laurent2 2 -659782 0.016514 125.03 \u00b1 0.17 0.927 \u00b1 0.10 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"laurent3 3 -659783 0.013812 125.02 \u00b1 0.17 0.928 \u00b1 0.10 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"laurent_half 4 -659766 0.082723 125.06 \u00b1 0.18 0.844 \u00b1 0.10 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nRK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x5059d10>"
]
},
{
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 13,
"text": [
"<ROOT.TCanvas object (\"icanvas\") at 0x4fe9d10>"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"obs = mu\n",
"nbins = 40"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mH.setVal(125)\n",
"mu.setVal(1)\n",
"\n",
"mH.setConstant(False)\n",
"mu.setConstant(False)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"true_model.fitTo(data)\n",
"mu_error = mu.getError()\n",
"print mu.getVal(), mu.getError(), mH.getVal(), mH.getError()\n",
"obs_min, obs_max = 1 - 8 * mu_error, 1 + 8 * mu_error"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.999599047823 0.108023172576 125.000141218 0.167403437545\n"
]
}
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nbins = 40\n",
"\n",
"canvas_noc = TCanvas()\n",
"\n",
"canvas = TCanvas()\n",
"canvas.Divide(1, 2)\n",
"canvas.cd(1)\n",
"\n",
"frame = obs.frame(ROOT.RooFit.Bins(nbins), ROOT.RooFit.Range(obs_min, obs_max))\n",
"frame_noc = obs.frame(ROOT.RooFit.Bins(nbins), ROOT.RooFit.Range(obs_min, obs_max))\n",
"frame_control = obs.frame(ROOT.RooFit.Bins(nbins), ROOT.RooFit.Range(obs_min, obs_max))\n",
"\n",
"legend = ROOT.TLegend(0.7, 0.7, 0.9, 0.9)\n",
"\n",
"\n",
"for color, pdfname in zip(colors, models_for_fit):\n",
" ndof = bkgs[pdfname][0]\n",
" print pdfname\n",
" mH.setVal(125)\n",
" mu.setVal(1)\n",
"\n",
" mH_set = ROOT.RooArgSet(obs)\n",
" ws.pdf(\"model_\" + pdfname).fitTo(data)\n",
" nll = ws.pdf(\"model_\" + pdfname).createNLL(data)\n",
"\n",
" nll_min_value = nll.getVal()\n",
"\n",
" nllp = nll.createProfile(mH_set)\n",
" \n",
" nllp_list = ROOT.RooArgList(nllp, ROOT.RooFit.RooConst(nll_min_value))\n",
" nllp_list2 = ROOT.RooArgList(nllp, ROOT.RooFit.RooConst(nll_min_value), ROOT.RooFit.RooConst(ndof))\n",
" \n",
"\n",
" nllp2 = ROOT.RooFormulaVar('nllp2', \"-2 log #\\lambda\", '2 * (@0 + @1)', nllp_list)\n",
" nllp2P = ROOT.RooFormulaVar('nllp2P', \"-2 log#\\lambda_P\", '2 * (@0 +@1) + @2', nllp_list2)\n",
" nllp2.plotOn(frame_noc, ROOT.RooFit.LineColor(color), ROOT.RooFit.LineWidth(1), ROOT.RooFit.FillColor(0), ROOT.RooFit.Precision(1), ROOT.RooFit.LineStyle(ROOT.kDotted))\n",
" nllp2P.plotOn(frame, ROOT.RooFit.LineColor(color), ROOT.RooFit.LineWidth(1), ROOT.RooFit.FillColor(0), ROOT.RooFit.Precision(1), ROOT.RooFit.Name(\"nll2P_%s\" % pdfname))\n",
" \n",
"\n",
"curves = []\n",
"for pdfname in models_for_fit:\n",
" curve = frame.findObject(\"nll2P_%s\" % pdfname)\n",
" curves.append(curve)\n",
" curve.SetMarkerSize(0)\n",
" legend.AddEntry(curve, pdfname)\n",
"\n",
"print curves \n",
" \n",
"envelope = ROOT.TGraph()\n",
"envelope_index = ROOT.TGraph()\n",
"for i, x in enumerate(np.linspace(obs_min, obs_max, 50)): \n",
" values = [curve.Eval(x) for curve in curves]\n",
" min_index = np.argmin(values)\n",
" envelope_index.SetPoint(i, x, min_index)\n",
" envelope.SetPoint(i, x, values[min_index])\n",
"envelope.SetLineStyle(ROOT.kDashed)\n",
"legend.AddEntry(envelope, \"envelope\")\n",
"envelope.SetLineWidth(3)\n",
"envelope.SetMarkerSize(0)\n",
"envelope.SetFillStyle(0)\n",
"\n",
"frame.addObject(envelope)\n",
"frame.addObject(legend)\n",
" \n",
"frame.Draw()\n",
"\n",
"canvas.cd(2)\n",
"envelope_index.SetMarkerSize(0)\n",
"envelope_index.Draw(\"APL\")\n",
"\n",
"canvas_noc.cd()\n",
"frame_noc.addObject(legend)\n",
"frame_noc.Draw()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"exp\n",
"poly1"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"poly2"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"poly3"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"poly4"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"poly5"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"exppol2"
]
}
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws.writeToFile(\"f.root\")"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws.Print()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"canvas_noc"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"canvas"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws.var(\"bkg_laurent2_par3\").getVal()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws.Print()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws.pdf('model_poly5').fitTo(data)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment