{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "08677d85",
   "metadata": {},
   "source": [
    "# rf708_bphysics\n",
    "Special pdf's: special decay pdf for B physics with mixing and/or CP violation\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": "ef8a28c6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:53.094515Z",
     "iopub.status.busy": "2026-05-19T20:34:53.094391Z",
     "iopub.status.idle": "2026-05-19T20:34:54.049962Z",
     "shell.execute_reply": "2026-05-19T20:34:54.049319Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "943f712b",
   "metadata": {},
   "source": [
    "B-decay with mixing\n",
    "-------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0b778d8",
   "metadata": {},
   "source": [
    "Construct pdf\n",
    "-------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9677d8de",
   "metadata": {},
   "source": [
    "Observable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1ad6e629",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.051649Z",
     "iopub.status.busy": "2026-05-19T20:34:54.051504Z",
     "iopub.status.idle": "2026-05-19T20:34:54.212455Z",
     "shell.execute_reply": "2026-05-19T20:34:54.211877Z"
    }
   },
   "outputs": [],
   "source": [
    "dt = ROOT.RooRealVar(\"dt\", \"dt\", -10, 10)\n",
    "dt.setBins(40)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "684900a1",
   "metadata": {},
   "source": [
    "Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "debfe7ee",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.214040Z",
     "iopub.status.busy": "2026-05-19T20:34:54.213921Z",
     "iopub.status.idle": "2026-05-19T20:34:54.334716Z",
     "shell.execute_reply": "2026-05-19T20:34:54.334099Z"
    }
   },
   "outputs": [],
   "source": [
    "dm = ROOT.RooRealVar(\"dm\", \"delta m(B0)\", 0.472)\n",
    "tau = ROOT.RooRealVar(\"tau\", \"tau (B0)\", 1.547)\n",
    "w = ROOT.RooRealVar(\"w\", \"flavour mistag rate\", 0.1)\n",
    "dw = ROOT.RooRealVar(\"dw\", \"delta mistag rate for B0/B0bar\", 0.1)\n",
    "\n",
    "mixState = ROOT.RooCategory(\"mixState\", \"B0/B0bar mixing state\", {\"mixed\": -1, \"unmixed\": 1})\n",
    "\n",
    "tagFlav = ROOT.RooCategory(\"tagFlav\", \"Flavour of the tagged B0\", {\"B0\": 1, \"B0bar\": -1})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f2f5137",
   "metadata": {},
   "source": [
    "Use delta function resolution model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d3a941f8",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.336289Z",
     "iopub.status.busy": "2026-05-19T20:34:54.336170Z",
     "iopub.status.idle": "2026-05-19T20:34:54.451911Z",
     "shell.execute_reply": "2026-05-19T20:34:54.451313Z"
    }
   },
   "outputs": [],
   "source": [
    "tm = ROOT.RooTruthModel(\"tm\", \"truth model\", dt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2476f96b",
   "metadata": {},
   "source": [
    "Construct Bdecay with mixing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "974db23e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.453463Z",
     "iopub.status.busy": "2026-05-19T20:34:54.453344Z",
     "iopub.status.idle": "2026-05-19T20:34:54.589897Z",
     "shell.execute_reply": "2026-05-19T20:34:54.589284Z"
    }
   },
   "outputs": [],
   "source": [
    "bmix = ROOT.RooBMixDecay(\"bmix\", \"decay\", dt, mixState, tagFlav, tau, dm, w, dw, tm, type=\"DoubleSided\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5738bdb6",
   "metadata": {},
   "source": [
    "Plot pdf in various slices\n",
    "---------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3f8111d",
   "metadata": {},
   "source": [
    "Generate some data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e165c9ae",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.591492Z",
     "iopub.status.busy": "2026-05-19T20:34:54.591371Z",
     "iopub.status.idle": "2026-05-19T20:34:54.744793Z",
     "shell.execute_reply": "2026-05-19T20:34:54.744186Z"
    }
   },
   "outputs": [],
   "source": [
    "data = bmix.generate({dt, mixState, tagFlav}, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b31e6b5a",
   "metadata": {},
   "source": [
    "Plot B0 and B0bar tagged data separately\n",
    "For all plots below B0 and B0 tagged data will look somewhat differently\n",
    "if the flavor tagging mistag rate for B0 and B0 is different (i.e. dw!=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f35540a7",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.746364Z",
     "iopub.status.busy": "2026-05-19T20:34:54.746241Z",
     "iopub.status.idle": "2026-05-19T20:34:54.979920Z",
     "shell.execute_reply": "2026-05-19T20:34:54.979323Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 4542 events out of 10000 total events\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt represents a slice in (tagFlav)\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt integrates over variables (mixState)\n",
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 5458 events out of 10000 total events\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55b4af12f6c0>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt represents a slice in (tagFlav)\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt integrates over variables (mixState)\n"
     ]
    }
   ],
   "source": [
    "frame1 = dt.frame(Title=\"B decay distribution with mixing (B0/B0bar)\")\n",
    "\n",
    "data.plotOn(frame1, Cut=\"tagFlav==tagFlav::B0\")\n",
    "bmix.plotOn(frame1, Slice=(tagFlav, \"B0\"))\n",
    "\n",
    "data.plotOn(frame1, Cut=\"tagFlav==tagFlav::B0bar\", MarkerColor=\"c\")\n",
    "bmix.plotOn(frame1, Slice=(tagFlav, \"B0bar\"), LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "257a9e4d",
   "metadata": {},
   "source": [
    "Plot mixed slice for B0 and B0bar tagged data separately"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "98a71f19",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:54.981265Z",
     "iopub.status.busy": "2026-05-19T20:34:54.981143Z",
     "iopub.status.idle": "2026-05-19T20:34:55.193656Z",
     "shell.execute_reply": "2026-05-19T20:34:55.193060Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 933 events out of 10000 total events\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55b4af1df6c0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt represents a slice in (mixState,tagFlav)\n",
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 1461 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt represents a slice in (mixState,tagFlav)\n"
     ]
    }
   ],
   "source": [
    "frame2 = dt.frame(Title=\"B decay distribution of mixed events (B0/B0bar)\")\n",
    "\n",
    "data.plotOn(frame2, Cut=\"mixState==mixState::mixed&&tagFlav==tagFlav::B0\")\n",
    "bmix.plotOn(frame2, Slice={tagFlav: \"B0\", mixState: \"mixed\"})\n",
    "\n",
    "data.plotOn(frame2, Cut=\"mixState==mixState::mixed&&tagFlav==tagFlav::B0bar\", MarkerColor=\"c\")\n",
    "bmix.plotOn(frame2, Slice={tagFlav: \"B0bar\", mixState: \"mixed\"}, LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea09248b",
   "metadata": {},
   "source": [
    "Plot unmixed slice for B0 and B0bar tagged data separately"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "75f68838",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.194976Z",
     "iopub.status.busy": "2026-05-19T20:34:55.194858Z",
     "iopub.status.idle": "2026-05-19T20:34:55.318826Z",
     "shell.execute_reply": "2026-05-19T20:34:55.318198Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 3609 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt represents a slice in (mixState,tagFlav)\n",
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 3997 events out of 10000 total events\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55b4af7df9b0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt represents a slice in (mixState,tagFlav)\n"
     ]
    }
   ],
   "source": [
    "frame3 = dt.frame(Title=\"B decay distribution of unmixed events (B0/B0bar)\")\n",
    "\n",
    "data.plotOn(frame3, Cut=\"mixState==mixState::unmixed&&tagFlav==tagFlav::B0\")\n",
    "bmix.plotOn(frame3, Slice={tagFlav: \"B0\", mixState: \"unmixed\"})\n",
    "\n",
    "data.plotOn(frame3, Cut=\"mixState==mixState::unmixed&&tagFlav==tagFlav::B0bar\", MarkerColor=\"c\")\n",
    "bmix.plotOn(frame3, Slice={tagFlav: \"B0bar\", mixState: \"unmixed\"}, LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ae3a658c",
   "metadata": {},
   "source": [
    "B-decay with CP violation\n",
    "-------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a177005c",
   "metadata": {},
   "source": [
    "Construct pdf\n",
    "-------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d899ea7c",
   "metadata": {},
   "source": [
    "Additional parameters needed for B decay with CPV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6bfd64a9",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.320204Z",
     "iopub.status.busy": "2026-05-19T20:34:55.320085Z",
     "iopub.status.idle": "2026-05-19T20:34:55.430541Z",
     "shell.execute_reply": "2026-05-19T20:34:55.429941Z"
    }
   },
   "outputs": [],
   "source": [
    "CPeigen = ROOT.RooRealVar(\"CPeigen\", \"CP eigen value\", -1)\n",
    "absLambda = ROOT.RooRealVar(\"absLambda\", \"|lambda|\", 1, 0, 2)\n",
    "argLambda = ROOT.RooRealVar(\"absLambda\", \"|lambda|\", 0.7, -1, 1)\n",
    "effR = ROOT.RooRealVar(\"effR\", \"B0/B0bar reco efficiency ratio\", 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ab1a675",
   "metadata": {},
   "source": [
    "Construct Bdecay with CP violation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f2df63bb",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.432141Z",
     "iopub.status.busy": "2026-05-19T20:34:55.432017Z",
     "iopub.status.idle": "2026-05-19T20:34:55.555121Z",
     "shell.execute_reply": "2026-05-19T20:34:55.554493Z"
    }
   },
   "outputs": [],
   "source": [
    "bcp = ROOT.RooBCPEffDecay(\n",
    "    \"bcp\", \"bcp\", dt, tagFlav, tau, dm, w, CPeigen, absLambda, argLambda, effR, dw, tm, type=\"DoubleSided\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5eebcb3",
   "metadata": {},
   "source": [
    "Plot scenario 1 - sin(2b)=0.7, |l|=1\n",
    "---------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3391f297",
   "metadata": {},
   "source": [
    "Generate some data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "bc9445e5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.556720Z",
     "iopub.status.busy": "2026-05-19T20:34:55.556576Z",
     "iopub.status.idle": "2026-05-19T20:34:55.671660Z",
     "shell.execute_reply": "2026-05-19T20:34:55.671088Z"
    }
   },
   "outputs": [],
   "source": [
    "data2 = bcp.generate({dt, tagFlav}, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f33cf62e",
   "metadata": {},
   "source": [
    "Plot B0 and B0bar tagged data separately"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "8e54e5ec",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.682529Z",
     "iopub.status.busy": "2026-05-19T20:34:55.682400Z",
     "iopub.status.idle": "2026-05-19T20:34:55.790849Z",
     "shell.execute_reply": "2026-05-19T20:34:55.790167Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 4495 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bcp) plot on dt represents a slice in (tagFlav)\n",
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 5505 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bcp) plot on dt represents a slice in (tagFlav)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55b4af96d570>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame4 = dt.frame(Title=\"B decay distribution with CPV(|l|=1,Im(l)=0.7) (B0/B0bar)\")\n",
    "\n",
    "data2.plotOn(frame4, Cut=\"tagFlav==tagFlav::B0\")\n",
    "bcp.plotOn(frame4, Slice=(tagFlav, \"B0\"))\n",
    "\n",
    "data2.plotOn(frame4, Cut=\"tagFlav==tagFlav::B0bar\", MarkerColor=\"c\")\n",
    "bcp.plotOn(frame4, Slice=(tagFlav, \"B0bar\"), LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "776b7b38",
   "metadata": {},
   "source": [
    "# Plot scenario 2 - sin(2b)=0.7, |l|=0.7\n",
    "-------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e6a1c96b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.792359Z",
     "iopub.status.busy": "2026-05-19T20:34:55.792236Z",
     "iopub.status.idle": "2026-05-19T20:34:55.900298Z",
     "shell.execute_reply": "2026-05-19T20:34:55.899632Z"
    }
   },
   "outputs": [],
   "source": [
    "absLambda.setVal(0.7)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d923611",
   "metadata": {},
   "source": [
    "Generate some data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d14926f5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:55.901785Z",
     "iopub.status.busy": "2026-05-19T20:34:55.901658Z",
     "iopub.status.idle": "2026-05-19T20:34:56.009226Z",
     "shell.execute_reply": "2026-05-19T20:34:56.008514Z"
    }
   },
   "outputs": [],
   "source": [
    "data3 = bcp.generate({dt, tagFlav}, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88d377b5",
   "metadata": {},
   "source": [
    "Plot B0 and B0bar tagged data separately (sin2b = 0.7 plus direct CPV\n",
    "|l|=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "19eb3cf3",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.010629Z",
     "iopub.status.busy": "2026-05-19T20:34:56.010497Z",
     "iopub.status.idle": "2026-05-19T20:34:56.118894Z",
     "shell.execute_reply": "2026-05-19T20:34:56.118215Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 3617 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bcp) plot on dt represents a slice in (tagFlav)\n",
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 6383 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bcp) plot on dt represents a slice in (tagFlav)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<cppyy.gbl.RooPlot object at 0x55b4af8d2d20>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame5 = dt.frame(Title=\"B decay distribution with CPV(|l|=0.7,Im(l)=0.7) (B0/B0bar)\")\n",
    "\n",
    "data3.plotOn(frame5, Cut=\"tagFlav==tagFlav::B0\")\n",
    "bcp.plotOn(frame5, Slice=(tagFlav, \"B0\"))\n",
    "\n",
    "data3.plotOn(frame5, Cut=\"tagFlav==tagFlav::B0bar\", MarkerColor=\"c\")\n",
    "bcp.plotOn(frame5, Slice=(tagFlav, \"B0bar\"), LineColor=\"c\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2a48127",
   "metadata": {},
   "source": [
    "Generic B-decay with user coefficients\n",
    "-------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f05c49c",
   "metadata": {},
   "source": [
    "Construct pdf\n",
    "-------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1016f5f6",
   "metadata": {},
   "source": [
    "Model parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "ea86a76b",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.120382Z",
     "iopub.status.busy": "2026-05-19T20:34:56.120264Z",
     "iopub.status.idle": "2026-05-19T20:34:56.223917Z",
     "shell.execute_reply": "2026-05-19T20:34:56.223287Z"
    }
   },
   "outputs": [],
   "source": [
    "DGbG = ROOT.RooRealVar(\"DGbG\", \"DGamma/GammaAvg\", 0.5, -1, 1)\n",
    "Adir = ROOT.RooRealVar(\"Adir\", \"-[1-abs(l)**2]/[1+abs(l)**2]\", 0)\n",
    "Amix = ROOT.RooRealVar(\"Amix\", \"2Im(l)/[1+abs(l)**2]\", 0.7)\n",
    "Adel = ROOT.RooRealVar(\"Adel\", \"2Re(l)/[1+abs(l)**2]\", 0.7)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58ac7e81",
   "metadata": {},
   "source": [
    "Derived input parameters for pdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "edde823a",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.228079Z",
     "iopub.status.busy": "2026-05-19T20:34:56.227957Z",
     "iopub.status.idle": "2026-05-19T20:34:56.400262Z",
     "shell.execute_reply": "2026-05-19T20:34:56.399636Z"
    }
   },
   "outputs": [],
   "source": [
    "DG = ROOT.RooFormulaVar(\"DG\", \"Delta Gamma\", \"@1/@0\", [tau, DGbG])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56a4c322",
   "metadata": {},
   "source": [
    "Construct coefficient functions for sin,cos, modulations of decay\n",
    "distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "441095c6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.401764Z",
     "iopub.status.busy": "2026-05-19T20:34:56.401639Z",
     "iopub.status.idle": "2026-05-19T20:34:56.519993Z",
     "shell.execute_reply": "2026-05-19T20:34:56.519374Z"
    }
   },
   "outputs": [],
   "source": [
    "fsin = ROOT.RooFormulaVar(\"fsin\", \"fsin\", \"@0*@1*(1-2*@2)\", [Amix, tagFlav, w])\n",
    "fcos = ROOT.RooFormulaVar(\"fcos\", \"fcos\", \"@0*@1*(1-2*@2)\", [Adir, tagFlav, w])\n",
    "fsinh = ROOT.RooFormulaVar(\"fsinh\", \"fsinh\", \"@0\", [Adel])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc4a499b",
   "metadata": {},
   "source": [
    "Construct generic B decay pdf using above user coefficients"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "17b33a01",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.521457Z",
     "iopub.status.busy": "2026-05-19T20:34:56.521339Z",
     "iopub.status.idle": "2026-05-19T20:34:56.653284Z",
     "shell.execute_reply": "2026-05-19T20:34:56.652641Z"
    }
   },
   "outputs": [],
   "source": [
    "bcpg = ROOT.RooBDecay(\n",
    "    \"bcpg\", \"bcpg\", dt, tau, DG, ROOT.RooFit.RooConst(1), fsinh, fcos, fsin, dm, tm, type=\"DoubleSided\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "32ca67ad",
   "metadata": {},
   "source": [
    "Plot - Im(l)=0.7, e(l)=0.7 |l|=1, G/G=0.5\n",
    "-------------------------------------------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b9a9784",
   "metadata": {},
   "source": [
    "Generate some data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c69441c5",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.654746Z",
     "iopub.status.busy": "2026-05-19T20:34:56.654620Z",
     "iopub.status.idle": "2026-05-19T20:34:56.839992Z",
     "shell.execute_reply": "2026-05-19T20:34:56.839257Z"
    }
   },
   "outputs": [],
   "source": [
    "data4 = bcpg.generate({dt, tagFlav}, 10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d579f7ef",
   "metadata": {},
   "source": [
    "Plot B0 and B0bar tagged data separately"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "f19da528",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:56.842112Z",
     "iopub.status.busy": "2026-05-19T20:34:56.841981Z",
     "iopub.status.idle": "2026-05-19T20:34:57.240729Z",
     "shell.execute_reply": "2026-05-19T20:34:57.240015Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 4991 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bcpg) plot on dt represents a slice in (tagFlav)\n",
      "[#1] INFO:Plotting -- RooTreeData::plotOn: plotting 5009 events out of 10000 total events\n",
      "[#1] INFO:Plotting -- RooAbsReal::plotOn(bcpg) plot on dt represents a slice in (tagFlav)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file rf708_bphysics.png has been created\n"
     ]
    }
   ],
   "source": [
    "frame6 = dt.frame(Title=\"B decay distribution with CPV(Im(l)=0.7,Re(l)=0.7,|l|=1,dG/G=0.5) (B0/B0bar)\")\n",
    "\n",
    "data4.plotOn(frame6, Cut=\"tagFlav==tagFlav::B0\")\n",
    "bcpg.plotOn(frame6, Slice=(tagFlav, \"B0\"))\n",
    "\n",
    "data4.plotOn(frame6, Cut=\"tagFlav==tagFlav::B0bar\", MarkerColor=\"c\")\n",
    "bcpg.plotOn(frame6, Slice=(tagFlav, \"B0bar\"), LineColor=\"c\")\n",
    "\n",
    "c = ROOT.TCanvas(\"rf708_bphysics\", \"rf708_bphysics\", 1200, 800)\n",
    "c.Divide(3, 2)\n",
    "c.cd(1)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame1.GetYaxis().SetTitleOffset(1.6)\n",
    "frame1.Draw()\n",
    "c.cd(2)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame2.GetYaxis().SetTitleOffset(1.6)\n",
    "frame2.Draw()\n",
    "c.cd(3)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame3.GetYaxis().SetTitleOffset(1.6)\n",
    "frame3.Draw()\n",
    "c.cd(4)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame4.GetYaxis().SetTitleOffset(1.6)\n",
    "frame4.Draw()\n",
    "c.cd(5)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame5.GetYaxis().SetTitleOffset(1.6)\n",
    "frame5.Draw()\n",
    "c.cd(6)\n",
    "ROOT.gPad.SetLeftMargin(0.15)\n",
    "frame6.GetYaxis().SetTitleOffset(1.6)\n",
    "frame6.Draw()\n",
    "\n",
    "c.SaveAs(\"rf708_bphysics.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "920c1204",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "18c02f09",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:34:57.242872Z",
     "iopub.status.busy": "2026-05-19T20:34:57.242728Z",
     "iopub.status.idle": "2026-05-19T20:34:57.436313Z",
     "shell.execute_reply": "2026-05-19T20:34:57.435747Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222897426\" style=\"width: 1200px; height: 800px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222897426() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(112017,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222897426', 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_1779222897426();\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
}
