{
"cells": [
{
"cell_type": "markdown",
"id": "2475dbd9",
"metadata": {},
"source": [
"# hsimple\n",
" This program creates :\n",
" - a one dimensional histogram\n",
" - a two dimensional histogram\n",
" - a profile histogram\n",
" - a memory-resident ntuple\n",
"\n",
" These objects are filled with some random numbers and saved on a file.\n",
"\n",
"\n",
"\n",
"\n",
"**Author:** Wim Lavrijsen, Enric Tejedor \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:03 PM."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "bfd0931c",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:40.063205Z",
"iopub.status.busy": "2024-03-19T19:03:40.062869Z",
"iopub.status.idle": "2024-03-19T19:03:42.158321Z",
"shell.execute_reply": "2024-03-19T19:03:42.157001Z"
}
},
"outputs": [],
"source": [
"from ROOT import TCanvas, TFile, TProfile, TNtuple, TH1F, TH2F\n",
"from ROOT import gROOT, gBenchmark, gRandom, gSystem\n",
"import ctypes"
]
},
{
"cell_type": "markdown",
"id": "e4c4e7ae",
"metadata": {},
"source": [
"Create a new canvas, and customize it."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "6b9da180",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:42.163481Z",
"iopub.status.busy": "2024-03-19T19:03:42.163146Z",
"iopub.status.idle": "2024-03-19T19:03:42.329136Z",
"shell.execute_reply": "2024-03-19T19:03:42.325260Z"
}
},
"outputs": [],
"source": [
"c1 = TCanvas( 'c1', 'Dynamic Filling Example', 200, 10, 700, 500 )\n",
"c1.SetFillColor( 42 )\n",
"c1.GetFrame().SetFillColor( 21 )\n",
"c1.GetFrame().SetBorderSize( 6 )\n",
"c1.GetFrame().SetBorderMode( -1 )"
]
},
{
"cell_type": "markdown",
"id": "61ebf86b",
"metadata": {},
"source": [
"Create a new ROOT binary machine independent file.\n",
"Note that this file may contain any kind of ROOT objects, histograms,\n",
"pictures, graphics objects, detector geometries, tracks, events, etc..\n",
"This file is now becoming the current directory."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c57f92ab",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:42.335144Z",
"iopub.status.busy": "2024-03-19T19:03:42.334794Z",
"iopub.status.idle": "2024-03-19T19:03:42.484637Z",
"shell.execute_reply": "2024-03-19T19:03:42.483441Z"
}
},
"outputs": [],
"source": [
"hfile = gROOT.FindObject( 'py-hsimple.root' )\n",
"if hfile:\n",
" hfile.Close()\n",
"hfile = TFile( 'py-hsimple.root', 'RECREATE', 'Demo ROOT file with histograms' )"
]
},
{
"cell_type": "markdown",
"id": "61a665b6",
"metadata": {},
"source": [
"Create some histograms, a profile histogram and an ntuple"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "0ad6ae2b",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:42.489166Z",
"iopub.status.busy": "2024-03-19T19:03:42.488848Z",
"iopub.status.idle": "2024-03-19T19:03:42.649556Z",
"shell.execute_reply": "2024-03-19T19:03:42.648265Z"
}
},
"outputs": [],
"source": [
"hpx = TH1F( 'hpx', 'This is the px distribution', 100, -4, 4 )\n",
"hpxpy = TH2F( 'hpxpy', 'py vs px', 40, -4, 4, 40, -4, 4 )\n",
"hprof = TProfile( 'hprof', 'Profile of pz versus px', 100, -4, 4, 0, 20 )\n",
"ntuple = TNtuple( 'ntuple', 'Demo ntuple', 'px:py:pz:random:i' )"
]
},
{
"cell_type": "markdown",
"id": "8b56bc4e",
"metadata": {},
"source": [
"Set canvas/frame attributes."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "8026b6ab",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:42.654484Z",
"iopub.status.busy": "2024-03-19T19:03:42.654069Z",
"iopub.status.idle": "2024-03-19T19:03:42.773064Z",
"shell.execute_reply": "2024-03-19T19:03:42.771774Z"
}
},
"outputs": [],
"source": [
"hpx.SetFillColor( 48 )\n",
"\n",
"gBenchmark.Start( 'hsimple' )"
]
},
{
"cell_type": "markdown",
"id": "91547572",
"metadata": {},
"source": [
"Initialize random number generator."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6a0f6eda",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:42.777637Z",
"iopub.status.busy": "2024-03-19T19:03:42.777308Z",
"iopub.status.idle": "2024-03-19T19:03:42.894805Z",
"shell.execute_reply": "2024-03-19T19:03:42.893583Z"
}
},
"outputs": [],
"source": [
"gRandom.SetSeed()\n",
"rannor, rndm = gRandom.Rannor, gRandom.Rndm"
]
},
{
"cell_type": "markdown",
"id": "07ae0718",
"metadata": {},
"source": [
"For speed, bind and cache the Fill member functions,"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "ca3ab281",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:42.899303Z",
"iopub.status.busy": "2024-03-19T19:03:42.898977Z",
"iopub.status.idle": "2024-03-19T19:03:43.006735Z",
"shell.execute_reply": "2024-03-19T19:03:43.005524Z"
}
},
"outputs": [],
"source": [
"histos = [ 'hpx', 'hpxpy', 'hprof', 'ntuple' ]\n",
"for name in histos:\n",
" exec('%sFill = %s.Fill' % (name,name))"
]
},
{
"cell_type": "markdown",
"id": "3e36ffc4",
"metadata": {},
"source": [
"Fill histograms randomly."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "a2b43c7e",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:43.011667Z",
"iopub.status.busy": "2024-03-19T19:03:43.011206Z",
"iopub.status.idle": "2024-03-19T19:03:43.521439Z",
"shell.execute_reply": "2024-03-19T19:03:43.519739Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"px_ref, py_ref = ctypes.c_double(), ctypes.c_double()\n",
"kUPDATE = 1000\n",
"for i in range( 25000 ):\n",
" # Generate random values. Use ctypes to pass doubles by reference\n",
" rannor( px_ref, py_ref )\n",
" # Retrieve the generated values\n",
" px = px_ref.value\n",
" py = py_ref.value\n",
" \n",
" pz = px*px + py*py\n",
" random = rndm(1)\n",
"\n",
" # Fill histograms.\n",
" hpx.Fill( px )\n",
" hpxpy.Fill( px, py )\n",
" hprof.Fill( px, pz )\n",
" ntuple.Fill( px, py, pz, random, i )\n",
"\n",
" # Update display every kUPDATE events.\n",
" if i and i%kUPDATE == 0:\n",
" if i == kUPDATE:\n",
" hpx.Draw()\n",
"\n",
" c1.Modified()\n",
" c1.Update()\n",
"\n",
" if gSystem.ProcessEvents(): # allow user interrupt\n",
" break"
]
},
{
"cell_type": "markdown",
"id": "5bdbabcb",
"metadata": {},
"source": [
"Destroy member functions cache."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "71fcf742",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:43.526196Z",
"iopub.status.busy": "2024-03-19T19:03:43.525876Z",
"iopub.status.idle": "2024-03-19T19:03:43.644149Z",
"shell.execute_reply": "2024-03-19T19:03:43.642757Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hsimple : Real Time = 0.87 seconds Cpu Time = 0.46 seconds\n"
]
}
],
"source": [
"for name in histos:\n",
" exec('del %sFill' % name)\n",
"del histos\n",
"\n",
"gBenchmark.Show( 'hsimple' )"
]
},
{
"cell_type": "markdown",
"id": "4d56a095",
"metadata": {},
"source": [
"Save all objects in this file."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "38eb1531",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:43.659103Z",
"iopub.status.busy": "2024-03-19T19:03:43.658707Z",
"iopub.status.idle": "2024-03-19T19:03:43.926345Z",
"shell.execute_reply": "2024-03-19T19:03:43.925176Z"
}
},
"outputs": [],
"source": [
"hpx.SetFillColor( 0 )\n",
"hfile.Write()\n",
"hpx.SetFillColor( 48 )\n",
"c1.Modified()\n",
"c1.Update()"
]
},
{
"cell_type": "markdown",
"id": "51d24a80",
"metadata": {},
"source": [
"Note that the file is automatically closed when application terminates\n",
"or when the file destructor is called."
]
},
{
"cell_type": "markdown",
"id": "a95e0461",
"metadata": {},
"source": [
"Draw all canvases "
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "fe6909f2",
"metadata": {
"collapsed": false,
"execution": {
"iopub.execute_input": "2024-03-19T19:03:43.930433Z",
"iopub.status.busy": "2024-03-19T19:03:43.930115Z",
"iopub.status.idle": "2024-03-19T19:03:44.177761Z",
"shell.execute_reply": "2024-03-19T19:03:44.176540Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"
\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%jsroot on\n",
"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
}