Skip to content

Instantly share code, notes, and snippets.

@wiso
Created April 15, 2015 22:36
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/aef17eb67ee9e21c3354 to your computer and use it in GitHub Desktop.
Save wiso/aef17eb67ee9e21c3354 to your computer and use it in GitHub Desktop.
chi2 problem root
{
"metadata": {
"name": "",
"signature": "sha256:df7234a0e683ce8cb49122683b52f787f9f33e94bdd3a6bc8189dc167e0e2aee"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import ROOT\n",
"from ROOT import RooFit\n",
"ROOT.gROOT.GetVersion()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"'5.34/24'"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ws = ROOT.RooWorkspace()\n",
"ws.factory('RooExponential::model(x[0,10], q[-0.05, -1, 1])')\n",
"\n",
"x = ws.var('x')\n",
"model = ws.pdf('model')\n",
"\n",
"ws.saveSnapshot(\"initial\", ws.allVars())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"True"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"chi2s = []\n",
"chi2s_curve = []\n",
"\n",
"for itoy in xrange(500):\n",
" ws.loadSnapshot(\"initial\")\n",
" data = model.generateBinned(ROOT.RooArgSet(x), 1000)\n",
" frame = x.frame()\n",
" data.plotOn(frame, RooFit.Name(\"curve_data\"))\n",
" model.plotOn(frame, RooFit.Name(\"curve_model\"))\n",
" chi2s.append(frame.chiSquare() * x.getBins())\n",
" \n",
" function = model.asTF(ROOT.RooArgList(x))\n",
" curve_data = frame.findObject(\"curve_data\")\n",
" chi2s_curve.append(curve_data.Chisquare(function))\n",
" \n",
"print np.mean(chi2s)\n",
"print np.mean(chi2s_curve)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"76.9831986271\n",
"878.671902437\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.hist(chi2s);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nQ8JBX+SqAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x2e66b50>"
]
}
],
"prompt_number": 5
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment