Skip to content

Instantly share code, notes, and snippets.

@wiso
Created December 16, 2015 13:18
Show Gist options
  • Save wiso/b0fe31585c090f1341df to your computer and use it in GitHub Desktop.
Save wiso/b0fe31585c090f1341df to your computer and use it in GitHub Desktop.
RooFit convolution with RooFFTConvPdf
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#from ROOTaaS.iPyROOT import ROOT\n",
"import ROOT\n",
"import numpy as np\n",
"import rootnotes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Generate data from gaussian distribution (0,1) and save it to a TTree"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"data_raw = np.random.normal(size=10000)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"tree = ROOT.TNtuple(\"ntuple\", \"ntuple\", \"var1\")\n",
"for d in data_raw:\n",
" tree.Fill(d)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## RooFit definitions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Import data from TTree and create pdf, based on the histogram: TTree -> RooDataSet -> RooDataHist -> RooHistPdf"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"var1 = ROOT.RooRealVar('var1', 'var1', -5, 5)\n",
"varset = ROOT.RooArgSet(var1)\n",
"data = ROOT.RooDataSet(\"data\", \"data\", varset, ROOT.RooFit.Import(tree))\n",
"data_hist = ROOT.RooDataHist(\"data_hist\", \"data_hist\", varset, data)\n",
"hist_pdf = ROOT.RooHistPdf(\"hist_pdf\", \"hist_pdf\", varset, data_hist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Do several smearing with RooFFTConvPdf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convolve the RooHistPdf with a gaussian (repeat for several widths)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"all_smeared = []\n",
"mem = [] # to be sure object are not destroied\n",
"SMEARING_VALUES = (0.2, 1, 1.5, 2)\n",
"COLORS = [ROOT.kOrange + 2, ROOT.kMagenta - 2, ROOT.kYellow + 2, ROOT.kGreen + 2, ROOT.kPink]\n",
"for smearing_value in SMEARING_VALUES:\n",
" smearing_var = ROOT.RooRealVar('smearing_value_%.2f' % smearing_value, 'smearing_value', smearing_value)\n",
" smearing = ROOT.RooGaussian(\"smearing_%.2f\" % smearing_value, \"smearing\", var1, ROOT.RooFit.RooConst(0), smearing_var)\n",
" smeared = ROOT.RooFFTConvPdf(\"smeared_%.2f\" % smearing_value, \"smeared %.2f\" % smearing_value, var1, hist_pdf, smearing)\n",
" all_smeared.append(smeared)\n",
" mem.append(smearing_var)\n",
" mem.append(smearing)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxwAAAI8CAIAAAD0vjrdAAAABmJLR0QAAAAAAAD5Q7t/AAAgAElE\nQVR4nOzdW4wj2X3n+ROzgr0PW0umFoZfMgu9o+mbRwZ2UAVfnkjChlA13Va3LVuWNB4/jA3mbR5G\nglSXlC2Sa40z28ba2IcqVhIzngfPWLZhj0aGVeUHGQwCAxg2qoA1JEhutdFodPNlYNhJAgvsjoF1\n7MM/89ThiQuDZFx5vh8UujODwWAwSUb8eM6J//GCIFAAAADYzD8qewcAAAC2AaEKAAAgA4QqAACA\nDBCqAAAAMkCoAgAAyAChCgAAIAOEKgAAgAwQqgAAADJAqAIAAMjAh8reAcBp//bf/lul1Be/+MWV\n7vW5z30ucvlv/MZvZLBPqd29ezdy+VtvvRW5/MUXX/zrv/7rD3/4w3/7t3+b536t4Ad+4Ae+853v\nyM9x00scHR0ppR4+fKh/1T+XRf7CkX//L3zhC7/+67+uf1ZK6V8B5C4AUJIvf/nLa3wSX3zxxeQP\n9YsvvvjZz342v93Wknfj5Zdfttb/J//knyilPvzhDxewb2l84hOfkF199dVXX3311bjVZJ3Dw8Mg\nCD72sY8ppT7ykY8UuJsLzs7OEt4zP/ETP6GUeumll+RXWe3zn/98sfsIuIvuP6A0v/u7v6t//vSn\nP73q3V8MkeXvvPPOb/7mb8a1ZuXh5UWy8O233/Y8L641a1Vf/OIXPc9btUkv2be//W2l1Kuvvvrt\nb39bfq64n/u5n7t3717ZewEgFqEKKM23vvUtpdSnPvUptRiw0njxxRe/GxIEwWc/+1lZ4Td/8zcz\n3+FIb7zxxl8tCoLgzp07cuuv/dqvZfIoupMucz/wAz+QZjXp8vvIRz6S024s5Xnef/pP/0kpZTZW\nWXSiNdH9BxSGUAWUQ5qmPvrRj37lK1+RJTK+akO/8Ru/EVz1+0Q2Vt29e/fNN9988803l7YhpV8z\n7K233tK5Ks3d7927J48V2RLzxS9+UULVd77znfSNVZ/73Odef/31119/PfLv8KUvfUm2+e1vf/tL\nX/rSl770pZSb1U5PT09PT1e69c6dO2+88cYbb7yh/ziWfr/f7/f1z5/85CfNW3/wB38wCIKsGv8A\nZK/c3kfAWfIB/PKXvxwEwUc/+lGl1Ec/+tE0d5RuvhdffHHpxl977TVzYeSJPDzyKQiCN954I82a\nsvyNN95I3g29QuSYqsiIYD7WT/7kT6564HrttdfCdzH/Yq+++mr6bZq3Hh4eKqU+9rGP6eWf/vSn\nw3f51V/9VWubH//4x9P/SQNjvJq+6ezsLHKXTJ///OeVUj/xEz8hv7700ktL/1YAMsTVf0AJdKOU\ntLt86lOf+qVf+iXpDczJ3bt3pSfu5Zdflsz09ttvf+1rX5ORT4FxFn/zzTe/9rWvKaXeeOMN6U6K\nW3Nz9+7dkwvZXn755TfffFMWvvXWW+Zj/ef//J9/6qd+6qtf/apS6pVXXpFB5QnbfP3117/+9a8r\npV577TVJFd/97ne//vWvv/POOy+99NJ3v/tdpdRP//RPf/vb3/7DP/xDpdSrr76a3AMYBIFcAKiu\nOgHlv5/+9Ke/8pWvfOUrX/md3/kd6y6yRLKyUuqNN974oz/6I6XUxz/+cf0n/aM/+qO33377lVde\n+au/+ivr7tJAZe1VmgYq6enT/X1vv/22XAAIoCDlZjrATeGmKfk8fupTn1p636UtVbqdxlwoS8Kt\nSuHlm68pdMPYnTt3ZEm4pWrVxzo5OYl71taa4esfw8slnH3iE59Yus3kx4pb/qu/+qvmrx//+MfN\ndXTcCd9x6ZGZozdQTXwsgRLISVH6/oQMV09zpkwOVTpRmSvofBNeX/f0Rf5qkiYWs8cqOVSF84EV\nqnTTy9K9ClKHqshAKcJ/t81DlYRjqwdQX8hpLvzCF74QvrusZt4kS37mZ34m+XEJVUA1MVAdKJo+\n6Zpjrlcdrv7OO+94UaTnS64N1Cu//fbbcduxrheTrqjIi8heeeWVyE197Wtfe9PwyiuvvPLKK57n\nya1xI7L1Y0WSx1qDPOvIUl7SFfjOO++st+VIP/iDP6iM105885vfVKEaGStdBZnygkQAVUOoAoom\n1RN005QmzR6r1lawSOVPM1GpxKiUXsLdv2Z4++23JXi9/PLLd+7ciauuntVeWSQzSX6yRC7ckB5N\nZV7oJ2PjrIFWd+7ckaxpynx/AJSLgepAoXRD1O/+7u9G5qeUw9Wttiil1EsvvfTOO++88847BU9W\no0e+mxKyVBpnZ2eyhXv37iWUZaqCj370o9/61rekdUop9ZnPfEYZQ9TFK6+8olv4zPqoMnodwNYg\nVAGFStMQJZeVrbrl7373u9L48frrr//xH//xOju3lldeeWW9CGVGDYuuVrVqonrxxRfjOvisDJqV\n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\njx/Lrwk7EirBfPlHMEt9Hh8f53pZX90PDex/iWq98yrP/Y/Gy9G9AAAPS0lEQVSc3yYhWn32s5/7\nD//hP+hJA3/qp37qq1/9qvWtzLqXNJPfv38/89kGi0lXq/7xq5ax6v7mX5VjzzZuMM6VpX+Ncltc\n0787SxwHED8LmKdUYA4klwat5B2JG5AugqC4y/rqfmhg/0tU651XOe9/3Pw2cdFKyBHu+77v+/7m\nb/5m8ZbI/bQ3dfv2bRmhVf22q406KFYvKJX5mavub/5VOfZsV3l1q/B2tCTsf5pPtSpqTGVMdvV0\nap1MJv/T77STN5Icp0SR1/rV/dDA/peo1juvct7/lea3SRZ/0PCUslq71Y/+6I9+5zvfybbtSuVw\nKM7qj7/GGU1seF6r+5t/VY4924RQsu4bThXYSy37n/JDayr4+hQjVOmfAqW8NHtxdVh8vonv/d7v\n/e///f8Nr1nwtX51PzSw/yWq9c6rnPd/6fw2asVoZTKOJ+H9XzjmZ9t2pVKnK7Xs+JzTH3+TU55a\n5axX9zf/qrbt2fq+r5SK6w/yPO88xYTK+/sqeTV5P6V5r6R8P6Vsgtp/tn9+Y/kT0Ku9/H+8HHd0\nWHXHIg80eqG1NR2qzAb8m6Olo6Yu7/093/M9f//3fy+/HB0d/cmf/Mm7774bvkuaa/2KeY1yWo0d\nq/6O8afIZMfCl+yFPL9L+qNKeLVQU9bKbVfJzzHykBiXriKP5+GAVdhrpGPW0jNg5GpxMcu1UPWh\nsncgM77vdzod/Wur1ZKApa0XzKsw3V568oHc9/bf+9h7w+Fw1raPDnFXzVjbMReenJxYAzyVUuYl\newcHB7KmrjeT/mul8T3y+aujE5U80J//+Z/3+/0nT+wSzLInAOpud3dXzrt6iKQ+ExtLLldeDEae\n/Jo8AEvTq11tZGFTepD7bDY7Ozv7y7/8S10ZK7n5yrqKWR8ShZWTko/z1q1rdDKs3dKmT3b7+578\nvNJJc8Omr62xJaFKJ6rxeNxut/v9/mAwaLfbZq7qdoP9mCpz5jrKeEtNJhNrhaURJP0S68OzaqKy\nPmx6+9PpVCl1cXEhXWOz2Ww+n//8z//8P/2n//Q//sf/aH7ml6alz3zmM5Gb8jzvpZde+sYnpett\npv7u7Cx+Sq+wpYOlZHo+cwT6aDR68ODBcDjU1/q99dZbTOEHbJlwJ4OxxJPr+EJ38tRiOasf+ZEf\n+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\n",
"text/plain": [
"<ROOT.TCanvas object (\"icanvas\") at 0x3cc1250>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"canvas = rootnotes.default_canvas()\n",
"frame = var1.frame()\n",
"data.plotOn(frame)\n",
"hist_pdf.plotOn(frame, ROOT.RooFit.Name('curve_original_histogram'))\n",
"legend = ROOT.TLegend(0.65, 0.65, 0.88, 0.88)\n",
"legend.AddEntry(frame.findObject(\"curve_original_histogram\"), \"orignal histogram\", \"L\")\n",
"for i, (color, smeared) in enumerate(zip(COLORS, all_smeared)):\n",
" curve_name = \"curve_%d\" % i\n",
" smeared.plotOn(frame, ROOT.RooFit.LineColor(color), ROOT.RooFit.Name(curve_name))\n",
" curve = frame.findObject(curve_name)\n",
" legend.AddEntry(curve, curve.GetTitle().replace(\"Projection of\", \"\"), \"L\")\n",
"frame.addObject(legend)\n",
"frame.Draw()\n",
"canvas"
]
}
],
"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