{
"cells": [
{
"cell_type": "markdown",
"id": "3115656b",
"metadata": {},
"source": [
"# rf108_plotbinning\n",
"Basic functionality: plotting unbinned data with alternate and variable binnings\n",
"\n",
"\n",
"\n",
"\n",
"**Author:** Clemens Lange, Wouter Verkerke (C++ version) \n",
"This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, March 19, 2024 at 07:14 PM."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "1bccba8f",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:00.615177Z",
"iopub.status.busy": "2024-03-19T19:15:00.613818Z",
"iopub.status.idle": "2024-03-19T19:15:03.808857Z",
"shell.execute_reply": "2024-03-19T19:15:03.807685Z"
}
},
"outputs": [],
"source": [
"import ROOT"
]
},
{
"cell_type": "markdown",
"id": "eff413f1",
"metadata": {},
"source": [
"Set up model\n",
"---------------------"
]
},
{
"cell_type": "markdown",
"id": "7518f74a",
"metadata": {},
"source": [
"Build a B decay pdf with mixing"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "e035c503",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:03.817750Z",
"iopub.status.busy": "2024-03-19T19:15:03.817016Z",
"iopub.status.idle": "2024-03-19T19:15:04.738110Z",
"shell.execute_reply": "2024-03-19T19:15:04.736642Z"
}
},
"outputs": [],
"source": [
"dt = ROOT.RooRealVar(\"dt\", \"dt\", -20, 20)\n",
"dm = ROOT.RooRealVar(\"dm\", \"dm\", 0.472)\n",
"tau = ROOT.RooRealVar(\"tau\", \"tau\", 1.547)\n",
"w = ROOT.RooRealVar(\"w\", \"mistag rate\", 0.1)\n",
"dw = ROOT.RooRealVar(\"dw\", \"delta mistag rate\", 0.0)\n",
"\n",
"mixState = ROOT.RooCategory(\"mixState\", \"B0/B0bar mixing state\", {\"mixed\": -1, \"unmixed\": 1})\n",
"tagFlav = ROOT.RooCategory(\"tagFlav\", \"Flavour of the tagged B0\", {\"B0\": 1, \"B0bar\": -1})"
]
},
{
"cell_type": "markdown",
"id": "5f851bd8",
"metadata": {},
"source": [
"Build a gaussian resolution model"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "665fe7dd",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:04.744960Z",
"iopub.status.busy": "2024-03-19T19:15:04.744400Z",
"iopub.status.idle": "2024-03-19T19:15:04.927052Z",
"shell.execute_reply": "2024-03-19T19:15:04.925876Z"
}
},
"outputs": [],
"source": [
"dterr = ROOT.RooRealVar(\"dterr\", \"dterr\", 0.1, 1.0)\n",
"bias1 = ROOT.RooRealVar(\"bias1\", \"bias1\", 0)\n",
"sigma1 = ROOT.RooRealVar(\"sigma1\", \"sigma1\", 0.1)\n",
"gm1 = ROOT.RooGaussModel(\"gm1\", \"gauss model 1\", dt, bias1, sigma1)"
]
},
{
"cell_type": "markdown",
"id": "ab1a502f",
"metadata": {},
"source": [
"Construct Bdecay (x) gauss"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7ac2c5d1",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:04.932262Z",
"iopub.status.busy": "2024-03-19T19:15:04.931898Z",
"iopub.status.idle": "2024-03-19T19:15:05.212442Z",
"shell.execute_reply": "2024-03-19T19:15:05.191487Z"
}
},
"outputs": [],
"source": [
"bmix = ROOT.RooBMixDecay(\"bmix\", \"decay\", dt, mixState, tagFlav, tau, dm, w, dw, gm1, type=\"DoubleSided\")"
]
},
{
"cell_type": "markdown",
"id": "17262144",
"metadata": {},
"source": [
"Sample data from model\n",
"--------------------------------------------"
]
},
{
"cell_type": "markdown",
"id": "4af9b54b",
"metadata": {},
"source": [
"Sample 2000 events in (dt,mixState,tagFlav) from bmix"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "53069c49",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:05.229220Z",
"iopub.status.busy": "2024-03-19T19:15:05.228820Z",
"iopub.status.idle": "2024-03-19T19:15:05.638280Z",
"shell.execute_reply": "2024-03-19T19:15:05.637007Z"
}
},
"outputs": [],
"source": [
"data = bmix.generate({dt, mixState, tagFlav}, 2000)"
]
},
{
"cell_type": "markdown",
"id": "c8cc2574",
"metadata": {},
"source": [
"Show dt distribution with custom binning\n",
"-------------------------------------------------------------------------------"
]
},
{
"cell_type": "markdown",
"id": "77f459ab",
"metadata": {},
"source": [
"Make plot of dt distribution of data in range (-15,15) with fine binning\n",
"for dt>0 and coarse binning for dt<0"
]
},
{
"cell_type": "markdown",
"id": "b5d1c6ce",
"metadata": {},
"source": [
"Create binning object with range (-15,15)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "60e870dd",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:05.643363Z",
"iopub.status.busy": "2024-03-19T19:15:05.643011Z",
"iopub.status.idle": "2024-03-19T19:15:05.783358Z",
"shell.execute_reply": "2024-03-19T19:15:05.781582Z"
}
},
"outputs": [],
"source": [
"tbins = ROOT.RooBinning(-15, 15)"
]
},
{
"cell_type": "markdown",
"id": "55b21c8c",
"metadata": {},
"source": [
"Add 60 bins with uniform spacing in range (-15,0)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "0a9cfac5",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:05.791997Z",
"iopub.status.busy": "2024-03-19T19:15:05.791643Z",
"iopub.status.idle": "2024-03-19T19:15:05.912366Z",
"shell.execute_reply": "2024-03-19T19:15:05.910143Z"
}
},
"outputs": [],
"source": [
"tbins.addUniform(60, -15, 0)"
]
},
{
"cell_type": "markdown",
"id": "e7b0b1e7",
"metadata": {},
"source": [
"Add 15 bins with uniform spacing in range (0,15)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2809a3a3",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:05.923637Z",
"iopub.status.busy": "2024-03-19T19:15:05.923269Z",
"iopub.status.idle": "2024-03-19T19:15:06.031330Z",
"shell.execute_reply": "2024-03-19T19:15:06.029803Z"
}
},
"outputs": [],
"source": [
"tbins.addUniform(15, 0, 15)"
]
},
{
"cell_type": "markdown",
"id": "490a2d18",
"metadata": {},
"source": [
"Make plot with specified binning"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "434cddf3",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:06.043196Z",
"iopub.status.busy": "2024-03-19T19:15:06.042773Z",
"iopub.status.idle": "2024-03-19T19:15:06.541629Z",
"shell.execute_reply": "2024-03-19T19:15:06.539212Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[#1] INFO:Plotting -- RooAbsReal::plotOn(bmix) plot on dt integrates over variables (mixState,tagFlav)\n"
]
}
],
"source": [
"dtframe = dt.frame(Range=(-15, 15), Title=\"dt distribution with custom binning\")\n",
"data.plotOn(dtframe, Binning=tbins)\n",
"bmix.plotOn(dtframe)"
]
},
{
"cell_type": "markdown",
"id": "f34561a0",
"metadata": {},
"source": [
"NB: Note that bin density for each bin is adjusted to that of default frame binning as shown\n",
"in Y axis label (100 bins -. Events/0.4*Xaxis-dim) so that all bins\n",
"represent a consistent density distribution"
]
},
{
"cell_type": "markdown",
"id": "9cde42ef",
"metadata": {},
"source": [
"Show mixstate asymmetry with custom binning\n",
"------------------------------------------------------------------------------------"
]
},
{
"cell_type": "markdown",
"id": "7be0a4ea",
"metadata": {},
"source": [
"Make plot of dt distribution of data asymmetry in 'mixState' with\n",
"variable binning"
]
},
{
"cell_type": "markdown",
"id": "a8b9eb38",
"metadata": {},
"source": [
"Create binning object with range (-10,10)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "df05674a",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:06.559942Z",
"iopub.status.busy": "2024-03-19T19:15:06.559568Z",
"iopub.status.idle": "2024-03-19T19:15:06.667661Z",
"shell.execute_reply": "2024-03-19T19:15:06.666228Z"
}
},
"outputs": [],
"source": [
"abins = ROOT.RooBinning(-10, 10)"
]
},
{
"cell_type": "markdown",
"id": "9e469748",
"metadata": {},
"source": [
"Add boundaries at 0, (-1,1), (-2,2), (-3,3), (-4,4) and (-6,6)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "e2fed089",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:06.692454Z",
"iopub.status.busy": "2024-03-19T19:15:06.692043Z",
"iopub.status.idle": "2024-03-19T19:15:06.826663Z",
"shell.execute_reply": "2024-03-19T19:15:06.825370Z"
}
},
"outputs": [],
"source": [
"abins.addBoundary(0)\n",
"abins.addBoundaryPair(1)\n",
"abins.addBoundaryPair(2)\n",
"abins.addBoundaryPair(3)\n",
"abins.addBoundaryPair(4)\n",
"abins.addBoundaryPair(6)"
]
},
{
"cell_type": "markdown",
"id": "02b1b914",
"metadata": {},
"source": [
"Create plot frame in dt"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "35a7fa2f",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:06.839977Z",
"iopub.status.busy": "2024-03-19T19:15:06.839609Z",
"iopub.status.idle": "2024-03-19T19:15:06.947954Z",
"shell.execute_reply": "2024-03-19T19:15:06.946316Z"
}
},
"outputs": [],
"source": [
"aframe = dt.frame(Range=(-10, 10), Title=\"mixState asymmetry distribution with custom binning\")"
]
},
{
"cell_type": "markdown",
"id": "244c3d8b",
"metadata": {},
"source": [
"Plot mixState asymmetry of data with specified customg binning"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "326beaa7",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:06.983462Z",
"iopub.status.busy": "2024-03-19T19:15:06.982973Z",
"iopub.status.idle": "2024-03-19T19:15:07.171378Z",
"shell.execute_reply": "2024-03-19T19:15:07.162320Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.plotOn(aframe, Asymmetry=mixState, Binning=abins)"
]
},
{
"cell_type": "markdown",
"id": "8bf056c9",
"metadata": {},
"source": [
"Plot corresponding property of pdf"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "fa1b4339",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:07.177584Z",
"iopub.status.busy": "2024-03-19T19:15:07.177101Z",
"iopub.status.idle": "2024-03-19T19:15:07.308750Z",
"shell.execute_reply": "2024-03-19T19:15:07.307755Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[#1] INFO:Plotting -- RooAbsReal::plotAsymOn(bmix) plot on dt projects variables (tagFlav)\n"
]
}
],
"source": [
"bmix.plotOn(aframe, Asymmetry=mixState)"
]
},
{
"cell_type": "markdown",
"id": "c74a5c56",
"metadata": {},
"source": [
"Adjust vertical range of plot to sensible values for an asymmetry"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "6471ddcf",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:07.318868Z",
"iopub.status.busy": "2024-03-19T19:15:07.317959Z",
"iopub.status.idle": "2024-03-19T19:15:07.461058Z",
"shell.execute_reply": "2024-03-19T19:15:07.459170Z"
}
},
"outputs": [],
"source": [
"aframe.SetMinimum(-1.1)\n",
"aframe.SetMaximum(1.1)"
]
},
{
"cell_type": "markdown",
"id": "1033324f",
"metadata": {},
"source": [
"NB: For asymmetry distributions no density corrects are needed (and are\n",
"thus not applied)"
]
},
{
"cell_type": "markdown",
"id": "5b875ff6",
"metadata": {},
"source": [
"Draw plots on canvas"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f0b0974e",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:07.467740Z",
"iopub.status.busy": "2024-03-19T19:15:07.467371Z",
"iopub.status.idle": "2024-03-19T19:15:08.022525Z",
"shell.execute_reply": "2024-03-19T19:15:08.020733Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Info in : png file rf108_plotbinning.png has been created\n"
]
}
],
"source": [
"c = ROOT.TCanvas(\"rf108_plotbinning\", \"rf108_plotbinning\", 800, 400)\n",
"c.Divide(2)\n",
"c.cd(1)\n",
"ROOT.gPad.SetLeftMargin(0.15)\n",
"dtframe.GetYaxis().SetTitleOffset(1.6)\n",
"dtframe.Draw()\n",
"c.cd(2)\n",
"ROOT.gPad.SetLeftMargin(0.15)\n",
"aframe.GetYaxis().SetTitleOffset(1.6)\n",
"aframe.Draw()\n",
"\n",
"c.SaveAs(\"rf108_plotbinning.png\")"
]
},
{
"cell_type": "markdown",
"id": "2731a3d9",
"metadata": {},
"source": [
"Draw all canvases "
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "6eca11ee",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:15:08.027145Z",
"iopub.status.busy": "2024-03-19T19:15:08.026738Z",
"iopub.status.idle": "2024-03-19T19:15:08.265474Z",
"shell.execute_reply": "2024-03-19T19:15:08.264066Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}