├── Dockerfile ├── README.md ├── data ├── Pythia-Z2jets-lhc-pileup-1ev.dat ├── myLibrary.cc ├── myLibrary.h └── spaceStation.root ├── images ├── AliceJetResized.png ├── C++NoBindings_v3.png ├── CMSHiggsgg.png ├── Hgg.gif ├── ROOTShell.png ├── Slits.png ├── banner.png ├── cppLogo_v2.png ├── higgsOriz.png ├── higgsVert.png ├── pythonLogo.png ├── sam.png └── spaceStation.png ├── index.ipynb └── notebooks ├── C++FromPython.ipynb ├── Double_Slit.ipynb ├── FastjetInteractive.ipynb ├── GeometryVisualization.ipynb ├── Hgg.txt ├── HiggsFit.ipynb ├── Interactive_C++_Shell.ipynb ├── PyROOT_Example.ipynb ├── ROOT_Example.ipynb └── Slits.ipynb /Dockerfile: -------------------------------------------------------------------------------- 1 | 2 | FROM andrewosh/binder-base 3 | 4 | MAINTAINER Enric Tejedor Saavedra 5 | 6 | USER root 7 | 8 | # Install ROOT prerequisites 9 | RUN apt-get update 10 | RUN apt-get install -y \ 11 | libx11-6 \ 12 | libxext6 \ 13 | libxft2 \ 14 | libxpm4 15 | 16 | # Install ROOT additional libraries 17 | RUN apt-get install -y \ 18 | r-base \ 19 | r-base-dev 20 | 21 | # Install R packages 22 | RUN R -e "install.packages(c('Rcpp','RInside'), repos = \"http://cran.case.edu\")" 23 | 24 | # Download and install ROOT master 25 | WORKDIR /opt 26 | RUN wget http://root.cern.ch/notebooks/rootbinderdata/root.tar.gz 27 | RUN tar xzf root.tar.gz 28 | RUN rm root.tar.gz 29 | 30 | # Download and install Fastjet 31 | RUN wget http://root.cern.ch/notebooks/rootbinderdata/fastjet.tar.gz 32 | RUN tar xzf fastjet.tar.gz 33 | RUN rm fastjet.tar.gz 34 | 35 | USER main 36 | 37 | # Set ROOT environment 38 | ENV ROOTSYS "/opt/root" 39 | ENV PATH "$ROOTSYS/bin:$ROOTSYS/bin/bin:$PATH" 40 | ENV LD_LIBRARY_PATH "$ROOTSYS/lib:$LD_LIBRARY_PATH" 41 | ENV PYTHONPATH "$ROOTSYS/lib:PYTHONPATH" 42 | 43 | # Set ROOT environment for Fastjet 44 | ENV LD_LIBRARY_PATH "/opt/fastjet/lib:$LD_LIBRARY_PATH" 45 | ENV ROOT_INCLUDE_PATH "/opt/fastjet/include" 46 | 47 | # Customise the ROOTbook 48 | RUN pip install --upgrade pip 49 | RUN pip install metakernel 50 | RUN mkdir -p $HOME/.ipython/kernels 51 | RUN cp -r $ROOTSYS/etc/notebook/kernels/root $HOME/.ipython/kernels 52 | RUN mkdir -p $HOME/.ipython/profile_default/static 53 | RUN cp -r $ROOTSYS/etc/notebook/custom $HOME/.ipython/profile_default/static 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [ROOT](http://root.cern.ch) is ... 2 | ... A modular scientific software framework. It provides all the functionalities needed to deal with big data processing, statistical analysis, visualisation and storage. It is mainly written in C++ but well integrated with other languages such as Python and R. [Read More](https://root.cern.ch/about-root) ... 3 | 4 | # ROOTbooks for [SWAN](https://swan.web.cern.ch) and Binder 5 | This repository contains a set of files to use [ROOT](http://root.cern.ch)books in mybinder.org: 6 | * Dockerfile to customise Binder for [ROOT](http://root.cern.ch) 7 | * [ROOT](http://root.cern.ch)book example files 8 | 9 | [Enric Tejedor](https://github.com/etejedor), [Danilo Piparo](https://github.com/dpiparo) (2015-2017) 10 | 11 | 12 | 13 | [![Binder](http://mybinder.org/badge.svg)](http://mybinder.org/repo/cernphsft/rootbinder) 14 | -------------------------------------------------------------------------------- /data/myLibrary.cc: -------------------------------------------------------------------------------- 1 | #include "myLibrary.h" 2 | 3 | A::A() 4 | { 5 | std::cout << "This is the constructor of A" << std::endl; 6 | } 7 | 8 | A::~A() 9 | { 10 | std::cout << "This is the destructor of A" << std::endl; 11 | } 12 | 13 | int CountCharacters(const std::string s) 14 | { 15 | return s.size(); 16 | } 17 | -------------------------------------------------------------------------------- /data/myLibrary.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | /// A trivial class 5 | class A { 6 | public: 7 | A(); 8 | ~A(); 9 | }; 10 | 11 | /// A trivial function 12 | int CountCharacters(const std::string s); 13 | 14 | /// A trivial template 15 | template 16 | class B { 17 | public: 18 | B() 19 | { 20 | std::cout << "The typeid name of the template argument is " << typeid(T).name() << std::endl; 21 | } 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /data/spaceStation.root: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/data/spaceStation.root -------------------------------------------------------------------------------- /images/AliceJetResized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/AliceJetResized.png -------------------------------------------------------------------------------- /images/C++NoBindings_v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/C++NoBindings_v3.png -------------------------------------------------------------------------------- /images/CMSHiggsgg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/CMSHiggsgg.png -------------------------------------------------------------------------------- /images/Hgg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/Hgg.gif -------------------------------------------------------------------------------- /images/ROOTShell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/ROOTShell.png -------------------------------------------------------------------------------- /images/Slits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/Slits.png -------------------------------------------------------------------------------- /images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/banner.png -------------------------------------------------------------------------------- /images/cppLogo_v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/cppLogo_v2.png -------------------------------------------------------------------------------- /images/higgsOriz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/higgsOriz.png -------------------------------------------------------------------------------- /images/higgsVert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/higgsVert.png -------------------------------------------------------------------------------- /images/pythonLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/pythonLogo.png -------------------------------------------------------------------------------- /images/sam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/sam.png -------------------------------------------------------------------------------- /images/spaceStation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cernphsft/rootbinder/5c4e6e1f114f56065c9717767f5f91b23981f0f2/images/spaceStation.png -------------------------------------------------------------------------------- /index.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "![title](images/banner.png)\n", 8 | "

