Ultimo aggiornamento:

Guida Rapida al Framework ROOT

Cos'è ROOT?

ROOT è un framework open-source in C++ e Python sviluppato al CERN per l'elaborazione dei dati, l'analisi statistica, la visualizzazione e l'archiviazione nella fisica delle alte energie (HEP). È lo strumento standard per l'analisi dei dati di fisica delle particelle ed è utilizzato praticamente da ogni esperimento al CERN.

ROOT fornisce strutture dati specializzate (come TTree per dati colonnari), creazione di istogrammi, fitting di curve e un potente sistema di I/O basato sul formato file .root. Include inoltre CLING, un interprete C++ interattivo, e PyROOT, un'interfaccia Python per tutte le classi ROOT.

Opzione senza installazione: SWAN

Per iniziare a usare ROOT immediatamente senza installare nulla, il CERN mette a disposizione SWAN (Service for Web-based ANalysis) all'indirizzo swan.cern.ch. SWAN è un servizio basato su JupyterHub che offre un ambiente notebook con ROOT, PyROOT e molti altri pacchetti scientifici Python preinstallati.

Basta accedere con le proprie credenziali CERN, scegliere uno stack software e iniziare a programmare. SWAN si collega al proprio spazio di archiviazione EOS, permettendo di accedere direttamente ai propri file di dati. Questo è il modo più rapido per iniziare con ROOT al CERN.

Metodi di installazione

Conda (Consigliato per macchine personali)

Il modo più semplice per installare ROOT sulla propria macchina personale è tramite conda-forge:

conda create -n root-env
conda activate root-env
conda install -c conda-forge root

Snap (Linux)

Sulle distribuzioni Linux che supportano i pacchetti Snap:

sudo snap install root-framework

Homebrew (macOS)

Su macOS con Homebrew installato:

brew install root

Binari precompilati

Scaricare i binari precompilati per la propria piattaforma dal sito ufficiale di ROOT all'indirizzo root.cern/install. Estrarre l'archivio e caricare lo script di configurazione:

tar -xzf root_v6.XX.YY.Linux-ubuntu22-x86_64-gcc11.4.tar.gz
source root/bin/thisroot.sh

Su lxplus (CVMFS)

Sulle macchine lxplus del CERN, ROOT è disponibile tramite CVMFS senza alcuna installazione. È sufficiente configurare l'ambiente software LCG:

# Elencare le release LCG disponibili
ls /cvmfs/sft.cern.ch/lcg/views/

Configurare una release LCG specifica (esempio)

source /cvmfs/sft.cern.ch/lcg/views/LCG_105/x86_64-el9-gcc13-opt/setup.sh

Verificare che ROOT sia disponibile

root --version

Primi passi con ROOT

C++ interattivo (CLING)

Avviare l'interprete C++ interattivo di ROOT digitando root nel terminale:

$ root
root [0] TH1F *h = new TH1F("h", "My Histogram", 100, -5, 5);
root [1] h->FillRandom("gaus", 10000);
root [2] h->Draw();
root [3] .q

PyROOT

Utilizzare ROOT da Python con i binding PyROOT:

import ROOT

Creare e riempire un istogramma

h = ROOT.TH1F("h", "Gaussian Distribution;x;Entries", 100, -5, 5) h.FillRandom("gaus", 10000)

Disegnare su un canvas

c = ROOT.TCanvas("c", "My Canvas", 800, 600) h.Draw() c.SaveAs("histogram.png")

Lettura di file .root

Aprire ed esplorare un file ROOT esistente:

import ROOT

f = ROOT.TFile.Open("data.root") f.ls() # Elencare il contenuto tree = f.Get("Events") # Ottenere un TTree tree.Print() # Mostrare i branch tree.Draw("pt") # Grafico rapido di un branch

Integrazione NumPy / pandas

Convertire dati ROOT in array NumPy o DataFrame pandas per l'uso con il più ampio ecosistema Python:

import ROOT
import numpy as np

Utilizzo di RDataFrame (approccio ROOT moderno)

df = ROOT.RDataFrame("Events", "data.root") npy = df.AsNumpy(["pt", "eta"]) # Restituisce un dict di array NumPy

Conversione in DataFrame pandas

import pandas as pd pdf = pd.DataFrame(npy)

Risorse essenziali

Attività comuni della prima settimana