📄 Course Program and live sessions A.Y 2025/2025
This repository contains the materials for Module 3 of the Statistical Data Analysis for Nuclear and Subnuclear Physics course, part of the Master’s Degree in Physics at the University of Bologna.
statistical-data-analysis/
│
├── classes/ → Live coding sessions from the classes
│ └── 2025/ → Materials for the 2025/26 academic year
│
├── data/ → Datasets used for exercises
│
├── docs/ → Documentation and reference material
│ ├── howto/ → Practical guides (ROOT installation)
│ └── teaching_material/ → Slides and lecture material
│
├── templates/ → Analysis templates or notebook skeletons
│
└── exercises/ → Exercises organized by lesson or topicThe module focuses on selected statistical analysis cases in High Energy Physics (HEP), using RooFit and RooStats as the main tools.
| Area | Tools / Concepts |
|---|---|
| Data Modeling | RooFit |
| Statistical Analysis | RooStats |
| Multivariate Analysis | TMVA |
| Unfolding Techniques | RooUnfold |
- 4 hands-on lab sessions
- Each session begins with a short lecture (with slides)
- Followed by guided exercises or project work
- Assignments must be completed and submitted via Virtuale before the exam
- Exercises are perfomed using PyROOT or C++ code
Submission of all assignments is mandatory to access the exam
- Computer Lab Setup
You can choose between two options:- Personal Laptop (with ROOT installed and RooFit/RooStats/TMVA)
- Lab workstations (Windows machines accessible via UNIBO credentials)
The final exam is joint between Modules 1, 2, and 3 and includes:
- Theory questions
- One practical exercise
- One question based on lab work (e.g., code analysis or commentary)
Eligibility: All assignments must be submitted before the exam.
Available on:
- Virtuale (UNIBO): slides, assignments
- GitHub: installation guides, examples, templates
Students enrolling in this course are expected to have familiarity with basic concepts in statistics and programming, as well as with the ROOT Framework for data analysis and visualization.
Both C++ and Python users are welcome in this course. All students should be comfortable using ROOT to load and execute macros or run jupyter notebooks.
For C++ Users
- Familiarity with C++ syntax and concepts. You will not be required to compile code
- Ability to run C++ macros within the ROOT environment and manage ROOT files.
For Python Users
- Familiarity with Python and Jupyter Notebooks.
- Ability to use ROOT via PyROOT.
Before attending the lab sessions, students are expected to:
- Review the ROOT Primer.
- Read the following sections from Practical Statistics for the LHC:
- Introduction
- Conceptual Blocks for Modeling
- Refresh their programming fundamentals:
- C++ Users: namespaces, classes, inheritance, pointers vs. references.
- Python Users: Python syntax, Jupyter workflows, and ROOT integration.
-
Required software: ROOT, Jupyter, Visual Studio Code (recommended)
-
Reference system:
Linux Ubuntu 24.04 (Windows Subsystem for Linux WSL 2 on Windows)
same setup as the university lab machines.
📄 Installation guide:
WSL Setup Guide with ROOT, Jupyter, and VS Code (Ubuntu 24.04) -
Other options
Native Linux / macOS / Windows setups are also suitable
provided the required software tools are properly installed.- General Setup Guides from the course
“Programmazione per la Fisica”
(Bachelor’s Degree in Physics, University of Bologna):
- Windows Subsystem for Linux (WSL) (in Italian)
- macOS (in Italian)
- ROOT Framework Installation
- for Windows 7, 8, 10 (up to build 10511)
- General Setup Guides from the course
“Programmazione per la Fisica”
(Bachelor’s Degree in Physics, University of Bologna):
-
Cloud-based alternatives
If you can't install ROOT locally, you can use one of the following cloud-based environments to run ROOT and notebooks directly in your browser.- ROOT on Colab
Run ROOT interactively on Google Colab, with optional persistent storage through your Google Drive or github. Sessions are time-limited (typically up to 12 hours) and may disconnect after periods of inactivity. - ROOT on Binder
Launch ROOT notebooks in a temporary Binder environment without any local setup.
No account or installation is required, but all work is non-persistent (data is lost after the session ends unless you manually download or export your notebooks).
- ROOT on Colab
To check that ROOT and its extensions are correctly installed:
# python
import ROOT
w = ROOT.RooWorkspace() # Expected output: RooFit v3.xx -- Developed by ...
t = ROOT.TMVA.TMVAGui() # Expected error: file TMVA.root does not exist// C++
$ root
root [0] RooWorkspace w() // Expected output: RooFit v3.xx -- Developed by ...
root [1] TMVA::TMVAGui() // Expected error: file TMVA.root does not existTo get familiar with Linux and the command line, refer to this comprehensive tutorial:
- Ryan’s Linux Tutorial
Recommended chapters:- The Command Line
- Basic Navigation
- File Manipulation
💡 Learn and apply Modern C++ (C++11 / C++14 / C++17 / C++20)