{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ea995c21",
   "metadata": {},
   "source": [
    "# rf702_efficiencyfit_2D\n",
    "Special pdf's: unbinned maximum likelihood fit of an efficiency eff(x) function\n",
    "to a dataset D(x,cut), cut is a category encoding a selection whose efficiency as function\n",
    "of x should be described by eff(x)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:**  Clemens Lange, Wouter Verkerke (C++ version)  \n",
    "<i><small>This notebook tutorial was automatically generated with <a href= \"https://github.com/root-project/root/blob/master/documentation/doxygen/converttonotebook.py\">ROOTBOOK-izer</a> from the macro found in the ROOT repository  on Tuesday, May 19, 2026 at 08:34 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "59429992",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:26.331276Z",
     "iopub.status.busy": "2026-05-19T20:34:26.331162Z",
     "iopub.status.idle": "2026-05-19T20:34:27.681040Z",
     "shell.execute_reply": "2026-05-19T20:34:27.680641Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT\n",
    "\n",
    "\n",
    "flat = False"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d69a793",
   "metadata": {},
   "source": [
    "Construct efficiency function e(x,y)\n",
    "-----------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7c35e38",
   "metadata": {},
   "source": [
    "Declare variables x,mean, with associated name, title, value and allowed\n",
    "range"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "38667811",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:27.710998Z",
     "iopub.status.busy": "2026-05-19T20:34:27.710848Z",
     "iopub.status.idle": "2026-05-19T20:34:27.958172Z",
     "shell.execute_reply": "2026-05-19T20:34:27.957797Z"
    }
   },
   "outputs": [],
   "source": [
    "x = ROOT.RooRealVar(\"x\", \"x\", -10, 10)\n",
    "y = ROOT.RooRealVar(\"y\", \"y\", -10, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "af356eaa",
   "metadata": {},
   "source": [
    "Efficiency function eff(x;a,b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0295a022",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:27.996006Z",
     "iopub.status.busy": "2026-05-19T20:34:27.995854Z",
     "iopub.status.idle": "2026-05-19T20:34:28.213542Z",
     "shell.execute_reply": "2026-05-19T20:34:28.213010Z"
    }
   },
   "outputs": [],
   "source": [
    "ax = ROOT.RooRealVar(\"ax\", \"ay\", 0.6, 0, 1)\n",
    "bx = ROOT.RooRealVar(\"bx\", \"by\", 5)\n",
    "cx = ROOT.RooRealVar(\"cx\", \"cy\", -1, -10, 10)\n",
    "\n",
    "ay = ROOT.RooRealVar(\"ay\", \"ay\", 0.2, 0, 1)\n",
    "by = ROOT.RooRealVar(\"by\", \"by\", 5)\n",
    "cy = ROOT.RooRealVar(\"cy\", \"cy\", -1, -10, 10)\n",
    "\n",
    "effFunc = ROOT.RooFormulaVar(\n",
    "    \"effFunc\", \"((1-ax)+ax*cos((x-cx)/bx))*((1-ay)+ay*cos((y-cy)/by))\", [ax, bx, cx, x, ay, by, cy, y]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "217b6f1e",
   "metadata": {},
   "source": [
    "Acceptance state cut (1 or 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "85de2a5d",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:28.215538Z",
     "iopub.status.busy": "2026-05-19T20:34:28.215408Z",
     "iopub.status.idle": "2026-05-19T20:34:28.333037Z",
     "shell.execute_reply": "2026-05-19T20:34:28.332371Z"
    }
   },
   "outputs": [],
   "source": [
    "cut = ROOT.RooCategory(\"cut\", \"cutr\", {\"accept\": 1, \"reject\": 0})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60ec8e7c",
   "metadata": {},
   "source": [
    "Construct conditional efficiency pdf E(cut|x,y)\n",
    "---------------------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0019835c",
   "metadata": {},
   "source": [
    "Construct efficiency pdf eff(cut|x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "46c965d4",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:28.334894Z",
     "iopub.status.busy": "2026-05-19T20:34:28.334759Z",
     "iopub.status.idle": "2026-05-19T20:34:28.451486Z",
     "shell.execute_reply": "2026-05-19T20:34:28.450992Z"
    }
   },
   "outputs": [],
   "source": [
    "effPdf = ROOT.RooEfficiency(\"effPdf\", \"effPdf\", effFunc, cut, \"accept\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e51eb637",
   "metadata": {},
   "source": [
    "Generate data(x,y,cut) from a toy model\n",
    "-------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb3eb352",
   "metadata": {},
   "source": [
    "Construct global shape pdf shape(x) and product model(x,cut) = eff(cut|x)*shape(x)\n",
    "(These are _only_ needed to generate some toy MC here to be used later)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a7c716c1",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:28.453216Z",
     "iopub.status.busy": "2026-05-19T20:34:28.453096Z",
     "iopub.status.idle": "2026-05-19T20:34:28.634238Z",
     "shell.execute_reply": "2026-05-19T20:34:28.633628Z"
    }
   },
   "outputs": [],
   "source": [
    "shapePdfX = ROOT.RooPolynomial(\"shapePdfX\", \"shapePdfX\", x, [0 if flat else -0.095])\n",
    "shapePdfY = ROOT.RooPolynomial(\"shapePdfY\", \"shapePdfY\", y, [0 if flat else +0.095])\n",
    "shapePdf = ROOT.RooProdPdf(\"shapePdf\", \"shapePdf\", [shapePdfX, shapePdfY])\n",
    "model = ROOT.RooProdPdf(\"model\", \"model\", {shapePdf}, Conditional=({effPdf}, {cut}))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10e89fae",
   "metadata": {},
   "source": [
    "Generate some toy data from model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7ce044e9",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:28.635783Z",
     "iopub.status.busy": "2026-05-19T20:34:28.635652Z",
     "iopub.status.idle": "2026-05-19T20:34:28.912639Z",
     "shell.execute_reply": "2026-05-19T20:34:28.890774Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#0] WARNING:Generation -- RooAcceptReject::ctor(effPdf_Int[]_Norm[cut]) WARNING: performing accept/reject sampling on a p.d.f in 2 dimensions without prior knowledge on maximum value of p.d.f. Determining maximum value by taking 200000 trial samples. If p.d.f contains sharp peaks smaller than average distance between trial sampling points these may be missed and p.d.f. may be sampled incorrectly.\n",
      "[#0] WARNING:Generation -- RooAcceptReject::ctor(effPdf_Int[]_Norm[cut]): WARNING: 200000 trial samples requested by p.d.f for 2-dimensional accept/reject sampling, this may take some time\n"
     ]
    }
   ],
   "source": [
    "data = model.generate({x, y, cut}, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "967d3da0",
   "metadata": {},
   "source": [
    "Fit conditional efficiency pdf to data\n",
    "--------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "33cebed3",
   "metadata": {},
   "source": [
    "Fit conditional efficiency pdf to data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e4bcea96",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:28.947224Z",
     "iopub.status.busy": "2026-05-19T20:34:28.947067Z",
     "iopub.status.idle": "2026-05-19T20:34:29.229978Z",
     "shell.execute_reply": "2026-05-19T20:34:29.229379Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Fitting -- RooAbsPdf::fitTo(effPdf_over_effPdf_Int[cut]) fixing normalization set for coefficient determination to observables in data\n",
      "[#1] INFO:Fitting -- using generic CPU library compiled with no vectorizations\n",
      "[#1] INFO:Fitting -- Creation of NLL object took 853.164 μs\n",
      "[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_effPdf_over_effPdf_Int[cut]_modelData) Summation contains a RooNLLVar, using its error level\n",
      "[#1] INFO:Minimization -- [fitFCN] No discrete parameters, performing continuous minimization only\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooFitResult object at 0x(nil)>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "effPdf.fitTo(data, ConditionalObservables={x, y}, PrintLevel=-1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ecabcf4",
   "metadata": {},
   "source": [
    "Plot fitted, data efficiency\n",
    "--------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a3476d3",
   "metadata": {},
   "source": [
    "Make 2D histograms of all data, data and efficiency function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "90991c82",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:29.231530Z",
     "iopub.status.busy": "2026-05-19T20:34:29.231408Z",
     "iopub.status.idle": "2026-05-19T20:34:29.419932Z",
     "shell.execute_reply": "2026-05-19T20:34:29.411637Z"
    }
   },
   "outputs": [],
   "source": [
    "hh_data_all = data.createHistogram(\"hh_data_all\", x, Binning=8, YVar=dict(var=y, Binning=8))\n",
    "hh_data_sel = data.createHistogram(\"hh_data_sel\", x, Binning=8, YVar=dict(var=y, Binning=8), Cut=\"cut==cut::accept\")\n",
    "hh_eff = effFunc.createHistogram(\"hh_eff\", x, Binning=50, YVar=dict(var=y, Binning=50))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5f5d4459",
   "metadata": {},
   "source": [
    "Some adjustsment for good visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3fae2de1",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:29.436028Z",
     "iopub.status.busy": "2026-05-19T20:34:29.435890Z",
     "iopub.status.idle": "2026-05-19T20:34:29.553332Z",
     "shell.execute_reply": "2026-05-19T20:34:29.552265Z"
    }
   },
   "outputs": [],
   "source": [
    "hh_data_all.SetMinimum(0)\n",
    "hh_data_sel.SetMinimum(0)\n",
    "hh_eff.SetMinimum(0)\n",
    "hh_eff.SetLineColor(\"kBlue\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7568a268",
   "metadata": {},
   "source": [
    "Draw all frames on a canvas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0d071457",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:29.554880Z",
     "iopub.status.busy": "2026-05-19T20:34:29.554753Z",
     "iopub.status.idle": "2026-05-19T20:34:29.795955Z",
     "shell.execute_reply": "2026-05-19T20:34:29.793870Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf702_efficiency_2D.png has been created\n"
     ]
    }
   ],
   "source": [
    "ca = ROOT.TCanvas(\"rf702_efficiency_2D\", \"rf702_efficiency_2D\", 1200, 400)\n",
    "ca.Divide(3)\n",
    "ca.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "hh_data_all.GetZaxis().SetTitleOffset(1.8)\n",
    "hh_data_all.Draw(\"lego\")\n",
    "ca.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "hh_data_sel.GetZaxis().SetTitleOffset(1.8)\n",
    "hh_data_sel.Draw(\"lego\")\n",
    "ca.cd(3)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "hh_eff.GetZaxis().SetTitleOffset(1.8)\n",
    "hh_eff.Draw(\"surf\")\n",
    "\n",
    "ca.SaveAs(\"rf702_efficiency_2D.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0f346f4d",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "66f18e61",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:29.810252Z",
     "iopub.status.busy": "2026-05-19T20:34:29.810121Z",
     "iopub.status.idle": "2026-05-19T20:34:30.002556Z",
     "shell.execute_reply": "2026-05-19T20:34:30.001908Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222869993\" style=\"width: 1200px; height: 400px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222869993() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(67305,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222869993', obj, '');\n",
       "});\n",
       "\n",
       "      }\n",
       "      const servers = ['/static/', 'https://root.cern/js/7.11.0/', 'https://jsroot.gsi.de/7.11.0/'],\n",
       "            path = 'build/jsroot';\n",
       "      if (typeof JSROOT !== 'undefined')\n",
       "         execCode(JSROOT);\n",
       "      else if (typeof requirejs !== 'undefined') {\n",
       "         servers.forEach((s,i) => { servers[i] = s + path; });\n",
       "         requirejs.config({ paths: { 'jsroot' : servers } })(['jsroot'],  execCode);\n",
       "      } else {\n",
       "         const config = document.getElementById('jupyter-config-data');\n",
       "         if (config)\n",
       "            servers[0] = (JSON.parse(config.innerHTML || '{}')?.baseUrl || '/') + 'static/';\n",
       "         else\n",
       "            servers.shift();\n",
       "         function loadJsroot() {\n",
       "            return !servers.length ? 0 : import(servers.shift() + path + '.js').catch(loadJsroot).then(() => execCode(JSROOT));\n",
       "         }\n",
       "         loadJsroot();\n",
       "      }\n",
       "   }\n",
       "   process_root_plot_1779222869993();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from ROOT import gROOT \n",
    "gROOT.GetListOfCanvases().Draw()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
