{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Python, ROOT, pyroot, jupyter ###\n", "\n", "You are currently looking at a Jupyter Notebook. This is a way to run python (or other code) on a server via your web-browser. \n", "It is also an ideal medium for examples, documentation etc and this is what I use it for here. The key thing to realize is that everything you see here, can also be done exactly the same in a regular python file (that you can run on a batch farm).\n", "\n", "\n", "#### Loading ROOT and aanet ####\n", "\n", "Ok, so we are in python and we want to use aanet. Here's how to do it:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Welcome to JupyROOT 6.16/00\n", "loading root.... /home/aart/work/root\n", "loading /home/aart/work/aanet/lib/libaa.so ... ok (0.12 s.)\n", "install workaround for vector::data bug for vector\n", "install workaround for vector::data bug for vector\n" ] } ], "source": [ "import ROOT\n", "import aa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first command loads a system called PyROOT, which makes all of ROOT available from python. From now on, we can do e.g." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Info in : created default TCanvas with name c1\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = ROOT.TF1(\"fa1\",\"sin(x*4)/x\",0,10)\n", "f.Draw()\n", "ROOT.gPad.Draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that everything inside root needs to be prefixed by `ROOT.`. Otherwise python will simply tell you that it cannot find the thing with that name.\n", "\n", "The line `import aa` loads the aanet library into ROOT (`gSystem.Load('libaa.so')`). The aanet classes, functions etc have been compiled with root dictionary information and can now be used as if they are part of ROOT." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a track\n" ] } ], "source": [ "t = ROOT.Trk() #create a new Trk\n", "print t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Det: id=0, 0 DOMs, -0.000 deg lon, -0.000 deg lat\n" ] } ], "source": [ "print ROOT.Det() # empty detector; note we can omit the \"ROOT.\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15rc1" } }, "nbformat": 4, "nbformat_minor": 1 }