Última actualización:

Guía de inicio rápido del framework ROOT

Qué es ROOT?

ROOT es un framework de código abierto en C++ y Python desarrollado en CERN para el procesamiento de datos, análisis estadístico, visualización y almacenamiento en física de altas energías (HEP). Es la herramienta estándar para analizar datos de física de partículas y es utilizado por prácticamente todos los experimentos del CERN.

ROOT proporciona estructuras de datos especializadas (como TTree para datos columnares), histogramas, ajuste de curvas y un potente sistema de E/S basado en el formato de archivo .root. También incluye CLING, un intérprete interactivo de C++, y PyROOT, una interfaz Python para todas las clases de ROOT.

Opción sin instalación: SWAN

Si quieres empezar a usar ROOT inmediatamente sin instalar nada, CERN proporciona SWAN (Service for Web-based ANalysis) en swan.cern.ch. SWAN es un servicio basado en JupyterHub que te ofrece un entorno de notebooks con ROOT, PyROOT y muchos otros paquetes científicos de Python preinstalados.

Simplemente inicia sesión con tus credenciales de CERN, elige una pila de software y comienza a programar. SWAN se conecta a tu almacenamiento EOS, para que puedas acceder a tus archivos de datos directamente. Es la forma más rápida de empezar con ROOT en CERN.

Métodos de instalación

Conda (Recomendado para máquinas personales)

La forma más fácil de instalar ROOT en tu máquina personal es vía conda-forge:

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

Snap (Linux)

En distribuciones Linux que soportan paquetes Snap:

sudo snap install root-framework

Homebrew (macOS)

En macOS con Homebrew instalado:

brew install root

Binarios precompilados

Descarga binarios precompilados para tu plataforma desde el sitio web oficial de ROOT en root.cern/install. Extrae el archivo y ejecuta el script de configuración:

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

En lxplus (CVMFS)

En las máquinas lxplus de CERN, ROOT está disponible a través de CVMFS sin necesidad de instalación. Simplemente configura el entorno de software LCG:

# Listar releases LCG disponibles
ls /cvmfs/sft.cern.ch/lcg/views/

# Configurar un release LCG específico (ejemplo)
source /cvmfs/sft.cern.ch/lcg/views/LCG_105/x86_64-el9-gcc13-opt/setup.sh

# Verificar que ROOT está disponible
root --version

Primeros pasos con ROOT

C++ interactivo (CLING)

Inicia el intérprete interactivo de C++ de ROOT escribiendo root en tu terminal:

$ 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

Usa ROOT desde Python con las bindings de PyROOT:

import ROOT

# Crear y rellenar un histograma
h = ROOT.TH1F("h", "Gaussian Distribution;x;Entries", 100, -5, 5)
h.FillRandom("gaus", 10000)

# Dibujar en un canvas
c = ROOT.TCanvas("c", "My Canvas", 800, 600)
h.Draw()
c.SaveAs("histogram.png")

Leer archivos .root

Abre y explora un archivo ROOT existente:

import ROOT

f = ROOT.TFile.Open("data.root")
f.ls()           # Listar contenidos
tree = f.Get("Events")  # Obtener un TTree
tree.Print()     # Mostrar ramas
tree.Draw("pt")  # Gráfico rápido de una rama

Integración con NumPy / pandas

Convierte datos de ROOT a arrays de NumPy o DataFrames de pandas para usarlos con el ecosistema Python más amplio:

import ROOT
import numpy as np

# Usando RDataFrame (enfoque moderno de ROOT)
df = ROOT.RDataFrame("Events", "data.root")
npy = df.AsNumpy(["pt", "eta"])  # Devuelve dict de arrays NumPy

# Convertir a DataFrame de pandas
import pandas as pd
pdf = pd.DataFrame(npy)

Recursos esenciales

Tareas comunes de la primera semana

Revisión y mantenimiento

Mantenido por Efrén Rodríguez Rodríguez. Revisión trimestral de contenido y enlaces oficiales.

  • Verificar plazos legales y enlaces oficiales
  • Revisar horarios de transporte y nombres de paradas
  • Revalidar umbrales y tipos fiscales
  • Confirmar URLs de servicios y portales CERN