Skip to content

Instantly share code, notes, and snippets.

@wiso
Last active September 19, 2015 13:24
Show Gist options
  • Save wiso/5c6ad27adc964c6dbe79 to your computer and use it in GitHub Desktop.
Save wiso/5c6ad27adc964c6dbe79 to your computer and use it in GitHub Desktop.
roofitexample
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import ROOT\n",
"import time\n",
"import rootnotes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create an expected model signal + background made by an exponential plus a gaussian peak."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ws = ROOT.RooWorkspace('ws')\n",
"x = ws.factory(\"x[100,150]\") # independent variable (1d distribution). data are in [100 150]\n",
"signal = ws.factory(\"RooGaussian::signal(x, mH[125, 110, 140], sigma[1])\") # normal signal, with fixed width\n",
"background = ws.factory(\"RooExponential::background(x, slope[-0.01])\") # exponential background\n",
"model = ws.factory(\"SUM::model(s[50, 0, 100] * signal, b[5000, 0, 20000] * background)\") # combine signal and background\n",
"\n",
"mH, s, b = ws.var('mH'), ws.var('s'), ws.var('b')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data size = 5050\n"
]
}
],
"source": [
"# generate data\n",
"data = model.generate(ROOT.RooArgSet(x))\n",
"print \"data size =\", data.numEntries()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxwAAAI8CAIAAAD0vjrdAAAABmJLR0QAAAAAAAD5Q7t/AAAgAElE\nQVR4nO3dTYwkSXn4/8i/kNaXdXUjfED0rAbBvrIXOPkAyqqLzXgX7doGCw4st2Wm+wS2mJ4BUVkS\neAbLgtNMj/rIxQjkFyx25idfKkusL0aytBIsZheNVtuNZMmypvtmTvk/xE5uTr5VZGREZkTG96PV\nqicrMyoyMqv66cgnn4yyLBMAAADo5/8buwMAAABTQFAFAABgAEEVAACAAQRVAAAABhBUAQAAGEBQ\nBQAAYABBFQAAgAEEVQAAAAYQVAEAABjwgbE7AKCz7373u0KIb37zm522+vrXv167/Pvf/76BPim7\nevVq7fLvfe97tcuffPLJ3/72tx/84Af/93//12a/Onjuued+/etfy5+bHkqxv78vhLh9+3b+z/xn\nRX/zN3/z93//9/nPQoj8nwDcFPGYGsAv3/3ud7/1rW/Jn9U/v0899dTbb7/dssKTTz754osvDhBg\nRVHU8urTTz/9X//1X8UlrgVVn//85//xH/9RCPHss88KId58883a1eRuXrly5fbt23/6p3/6b//2\nbx/72Md++9vfKr7L008//dZbbz311FO/+c1v8tb4ugYcx+U/wDM/+tGP8p+/9KUvdd38yQq5/O23\n3/7BD37QNJtlw9OPkgt/85vfRFHUNJvV1Te/+c0oirpO6bWTUdSzzz775ptvNkVU/ckByYcFgBcI\nqgDP/PKXvxRCfPGLXxSPBlgqnnzyybcqsiz72te+Jlf4wQ9+YLzDtV566aX/elSWZd/4xjfkq3/3\nd39n5F3yi3TGPffccyqryUt+H/vYxyx1A4BTCKoAn8ipqeeff/4f/uEf5BKZX9XT97///fzSUu1k\n1dWrV19++eWXX3556xyS+ppV3/ve9/K4SmXzw8ND+V6Hh4fVV7/5zW/KoOrXv/61+mTV17/+9Rdf\nfPHFF1+sHYdvf/vbss0333zz29/+9re//W3FZotWq9VqtWp6SaNBAK7IAPhDfmy/853vZFn2/PPP\nCyGef/55lQ3lZb4nn3xya+MvvPBCcWEe5RQ9/fTT1c1feukllTXl8pdeeqm9G/kKH//4x4UQH/zg\nB4vr1IZcxff68z//865fdy+88EJ1k+KIySQqxTaLr165ckUI8Sd/8idZliVJIl9KkqR2E7n8c5/7\n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\n",
"text/plain": [
"<ROOT.TCanvas object (\"icanvas\") at 0x3fd1fd0>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c1 = rootnotes.default_canvas()\n",
"frame = x.frame()\n",
"data.plotOn(frame)\n",
"model.plotOn(frame)\n",
"frame.Draw()\n",
"c1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"time = 0.195474 s\n",
"mH = 124.876294\n",
"s = 32.757624\n",
"b = 5017.295826\n"
]
}
],
"source": [
"# set initial values\n",
"s.setVal(0)\n",
"b.setVal(4000)\n",
"mH.setVal(125)\n",
"\n",
"t = time.time()\n",
"model.fitTo(data)\n",
"print \"time = %f s\" % (time.time() - t)\n",
"print \"mH = %f\" % ws.var('mH').getVal()\n",
"print \"s = %f\" % ws.var('s').getVal()\n",
"print \"b = %f\" % ws.var('b').getVal()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment