{
"cells": [
{
"cell_type": "markdown",
"id": "e6d456ae",
"metadata": {},
"source": [
"# rf106_plotdecoration\n",
"Basic functionality: adding boxes with parameters to RooPlots and decorating with arrows, etc...\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": "7493f28c",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:49.597596Z",
"iopub.status.busy": "2024-03-19T19:14:49.597167Z",
"iopub.status.idle": "2024-03-19T19:14:52.252910Z",
"shell.execute_reply": "2024-03-19T19:14:52.245743Z"
}
},
"outputs": [],
"source": [
"import ROOT"
]
},
{
"cell_type": "markdown",
"id": "94131201",
"metadata": {},
"source": [
"Set up model\n",
"---------------------"
]
},
{
"cell_type": "markdown",
"id": "c3ae1fcb",
"metadata": {},
"source": [
"Create observables"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "0ba02bd4",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:52.275897Z",
"iopub.status.busy": "2024-03-19T19:14:52.275495Z",
"iopub.status.idle": "2024-03-19T19:14:52.781845Z",
"shell.execute_reply": "2024-03-19T19:14:52.780651Z"
}
},
"outputs": [],
"source": [
"x = ROOT.RooRealVar(\"x\", \"x\", -10, 10)"
]
},
{
"cell_type": "markdown",
"id": "c6f4a9af",
"metadata": {},
"source": [
"Create Gaussian"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e358c9ed",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:52.786761Z",
"iopub.status.busy": "2024-03-19T19:14:52.786396Z",
"iopub.status.idle": "2024-03-19T19:14:53.047210Z",
"shell.execute_reply": "2024-03-19T19:14:53.042547Z"
}
},
"outputs": [],
"source": [
"sigma = ROOT.RooRealVar(\"sigma\", \"sigma\", 1, 0.1, 10)\n",
"mean = ROOT.RooRealVar(\"mean\", \"mean\", -3, -10, 10)\n",
"gauss = ROOT.RooGaussian(\"gauss\", \"gauss\", x, mean, sigma)"
]
},
{
"cell_type": "markdown",
"id": "ac5ef371",
"metadata": {},
"source": [
"Generate a sample of 1000 events with sigma=3"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f08adbb2",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:53.059513Z",
"iopub.status.busy": "2024-03-19T19:14:53.058950Z",
"iopub.status.idle": "2024-03-19T19:14:53.312243Z",
"shell.execute_reply": "2024-03-19T19:14:53.309626Z"
}
},
"outputs": [],
"source": [
"data = gauss.generate({x}, 1000)"
]
},
{
"cell_type": "markdown",
"id": "912e6656",
"metadata": {},
"source": [
"Fit pdf to data"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a7003b0a",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:53.317602Z",
"iopub.status.busy": "2024-03-19T19:14:53.317205Z",
"iopub.status.idle": "2024-03-19T19:14:53.854954Z",
"shell.execute_reply": "2024-03-19T19:14:53.846606Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[#1] INFO:Fitting -- RooAbsPdf::fitTo(gauss_over_gauss_Int[x]) fixing normalization set for coefficient determination to observables in data\n",
"[#1] INFO:Fitting -- using CPU computation library compiled with -mavx2\n",
"[#1] INFO:Fitting -- RooAddition::defaultErrorLevel(nll_gauss_over_gauss_Int[x]_gaussData) Summation contains a RooNLLVar, using its error level\n",
"[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: activating const optimization\n",
"[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization\n"
]
}
],
"source": [
"gauss.fitTo(data, PrintLevel=-1)"
]
},
{
"cell_type": "markdown",
"id": "1a5a0bab",
"metadata": {},
"source": [
"Plot pdf and data\n",
"-------------------------------------"
]
},
{
"cell_type": "markdown",
"id": "07bd3798",
"metadata": {},
"source": [
"Overlay projection of gauss on data"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "c9f5c14c",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:53.869810Z",
"iopub.status.busy": "2024-03-19T19:14:53.869416Z",
"iopub.status.idle": "2024-03-19T19:14:54.397891Z",
"shell.execute_reply": "2024-03-19T19:14:54.396373Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"frame = x.frame(Name=\"xframe\", Title=\"RooPlot with decorations\", Bins=40)\n",
"data.plotOn(frame)\n",
"gauss.plotOn(frame)"
]
},
{
"cell_type": "markdown",
"id": "b5d2cb8a",
"metadata": {},
"source": [
"Add box with pdf parameters\n",
"-----------------------------------------------------"
]
},
{
"cell_type": "markdown",
"id": "b217e36a",
"metadata": {},
"source": [
"Left edge of box starts at 55% of Xaxis)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "158bb341",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:54.410672Z",
"iopub.status.busy": "2024-03-19T19:14:54.409851Z",
"iopub.status.idle": "2024-03-19T19:14:54.625112Z",
"shell.execute_reply": "2024-03-19T19:14:54.623401Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gauss.paramOn(frame, Layout=0.55)"
]
},
{
"cell_type": "markdown",
"id": "364bb6a5",
"metadata": {},
"source": [
"Add box with data statistics\n",
"-------------------------------------------------------"
]
},
{
"cell_type": "markdown",
"id": "658fa3e5",
"metadata": {},
"source": [
"X size of box is from 55% to 99% of Xaxis range, of box is at 80% of\n",
"Yaxis range)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e6deb979",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:54.659176Z",
"iopub.status.busy": "2024-03-19T19:14:54.658771Z",
"iopub.status.idle": "2024-03-19T19:14:54.888639Z",
"shell.execute_reply": "2024-03-19T19:14:54.851623Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.statOn(frame, Layout=(0.55, 0.99, 0.8))"
]
},
{
"cell_type": "markdown",
"id": "3b99b2ad",
"metadata": {},
"source": [
"Add text and arrow\n",
"-----------------------------------"
]
},
{
"cell_type": "markdown",
"id": "fe21635b",
"metadata": {},
"source": [
"Add text to frame"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "6f115aa7",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:54.911370Z",
"iopub.status.busy": "2024-03-19T19:14:54.910479Z",
"iopub.status.idle": "2024-03-19T19:14:55.121972Z",
"shell.execute_reply": "2024-03-19T19:14:55.104715Z"
}
},
"outputs": [],
"source": [
"txt = ROOT.TText(2, 100, \"Signal\")\n",
"txt.SetTextSize(0.04)\n",
"txt.SetTextColor(ROOT.kRed)\n",
"frame.addObject(txt)"
]
},
{
"cell_type": "markdown",
"id": "5d433817",
"metadata": {},
"source": [
"Add arrow to frame"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "0fa72816",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:55.162283Z",
"iopub.status.busy": "2024-03-19T19:14:55.161775Z",
"iopub.status.idle": "2024-03-19T19:14:55.349039Z",
"shell.execute_reply": "2024-03-19T19:14:55.345426Z"
}
},
"outputs": [],
"source": [
"arrow = ROOT.TArrow(2, 100, -1, 50, 0.01, \"|>\")\n",
"arrow.SetLineColor(ROOT.kRed)\n",
"arrow.SetFillColor(ROOT.kRed)\n",
"arrow.SetLineWidth(3)\n",
"frame.addObject(arrow)"
]
},
{
"cell_type": "markdown",
"id": "9e507c66",
"metadata": {},
"source": [
"Persist frame with all decorations in ROOT file\n",
"---------------------------------------------------------------------------------------------"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "c22e5166",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:55.360774Z",
"iopub.status.busy": "2024-03-19T19:14:55.360356Z",
"iopub.status.idle": "2024-03-19T19:14:56.422476Z",
"shell.execute_reply": "2024-03-19T19:14:56.406582Z"
}
},
"outputs": [],
"source": [
"f = ROOT.TFile(\"rf106_plotdecoration.root\", \"RECREATE\")\n",
"frame.Write()\n",
"f.Close()"
]
},
{
"cell_type": "markdown",
"id": "4f14b2a2",
"metadata": {},
"source": [
"To read back and plot frame with all decorations in clean root session do\n",
"root> ROOT.TFile f(\"rf106_plotdecoration.root\")\n",
"root> xframe.Draw()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "4f09461c",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:56.427864Z",
"iopub.status.busy": "2024-03-19T19:14:56.427490Z",
"iopub.status.idle": "2024-03-19T19:14:56.861221Z",
"shell.execute_reply": "2024-03-19T19:14:56.859618Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Info in : png file rf106_plotdecoration.png has been created\n"
]
}
],
"source": [
"c = ROOT.TCanvas(\"rf106_plotdecoration\", \"rf106_plotdecoration\", 600, 600)\n",
"ROOT.gPad.SetLeftMargin(0.15)\n",
"frame.GetYaxis().SetTitleOffset(1.6)\n",
"frame.Draw()\n",
"\n",
"c.SaveAs(\"rf106_plotdecoration.png\")"
]
},
{
"cell_type": "markdown",
"id": "abf90b21",
"metadata": {},
"source": [
"Draw all canvases "
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "3e3c8c20",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:14:56.876206Z",
"iopub.status.busy": "2024-03-19T19:14:56.875651Z",
"iopub.status.idle": "2024-03-19T19:14:57.230553Z",
"shell.execute_reply": "2024-03-19T19:14:57.225946Z"
}
},
"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
}