\n", 9 | "[ROOT](root.cern.ch) is a framework for data processing, born at [CERN](www.cern.ch), at the heart of high-energy physics research. Every day, thousands of physicists use ROOT applications to analyze petabytes of data or to perform simulations.

\n", 10 | "\n", 11 | "# How to run this demo on CERN resources\n", 12 | "
\n", 13 | "

\n", 14 | "Have a look to the CERN Notebook service, SWAN: http://swan.web.cern.ch\n", 15 | "

\n", 16 | "\n", 17 | "# Try a ROOTbook now: choose your favourite language!\n", 18 | "
\n", 19 | "\n", 20 | "\n", 21 | " \n", 24 | " \n", 27 | "\n", 28 | "\n", 29 | "\n", 30 | " \n", 33 | " \n", 36 | "\n", 37 | "
\n", 22 | " \n", 23 | " \n", 25 | " \n", 26 | "
\n", 31 | "

Python

\n", 32 | "
\n", 34 | "

C++

\n", 35 | "
" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": {}, 43 | "source": [ 44 | "# More ROOTBooks!\n", 45 | "
\n", 46 | "\n", 47 | "\n", 48 | "\n", 49 | "\n", 50 | "\n", 51 | "\n", 52 | " \n", 55 | " \n", 58 | "\n", 59 | "\n", 60 | "\n", 61 | " \n", 64 | " \n", 67 | " \n", 72 | "\n", 73 | "\n", 74 | "\n", 75 | "\n", 76 | "\n", 77 | "
\n", 53 | " \n", 54 | " \n", 56 | " \n", 57 | "
\n", 62 | "

3D Geometries Visualization

\n", 63 | "
\n", 65 | "

Modelling and Fitting: Higgs

\n", 66 | "
\n", 78 | "\n", 79 | " \n", 82 | " \n", 85 | "\n", 86 | "\n", 87 | "\n", 88 | " \n", 91 | " \n", 94 | "\n", 95 | "\n", 96 | "\n", 97 | "\n", 98 | "\n", 99 | "\n", 100 | "
\n", 80 | " \n", 81 | " \n", 83 | " \n", 84 | "
\n", 89 | "

Extending Python with C++

\n", 90 | "
\n", 92 | "

Interactive 3rd Party Libs

\n", 93 | "
\n", 101 | "\n", 102 | " \n", 105 | "\n", 106 | "\n", 107 | " \n", 110 | "\n", 111 | "\n", 112 | "\n", 113 | "
\n", 103 | " \n", 104 | "
\n", 108 | "

Education: Intereference

\n", 109 | "
" 114 | ] 115 | }, 116 | { 117 | "cell_type": "markdown", 118 | "metadata": {}, 119 | "source": [ 120 | "# C++ Interactive shell\n", 121 | "
\n", 122 | "

\n", 123 | "Yes. ROOT features a full blown C++ interpreter built on top of [LLVM and Clang](http://clang.llvm.org/) libraries.\n", 124 | "

\n", 125 | "
" 126 | ] 127 | }, 128 | { 129 | "cell_type": "markdown", 130 | "metadata": {}, 131 | "source": [ 132 | "\"\"\n", 133 | "\n", 134 | "View these notebooks on [GitHub](https://github.com/cernphsft?tab=repositories)" 135 | ] 136 | } 137 | ], 138 | "metadata": { 139 | "kernelspec": { 140 | "display_name": "Python 2", 141 | "language": "python", 142 | "name": "python2" 143 | }, 144 | "language_info": { 145 | "codemirror_mode": { 146 | "name": "ipython", 147 | "version": 2 148 | }, 149 | "file_extension": ".py", 150 | "mimetype": "text/x-python", 151 | "name": "python", 152 | "nbconvert_exporter": "python", 153 | "pygments_lexer": "ipython2", 154 | "version": "2.7.10" 155 | } 156 | }, 157 | "nbformat": 4, 158 | "nbformat_minor": 0 159 | } 160 | -------------------------------------------------------------------------------- /notebooks/C++FromPython.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Invoke C++ from Python without bindings\n", 8 | "
\n", 9 | "With [ROOT](http://root.cern.ch), it's possible to use interactively C++ libraries from Python without the need to write bindings. The C++ entities known to the interpreter are exposed to Python transparently.\n", 10 | "Let's dive into an example. The following sources include a class, a function and a template.\n", 11 | "## Header File" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 1, 17 | "metadata": { 18 | "collapsed": false 19 | }, 20 | "outputs": [ 21 | { 22 | "name": "stdout", 23 | "output_type": "stream", 24 | "text": [ 25 | "#include \n", 26 | "#include \n", 27 | "\n", 28 | "/// A trivial class\n", 29 | "class A {\n", 30 | "public:\n", 31 | " A();\n", 32 | " ~A();\n", 33 | "};\n", 34 | "\n", 35 | "/// A trivial function\n", 36 | "int CountCharacters(const std::string s);\n", 37 | "\n", 38 | "/// A trivial template\n", 39 | "template\n", 40 | "class B {\n", 41 | "public:\n", 42 | " B()\n", 43 | " {\n", 44 | " std::cout << \"The typeid name of the template argument is \" << typeid(T).name() << std::endl;\n", 45 | " }\n", 46 | "};\n", 47 | "\n" 48 | ] 49 | } 50 | ], 51 | "source": [ 52 | "%%bash\n", 53 | "cat ../data/myLibrary.h" 54 | ] 55 | }, 56 | { 57 | "cell_type": "markdown", 58 | "metadata": {}, 59 | "source": [ 60 | "## Implementation" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 2, 66 | "metadata": { 67 | "collapsed": false 68 | }, 69 | "outputs": [ 70 | { 71 | "name": "stdout", 72 | "output_type": "stream", 73 | "text": [ 74 | "#include \"myLibrary.h\"\n", 75 | " \n", 76 | "A::A()\n", 77 | "{\n", 78 | " std::cout << \"This is the constructor of A\" << std::endl;\n", 79 | "}\n", 80 | "\n", 81 | "A::~A()\n", 82 | "{\n", 83 | " std::cout << \"This is the destructor of A\" << std::endl;\n", 84 | "}\n", 85 | "\n", 86 | "int CountCharacters(const std::string s)\n", 87 | "{\n", 88 | " return s.size();\n", 89 | "}\n" 90 | ] 91 | } 92 | ], 93 | "source": [ 94 | "%%bash\n", 95 | "cat ../data/myLibrary.cc" 96 | ] 97 | }, 98 | { 99 | "cell_type": "markdown", 100 | "metadata": {}, 101 | "source": [ 102 | "## Creation of the Library\n", 103 | "It's trivial to create a shared object starting from the sources above:" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 3, 109 | "metadata": { 110 | "collapsed": false 111 | }, 112 | "outputs": [], 113 | "source": [ 114 | "%%bash\n", 115 | "g++ -o libmyLibrary.so -shared -fPIC -I ../data ../data/myLibrary.cc " 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 4, 121 | "metadata": { 122 | "collapsed": false 123 | }, 124 | "outputs": [ 125 | { 126 | "name": "stdout", 127 | "output_type": "stream", 128 | "text": [ 129 | "libmyLibrary.so\n" 130 | ] 131 | } 132 | ], 133 | "source": [ 134 | "%%bash\n", 135 | "ls *so" 136 | ] 137 | }, 138 | { 139 | "cell_type": "markdown", 140 | "metadata": {}, 141 | "source": [ 142 | "So far, so good. Now we'll see how easy it is to use this library from within Python thanks to [ROOT](http://root.cern.ch).\n", 143 | "## Interactivity without bindings\n", 144 | "In order to interact with the C++ entities contained in the library, we need to carry out to tasks:\n", 145 | "1. We need to make known to the interpreter the *interfaces*. Concretely this means including one or more headers.\n", 146 | "2. We need to make accessible to the interpreter the implementations of such C++ entities. Concretely this means loading the library.\n", 147 | "\n", 148 | "In code:" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 5, 154 | "metadata": { 155 | "collapsed": false 156 | }, 157 | "outputs": [ 158 | { 159 | "data": { 160 | "application/javascript": [ 161 | "IPython.CodeCell.config_defaults.highlight_modes['magic_text/x-c++src'] = {'reg':[/^%%cpp/]};" 162 | ] 163 | }, 164 | "metadata": {}, 165 | "output_type": "display_data" 166 | }, 167 | { 168 | "name": "stdout", 169 | "output_type": "stream", 170 | "text": [ 171 | "Welcome to JupyROOT 6.07/03\n" 172 | ] 173 | }, 174 | { 175 | "data": { 176 | "text/plain": [ 177 | "0" 178 | ] 179 | }, 180 | "execution_count": 5, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "import ROOT\n", 187 | "ROOT.gInterpreter.ProcessLine('#include \"../data/myLibrary.h\"')\n", 188 | "ROOT.gSystem.Load(\"./libmyLibrary.so\")" 189 | ] 190 | }, 191 | { 192 | "cell_type": "markdown", 193 | "metadata": {}, 194 | "source": [ 195 | "That's it! We can now start exploring the content of the library." 196 | ] 197 | }, 198 | { 199 | "cell_type": "code", 200 | "execution_count": 6, 201 | "metadata": { 202 | "collapsed": false 203 | }, 204 | "outputs": [ 205 | { 206 | "name": "stdout", 207 | "output_type": "stream", 208 | "text": [ 209 | "This is the constructor of A\r\n" 210 | ] 211 | } 212 | ], 213 | "source": [ 214 | "a = ROOT.A()" 215 | ] 216 | }, 217 | { 218 | "cell_type": "code", 219 | "execution_count": 7, 220 | "metadata": { 221 | "collapsed": false 222 | }, 223 | "outputs": [ 224 | { 225 | "name": "stdout", 226 | "output_type": "stream", 227 | "text": [ 228 | "This is the destructor of A\r\n" 229 | ] 230 | } 231 | ], 232 | "source": [ 233 | "del a" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 8, 239 | "metadata": { 240 | "collapsed": false 241 | }, 242 | "outputs": [ 243 | { 244 | "name": "stdout", 245 | "output_type": "stream", 246 | "text": [ 247 | "The typeid name of the template argument is Pd\r\n" 248 | ] 249 | } 250 | ], 251 | "source": [ 252 | "b_doublePtr = ROOT.B(\"double*\")()" 253 | ] 254 | }, 255 | { 256 | "cell_type": "markdown", 257 | "metadata": {}, 258 | "source": [ 259 | "Notice how the \"impedence mismatch\" generated by the concept of templates is ironed out in this case. The template parameter is specified as string in parentheses." 260 | ] 261 | }, 262 | { 263 | "cell_type": "code", 264 | "execution_count": 9, 265 | "metadata": { 266 | "collapsed": false 267 | }, 268 | "outputs": [ 269 | { 270 | "data": { 271 | "text/plain": [ 272 | "57" 273 | ] 274 | }, 275 | "execution_count": 9, 276 | "metadata": {}, 277 | "output_type": "execute_result" 278 | } 279 | ], 280 | "source": [ 281 | "ROOT.CountCharacters(\"This interactivity without bindings is really impressive.\")" 282 | ] 283 | }, 284 | { 285 | "cell_type": "markdown", 286 | "metadata": {}, 287 | "source": [ 288 | "## Interactivity within C++\n", 289 | "Interactive usage of C++ libraries is possible also in C++ mode. In this case, no wrapper is interposed between the statement written by the user and the call - ABI compatibility is leveraged. For example:" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": 10, 295 | "metadata": { 296 | "collapsed": false 297 | }, 298 | "outputs": [ 299 | { 300 | "name": "stdout", 301 | "output_type": "stream", 302 | "text": [ 303 | "This is the constructor of A\r\n" 304 | ] 305 | } 306 | ], 307 | "source": [ 308 | "%%cpp\n", 309 | "A a;" 310 | ] 311 | } 312 | ], 313 | "metadata": { 314 | "kernelspec": { 315 | "display_name": "Python 2", 316 | "language": "python", 317 | "name": "python2" 318 | }, 319 | "language_info": { 320 | "codemirror_mode": { 321 | "name": "ipython", 322 | "version": 2 323 | }, 324 | "file_extension": ".py", 325 | "mimetype": "text/x-python", 326 | "name": "python", 327 | "nbconvert_exporter": "python", 328 | "pygments_lexer": "ipython2", 329 | "version": "2.7.6" 330 | } 331 | }, 332 | "nbformat": 4, 333 | "nbformat_minor": 0 334 | } 335 | -------------------------------------------------------------------------------- /notebooks/Double_Slit.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Interference Experiment\n", 8 | "
\n", 9 | "ROOT is not only a tool for the one aiming to a prestigious scientific discovery, but also for education. This notebook illustrates how ROOT can be used to explain the [slits experiment](https://en.wikipedia.org/wiki/Double-slit_experiment). See also the treatment of this example in the [ROOT primer](https://root.cern.ch/root/htmldoc/guides/primer/ROOTPrimer.html#root-as-function-plotter)." 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 1, 15 | "metadata": { 16 | "collapsed": false 17 | }, 18 | "outputs": [ 19 | { 20 | "data": { 21 | "application/javascript": [ 22 | "IPython.CodeCell.config_defaults.highlight_modes['magic_text/x-c++src'] = {'reg':[/^%%cpp/]};" 23 | ] 24 | }, 25 | "metadata": {}, 26 | "output_type": "display_data" 27 | }, 28 | { 29 | "name": "stdout", 30 | "output_type": "stream", 31 | "text": [ 32 | "Welcome to JupyROOT 6.07/01\n" 33 | ] 34 | } 35 | ], 36 | "source": [ 37 | "import ROOT" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "metadata": {}, 43 | "source": [ 44 | "## Writing the Function\n", 45 | "Let's write in C++ the functions we will use to represent the interference figure. \n", 46 | "They will be JIT-ted: this will be more performant than a Python interpreted version." 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 2, 52 | "metadata": { 53 | "collapsed": false 54 | }, 55 | "outputs": [], 56 | "source": [ 57 | "%%cpp -d\n", 58 | "auto pi = TMath::Pi();\n", 59 | "double single(double *x, double *par){return pow(sin(pi*par[0]*x[0])/(pi*par[0]*x[0]),2);};\n", 60 | "double nslit0(double *x, double *par){return pow(sin(pi*par[1]*x[0])/sin(pi*x[0]),2);};\n", 61 | "double nslit(double *x, double *par){return single(x,par) * nslit0(x,par);};" 62 | ] 63 | }, 64 | { 65 | "cell_type": "markdown", 66 | "metadata": {}, 67 | "source": [ 68 | "We now write a [ROOT function](https://root.cern.ch/doc/master/classTF1.html) in Python wrapping the C++ function we created above. The number of points drawn is increased in order to visualize a smooth curve." 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": 9, 74 | "metadata": { 75 | "collapsed": false 76 | }, 77 | "outputs": [ 78 | { 79 | "name": "stderr", 80 | "output_type": "stream", 81 | "text": [ 82 | "TCanvas::Constructor:0: RuntimeWarning: Deleting canvas with same name: c\n" 83 | ] 84 | } 85 | ], 86 | "source": [ 87 | "interfTF1 = ROOT.TF1(\"Slits interference\",ROOT.nslit,-5.001,5.,2)\n", 88 | "interfTF1.SetNpx(1000)\n", 89 | "c = ROOT.TCanvas(\"c\",\"c\",1600,1200)" 90 | ] 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "metadata": {}, 95 | "source": [ 96 | "The parameters with which one can play are two:\n", 97 | "1. The number of slits\n", 98 | "2. The ratio of the distance between slits and the distance between the panels\n", 99 | "\n", 100 | "In order to easily modify the parameters of the function, a *widget* is used." 101 | ] 102 | }, 103 | { 104 | "cell_type": "code", 105 | "execution_count": 10, 106 | "metadata": { 107 | "collapsed": false 108 | }, 109 | "outputs": [ 110 | { 111 | "data": { 112 | "image/png": "iVBORw0KGgoAAAANSUhEUgAABjwAAASUCAIAAABcKzP2AAAABmJLR0QAAAAAAAD5Q7t/AAAgAElE\nQVR4nOzdvZLbVpo/YGBLVZo72GSjbpW65wLGKdlVluRAWrVn72FGH5nkkkYR2ZHGqvFklr2+h6mR\ndhzI0laRnXovwGqX5GiTTTaeifAPuOIfAkkQ/MQL4HkiNhsEDz74cX58z0GaZVkCAAAAAJH8U90N\nAAAAAIAioRUAAAAA4QitAAAAAAhHaAUAAABAOEIrAAAAAMIRWgEAAAAQjtAKAAAAgHCEVgAAAACE\nI7QCAAAAIByhFQAAAADhCK0AAAAACEdoBQAAAEA4QisAAAAAwhFaAQAAABCO0AoAAACAcIRWAAAA\nAIQjtAIAAAAgHKEVAAAAAOFcqrsBANBgjx8/vri4ePv2bZIkFxcXR0dHk/uPj4+Pjo6+/PLLldb2\nz//8z5Mb//M//zN3gU8++WR6+8cff1ynxXX7t3/7t+ntv/zlLzW2pHEePnw4ufHVV1/V2xIAgP1I\nsyyruw0A0DCPHz9++fLlxcXF0iWPjo5u375dJb361a9+9Y9//GNy+/Lly3//+98LC3zyySf/9V//\nNf2zoZ/gaZpObzd0E/bs4cOH33///c8//5y/064DALpAaAUAq8nHLhUdHR1NqrFKCK2Y9fDhwz//\n+c+z99t1AEAXmNMKAKp6/PjxGolVkiQXFxfrPZCOm5tYAQB0hDmtAKCSx48fP3v2bPb+o6OjyQxW\n03sms1zNDh5M030UOB8dHU2Hkt28efNvf/vbrp+xEQolS42oVLp161bhnps3b9bSEgCAWgitAKCS\n2cTq9u3bL168KHnI6enpy5cv8/ccHx8vHScIczUiaAMA2CKhFQAsd3p6WrinSoLw4sWLQn3WxcXF\n48ePV72q4MSPP/6Yv3pgQ/32t7+tuwmNkZ98/erVqzW2BACgFkIrAFiuUDD16NGjig+c5FP53Orl\ny5frhVZJkvz444/rPTCOv/zlL3U3oZGEVgBAB5mIHQBWc3R0tFLqVFh4dq4rAABgltAKAJZ4/Phx\n/s/j4+NV13D79u2SFQIAALMMDwSAJQq1UfkLBVa0xkNqcf/+/ffv30//PDw8/Prrr2tsz6zf//73\nSZL88ssvkz8PDg7+/d//fT9Pfffu3enOOTw8TJLkm2++2Xy1X3zxxWTuqqtXr/7pT3/afIVTd+/e\nTZIk3+atNDhJkocPH07aXPHalPfu3SvsuufPn2+lJVs8H548eZIkyfQ6CcfHx0+fPt2kbTs6YQCg\nU/Zx7W0AaLTCRQCXXjRwrnx91u3bt2cHGP7qV7/6xz/+Mbl9+fLlv//974UFPvnkk3fv3k3//N//\n/d/p7YcPH37//feT2/nZu5OP50JaNDLxs88+++GHHxa1/PDw8MaNG9tKr/7lX/5levu///u/Zxe4\ndu3aNIP49NNPpxnEtWvX/vM//3PuOg8ODvJZW940LizZLTdv3vzqq68WNfju3buvX7+eNmn2qa9f\nv740jJg24+jo6D/+4z8mt7/44ov88169evXi4mLDQzlx/fr1N2/eLPrvtWvXXr9+Xd7gW7duTZ89\nv3+Ojo7yrXrw4EHJrrtx40bJEx0eHubP55LFprfzR7nkfPj0009LNn/W559/XvKKPj09/etf/1p9\nbVs5YQCA/5MBAKVmp13fxbNcvnx5uv7Lly/PLvCb3/xmURsePHiw3of+jRs3Kn5hODw83MpmLt2N\nBwcH0wV+97vfzd65yHThRU+3yM2bN+e25M6dO1WeN0mSa9eulWzyw4cPp0tevXp1cuetW7cKK5n8\na+1DOXHt2rUqD0+S5M6dOyVtzgdkDx48WLQzp/8qmBR5VXH9+vWSZmTzTpjf/e53VdY893wo+MMf\n/lCxnUtXNVHxhDk4OKi4QgDoOHNaAcASs1VRp6entbRku65cuVJSYFXw/v37K1eu7LQ9i6Rpuqhu\nJe+7776bDBbbirt373777bdVnjdJkjdv3uQLgpb613/914oD61ZyeHhYvcLo22+/rR4tJUmSpmnF\nJe/du1e9kuj169crnVe///3vv/vuuypLLl3s888//+Mf/1jxeZdu/t27dyueqEmS/PLLLyudMADQ\nWea0AoCVvXz58vj4eDr9TQTT0piSMWV5n3322eyQuklH+sqVK5NxW4UF3r9/f//+/T3PcpXv2x98\nkCTJL7/8Mjs67LvvvitMaVRlt8zuokliNduYaR3T+/fvC/HEJIZYNEox74svvihPrFY9lBOHh4ez\nicnBwcFkB842OEmSyTZWCZiqT8o2N7E6PDycHsf379/Pnlc3btyokp8WEqvp+TDZtNnzoeSIzB0S\neHx8PBnG+/bt29lXd5qWzaox94Qp2f/VTxgA6LS6S70AoAEKl/+bOjo6evTo0VaeYpPhgXmF2ZoW\n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\nEsdQ4g9+eZIAAAAASUVORK5CYII=\n", 113 | "text/plain": [ 114 | "" 115 | ] 116 | }, 117 | "metadata": {}, 118 | "output_type": "display_data" 119 | }, 120 | { 121 | "data": { 122 | "text/plain": [ 123 | "0" 124 | ] 125 | }, 126 | "metadata": {}, 127 | "output_type": "display_data" 128 | } 129 | ], 130 | "source": [ 131 | "from ipywidgets import interact, FloatSlider\n", 132 | "\n", 133 | "RatioSlider = FloatSlider(min=.05, max=1., step=0.05, value=0.2)\n", 134 | "NSSlider = FloatSlider(min=1, max=10, step=1, value=2)\n", 135 | "@interact(Ratio = RatioSlider, Number_Of_Slits = NSSlider)\n", 136 | "def interFunction(Ratio, Number_Of_Slits):\n", 137 | " interfTF1.SetParameters(Ratio,Number_Of_Slits)\n", 138 | " interfTF1.Draw()\n", 139 | " c.Draw()\n", 140 | " return 0" 141 | ] 142 | } 143 | ], 144 | "metadata": { 145 | "kernelspec": { 146 | "display_name": "Python 2", 147 | "language": "python", 148 | "name": "python2" 149 | }, 150 | "language_info": { 151 | "codemirror_mode": { 152 | "name": "ipython", 153 | "version": 2 154 | }, 155 | "file_extension": ".py", 156 | "mimetype": "text/x-python", 157 | "name": "python", 158 | "nbconvert_exporter": "python", 159 | "pygments_lexer": "ipython2", 160 | "version": "2.7.6" 161 | } 162 | }, 163 | "nbformat": 4, 164 | "nbformat_minor": 0 165 | } 166 | -------------------------------------------------------------------------------- /notebooks/FastjetInteractive.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Interactive Usage of 3rd Party Libraries: [Fastjet](http://fastjet.fr) Example\n", 8 | "
\n", 9 | "This notebook illustrates how to interactively use 3rd party libraries. The example is built around [Fastjet](http://fastjet.fr), a software package for jet finding which is widely adopted in High Energy Physics. Nevertheless, the concepts discussed are valid for any C++ library.\n", 10 | "## Some Context\n", 11 | "Jets are the experimental signatures of quarks and gluons produced in high-energy processes such as head-on proton-proton collisions. As quarks and gluons have a net colour charge and cannot exist freely due to colour-confinement, they are not directly observed in Nature. Instead, they come together to form colour-neutral hadrons, a process called hadronisation that leads to a collimated spray of hadrons called a jet (from http://cms.web.cern.ch/news/jets-cms-and-determination-their-energy-scale).\n", 12 | "The kinematic properties of originating quarks and gluons can be inferred by the ones of the jets. In this example we will build jets starting from an event which is an emulation of a collision of protons at the [LHC](http://home.cern/topics/large-hadron-collider).\n", 13 | "## Preparation of the environment\n", 14 | "ROOT needs to be told where to find\n", 15 | "1. The interfaces of the C++ entites present in the 3rd party libraries\n", 16 | "2. The implementations of such entities\n", 17 | "It is therefore necessary to update the include path and load the fastjet library." 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": null, 23 | "metadata": { 24 | "collapsed": false 25 | }, 26 | "outputs": [], 27 | "source": [ 28 | "gSystem->Load(\"libfastjet\");" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "## Preparation of the Input Particles\n", 36 | "Here we convert an ASCII file in ROOT format to then fill the particles necessary to Fastjet.\n", 37 | "Notice the inclusion of the header file. Given that we instructed ROOT about its location and the Fastjet library has been loaded, the function can be smoothly JIT-ted." 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 2, 43 | "metadata": { 44 | "collapsed": false 45 | }, 46 | "outputs": [], 47 | "source": [ 48 | "%%cpp -d\n", 49 | "#include \"fastjet/ClusterSequence.hh\"\n", 50 | "void fillInputParticles(vector& input_particles, const char* inputFileName) \n", 51 | "{\n", 52 | " auto ntupleFormat = \"px:py:pz:E\";\n", 53 | " TNtuple input_particles_ntuple(\"InputParticles\",\"Input Particles\",ntupleFormat);\n", 54 | " auto n_particles = input_particles_ntuple.ReadFile(inputFileName,ntupleFormat);\n", 55 | " input_particles.reserve(n_particles);\n", 56 | "\n", 57 | " for (auto i : ROOT::TSeqI(n_particles)) {\n", 58 | " input_particles_ntuple.GetEntry(i);\n", 59 | " auto v = input_particles_ntuple.GetArgs();\n", 60 | " fastjet::PseudoJet particle(v[0],v[1],v[2],v[3]);\n", 61 | " particle.set_user_index(i);\n", 62 | " input_particles.emplace_back(particle); \n", 63 | " }\n", 64 | "}" 65 | ] 66 | }, 67 | { 68 | "cell_type": "markdown", 69 | "metadata": {}, 70 | "source": [ 71 | "## Preparation of the Histogram Displaying the Jets' Components\n", 72 | "We now need to:\n", 73 | "1. Cluster the jets with fastjet\n", 74 | "2. Extract the clustered particles from the jet and display them as 2D histograms\n", 75 | "This function is flexible: the jet algorithm, its radius and the jets' minimum transverse momentum can be set by the user. This is useful to visualise the behaviour of the different algorithms." 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 3, 81 | "metadata": { 82 | "collapsed": false 83 | }, 84 | "outputs": [], 85 | "source": [ 86 | "%%cpp -d\n", 87 | "THStack* getJetsComponents(const vector& input_particles,\n", 88 | " fastjet::JetAlgorithm jetAlgorithm = fastjet::antikt_algorithm, \n", 89 | " double R = .6,\n", 90 | " double ptMin = 14.)\n", 91 | "{\n", 92 | " // create a jet definition: \n", 93 | " // a jet algorithm with a given radius parameter\n", 94 | " fastjet::JetDefinition jet_def(jetAlgorithm, R);\n", 95 | " fastjet::ClusterSequence clust_seq(input_particles, jet_def);\n", 96 | "\n", 97 | " // get the resulting jets ordered in pt\n", 98 | " auto inclusive_jets = sorted_by_pt(clust_seq.inclusive_jets(ptMin));\n", 99 | " \n", 100 | " auto hs = new THStack(\"hs\",\"Jets;rapidity;#phi\");\n", 101 | " int i=0;\n", 102 | " for (auto&& jet : inclusive_jets) {\n", 103 | " // get the constituents of the jet\n", 104 | " auto constituents = jet.constituents();\n", 105 | " auto h2Name = TString::Format(\"JetHist_%d\",i);\n", 106 | " if (auto oldH2 = (TH2F*) gDirectory->GetObjectChecked(h2Name,\"TH2F\")) {\n", 107 | " delete oldH2;\n", 108 | " }\n", 109 | " auto h2 = new TH2F(h2Name,\"JetHist\",48, -5, 5, 48, 0, TMath::TwoPi());\n", 110 | " h2->SetFillColor(i+1);\n", 111 | " h2->SetLineWidth(1);\n", 112 | " h2->SetLineColor(kBlack);\n", 113 | " for (auto&& constituent : constituents){\n", 114 | " h2->Fill(constituent.rap(), constituent.phi_02pi(), constituent.perp());\n", 115 | " }\n", 116 | " hs->Add(h2);\n", 117 | " i++;\n", 118 | " }\n", 119 | " hs->Draw();// This creates the axes\n", 120 | " hs->GetXaxis()->SetTitleOffset(1.7);\n", 121 | " hs->GetYaxis()->SetTitleOffset(1.7);\n", 122 | " return hs;\n", 123 | "}" 124 | ] 125 | }, 126 | { 127 | "cell_type": "markdown", 128 | "metadata": {}, 129 | "source": [ 130 | "## Clustering and Visualisation\n", 131 | "We now prepare all the elements needed to build our plot: a canvas to hold the graphics primitives, the containers and the stack of histograms containing the jets' components." 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 4, 137 | "metadata": { 138 | "collapsed": false 139 | }, 140 | "outputs": [], 141 | "source": [ 142 | "TCanvas c;\n", 143 | "c.SetTheta(90);\n", 144 | "c.SetPhi(37);\n", 145 | "unique_ptr jetComponents(nullptr);\n", 146 | "\n", 147 | "vector input_particles;\n", 148 | "fillInputParticles(input_particles, \"../data/Pythia-Z2jets-lhc-pileup-1ev.dat\");" 149 | ] 150 | }, 151 | { 152 | "cell_type": "markdown", 153 | "metadata": {}, 154 | "source": [ 155 | "We are ready to go now: we can play with the parameters of the clustering and visualise the result. Each jet is visualised with a different colour in the Rapidity-Phi plane." 156 | ] 157 | }, 158 | { 159 | "cell_type": "code", 160 | "execution_count": 6, 161 | "metadata": { 162 | "collapsed": false 163 | }, 164 | "outputs": [ 165 | { 166 | "data": { 167 | "image/png": "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\nAAAARP4/Q02fvMeMzS0AAAAASUVORK5CYII=\n", 168 | "text/plain": [ 169 | "" 170 | ] 171 | }, 172 | "metadata": {}, 173 | "output_type": "display_data" 174 | } 175 | ], 176 | "source": [ 177 | "jetComponents.reset(getJetsComponents(input_particles, fastjet::antikt_algorithm, .6, 14.));\n", 178 | "jetComponents->Draw(\"LEGO1 0\");\n", 179 | "c.Draw();" 180 | ] 181 | } 182 | ], 183 | "metadata": { 184 | "kernelspec": { 185 | "display_name": "ROOT C++", 186 | "language": "c++", 187 | "name": "root" 188 | }, 189 | "language_info": { 190 | "codemirror_mode": "text/x-c++src", 191 | "file_extension": ".C", 192 | "mimetype": " text/x-c++src", 193 | "name": "c++" 194 | } 195 | }, 196 | "nbformat": 4, 197 | "nbformat_minor": 0 198 | } 199 | -------------------------------------------------------------------------------- /notebooks/Interactive_C++_Shell.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Sky is the limit!\n", 8 | "
" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 1, 14 | "metadata": { 15 | "collapsed": false 16 | }, 17 | "outputs": [ 18 | { 19 | "name": "stdout", 20 | "output_type": "stream", 21 | "text": [ 22 | "(std::unordered_map &) { \"ROOTBooks\" => { \"are\", \"powerful\" }, \"ROOT\" => { \"is\", \"fun\" } }\n" 23 | ] 24 | } 25 | ], 26 | "source": [ 27 | "using V = std::vector;\n", 28 | "std::unordered_map m {{\"ROOT\", {\"is\", \"fun\"}}, {\"ROOTBooks\", {\"are\", \"powerful\"}}};\n", 29 | "m" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 2, 35 | "metadata": { 36 | "collapsed": false 37 | }, 38 | "outputs": [ 39 | { 40 | "name": "stdout", 41 | "output_type": "stream", 42 | "text": [ 43 | "Your turn!\n" 44 | ] 45 | } 46 | ], 47 | "source": [ 48 | "std::cout << \"Your turn!\" << endl;" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": null, 54 | "metadata": { 55 | "collapsed": true 56 | }, 57 | "outputs": [], 58 | "source": [] 59 | } 60 | ], 61 | "metadata": { 62 | "kernelspec": { 63 | "display_name": "ROOT C++", 64 | "language": "c++", 65 | "name": "root" 66 | }, 67 | "language_info": { 68 | "codemirror_mode": "text/x-c++src", 69 | "file_extension": ".C", 70 | "mimetype": " text/x-c++src", 71 | "name": "c++" 72 | } 73 | }, 74 | "nbformat": 4, 75 | "nbformat_minor": 0 76 | } 77 | -------------------------------------------------------------------------------- /notebooks/ROOT_Example.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# How to write a C++ ROOTBook\n", 8 | "
\n", 9 | "In order to use a C++ [ROOT](root.cern.ch)book, just start the [ROOT kernel](https://github.com/root-mirror/root/tree/master/bindings/pyroot/JupyROOT/kernel). That's it. \n", 10 | "We will see also how the user can mark cells containing C++ statements with the **%%cpp** magic." 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 1, 16 | "metadata": { 17 | "collapsed": false 18 | }, 19 | "outputs": [ 20 | { 21 | "name": "stdout", 22 | "output_type": "stream", 23 | "text": [ 24 | "From this point on...\n", 25 | "... it's only C++ ...\n" 26 | ] 27 | } 28 | ], 29 | "source": [ 30 | "cout << \"From this point on...\\n\" \n", 31 | " << \"... it's only C++ ...\" << endl;" 32 | ] 33 | }, 34 | { 35 | "cell_type": "markdown", 36 | "metadata": {}, 37 | "source": [ 38 | "We now create a [ROOT histogram](https://root.cern.ch/doc/master/classTH1F.html) and fill it with [random numbers](https://root.cern.ch/doc/master/classTRandom.html) distributed according to a Gaussian." 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 2, 44 | "metadata": { 45 | "collapsed": false 46 | }, 47 | "outputs": [], 48 | "source": [ 49 | "TH1F h(\"gauss\",\"Example histogram\",64,-4,4);\n", 50 | "h.FillRandom(\"gaus\");" 51 | ] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "metadata": {}, 56 | "source": [ 57 | "Now, we create a [canvas](https://root.cern.ch/doc/master/classTCanvas.html), the entity which holds graphics primitives." 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": 3, 63 | "metadata": { 64 | "collapsed": false 65 | }, 66 | "outputs": [], 67 | "source": [ 68 | "TCanvas c(\"myCanvasName\",\"The Canvas Title\",1600,1200);\n", 69 | "h.Draw()" 70 | ] 71 | }, 72 | { 73 | "cell_type": "markdown", 74 | "metadata": {}, 75 | "source": [ 76 | "For the histogram to be displayed in the notebook, we need to draw the canvas." 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 4, 82 | "metadata": { 83 | "collapsed": false 84 | }, 85 | "outputs": [ 86 | { 87 | "data": { 88 | "image/png": "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\nAITz/0TxjLQBURUnAAAAAElFTkSuQmCC\n", 89 | "text/plain": [ 90 | "" 91 | ] 92 | }, 93 | "metadata": {}, 94 | "output_type": "display_data" 95 | } 96 | ], 97 | "source": [ 98 | "c.Draw()" 99 | ] 100 | }, 101 | { 102 | "cell_type": "markdown", 103 | "metadata": {}, 104 | "source": [ 105 | "Let's now fit the histogram." 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 5, 111 | "metadata": { 112 | "collapsed": false 113 | }, 114 | "outputs": [ 115 | { 116 | "data": { 117 | "image/png": "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\n838TIrwZXlQElQAAAABJRU5ErkJggg==\n", 118 | "text/plain": [ 119 | "" 120 | ] 121 | }, 122 | "metadata": {}, 123 | "output_type": "display_data" 124 | }, 125 | { 126 | "name": "stdout", 127 | "output_type": "stream", 128 | "text": [ 129 | " FCN=47.4997 FROM MIGRAD STATUS=CONVERGED 53 CALLS 54 TOTAL\n", 130 | " EDM=8.44224e-09 STRATEGY= 1 ERROR MATRIX ACCURATE \n", 131 | " EXT PARAMETER STEP FIRST \n", 132 | " NO. NAME VALUE ERROR SIZE DERIVATIVE \n", 133 | " 1 Constant 2.46469e+02 4.31494e+00 1.19094e-02 -2.44811e-05\n", 134 | " 2 Mean 1.04782e-02 1.43576e-02 4.87656e-05 -6.34020e-03\n", 135 | " 3 Sigma 1.00315e+00 1.03818e-02 9.45504e-06 -2.70309e-02\n" 136 | ] 137 | } 138 | ], 139 | "source": [ 140 | "h.Fit(\"gaus\", \"S\");\n", 141 | "c.Draw();" 142 | ] 143 | }, 144 | { 145 | "cell_type": "markdown", 146 | "metadata": {}, 147 | "source": [ 148 | "Before moving forward, let's save our histogram on a file. All ROOT objects can be written to [ROOT files](https://root.cern.ch/doc/master/classTFile.html) out-of-the-box." 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 6, 154 | "metadata": { 155 | "collapsed": false 156 | }, 157 | "outputs": [], 158 | "source": [ 159 | "TFile outputFile(\"output.root\",\"RECREATE\");\n", 160 | "h.Write();\n", 161 | "outputFile.Close();" 162 | ] 163 | }, 164 | { 165 | "cell_type": "markdown", 166 | "metadata": {}, 167 | "source": [ 168 | "Let's check what is the content of the file with the [*rootls*](https://root.cern.ch/how/how-quickly-inspect-content-file) command line utility. A magic or the well known *.!* ROOT directive can be used." 169 | ] 170 | }, 171 | { 172 | "cell_type": "code", 173 | "execution_count": 7, 174 | "metadata": { 175 | "collapsed": false 176 | }, 177 | "outputs": [ 178 | { 179 | "name": "stdout", 180 | "output_type": "stream", 181 | "text": [ 182 | "\u001b[1mTH1F \u001b[0mJan 08 16:36 gauss \"Example histogram\"\r\n", 183 | "\n" 184 | ] 185 | } 186 | ], 187 | "source": [ 188 | "%%shell\n", 189 | "rootls -l output.root" 190 | ] 191 | }, 192 | { 193 | "cell_type": "markdown", 194 | "metadata": {}, 195 | "source": [ 196 | "## And if I make a mistake? Diagnostics\n", 197 | "Clang diagnostics are offered by ROOT, for example:" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 8, 203 | "metadata": { 204 | "collapsed": false 205 | }, 206 | "outputs": [ 207 | { 208 | "name": "stderr", 209 | "output_type": "stream", 210 | "text": [ 211 | "\u001b[1minput_line_113:3:11: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mmember reference type 'TH1F *' is a pointer; maybe you meant to use '->'?\u001b[0m\n", 212 | "myHistoPtr.Dump();\n", 213 | "\u001b[0;1;32m~~~~~~~~~~^\n", 214 | "\u001b[0m\u001b[0;32m ->\n", 215 | "\u001b[0m" 216 | ] 217 | } 218 | ], 219 | "source": [ 220 | "auto myHistoPtr = new TH1F();\n", 221 | "myHistoPtr.Dump();" 222 | ] 223 | }, 224 | { 225 | "cell_type": "markdown", 226 | "metadata": {}, 227 | "source": [ 228 | "## Magics\n", 229 | "It is possible to declare functions or to use ACLiC with the **%%cpp** magics.\n", 230 | "\n", 231 | "### Declaration of functions\n", 232 | "The **-d** option needs to be used when declaring functions: we must be explicit." 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": 9, 238 | "metadata": { 239 | "collapsed": true 240 | }, 241 | "outputs": [], 242 | "source": [ 243 | "%%cpp -d\n", 244 | "void f() {\n", 245 | " cout << \"This is function f\" << endl;\n", 246 | "}" 247 | ] 248 | }, 249 | { 250 | "cell_type": "markdown", 251 | "metadata": {}, 252 | "source": [ 253 | "The value printing capabilities of ROOT are outstanding: you can inspect the code of a JIT-ted function from its name." 254 | ] 255 | }, 256 | { 257 | "cell_type": "code", 258 | "execution_count": 10, 259 | "metadata": { 260 | "collapsed": false 261 | }, 262 | "outputs": [ 263 | { 264 | "name": "stdout", 265 | "output_type": "stream", 266 | "text": [ 267 | "(void (*)()) Function @0x7fed99a9c080\n", 268 | " at :1:\n", 269 | "void f() {\n", 270 | " cout << \"This is function f\" << endl;\n", 271 | "}\n", 272 | "\n" 273 | ] 274 | } 275 | ], 276 | "source": [ 277 | "f" 278 | ] 279 | }, 280 | { 281 | "cell_type": "markdown", 282 | "metadata": {}, 283 | "source": [ 284 | "### Advanced: ACliC\n", 285 | "The **-a** allows to compile the cell code with ACLiC. This is not so relevant for performance since the ROOT interpreter just in time compiles the C++ code. Nevertheless, ACLiC is most useful when the automatic creation of dictionaries is required, for example in presence of I/O operations." 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": 11, 291 | "metadata": { 292 | "collapsed": false 293 | }, 294 | "outputs": [ 295 | { 296 | "name": "stderr", 297 | "output_type": "stream", 298 | "text": [ 299 | "Info in : creating shared library b8651c13_C.so\n" 300 | ] 301 | } 302 | ], 303 | "source": [ 304 | "%%cpp -a\n", 305 | "class A{};" 306 | ] 307 | }, 308 | { 309 | "cell_type": "markdown", 310 | "metadata": {}, 311 | "source": [ 312 | "Let's verify that the dictionary is there:" 313 | ] 314 | }, 315 | { 316 | "cell_type": "code", 317 | "execution_count": 12, 318 | "metadata": { 319 | "collapsed": false 320 | }, 321 | "outputs": [ 322 | { 323 | "name": "stdout", 324 | "output_type": "stream", 325 | "text": [ 326 | "(Bool_t) true\n" 327 | ] 328 | } 329 | ], 330 | "source": [ 331 | "TClass::GetClass(\"A\")->HasDictionary()" 332 | ] 333 | } 334 | ], 335 | "metadata": { 336 | "kernelspec": { 337 | "display_name": "ROOT C++", 338 | "language": "c++", 339 | "name": "root" 340 | }, 341 | "language_info": { 342 | "codemirror_mode": "text/x-c++src", 343 | "file_extension": ".C", 344 | "mimetype": " text/x-c++src", 345 | "name": "c++" 346 | } 347 | }, 348 | "nbformat": 4, 349 | "nbformat_minor": 0 350 | } 351 | --------------------------------------------------------------------------------