- Soporta el procesamiento de grandes volúmenes de datos y el análisis científico que se requieren en investigaciones a gran escala, como la física de altas energías; actualmente, los archivos ROOT almacenan más de 2 exabytes de datos
- ROOT también se usó en el descubrimiento del Higgs, por lo que es una herramienta con casos de uso reales comprobados en el análisis de datos experimentales
- Al ser open source, se puede usar y modificar libremente, y recibe contribuciones de usuarios mediante un proceso de desarrollo abierto
- El intérprete de C++ incluido es adecuado para prototipado rápido, y los bindings dinámicos de Python permiten acceder a todos sus componentes
- También soporta Jupyter Notebook, lo que permite extender los análisis basados en C++ y Python a un entorno de notebooks; además, se siguen publicando noticias sobre releases, capacitaciones y hackatones
El rol de ROOT en el análisis de datos
- ROOT es una herramienta que permite el procesamiento y el análisis científico de grandes volúmenes de datos
- Actualmente, más de 2 exabytes de datos están almacenados en archivos ROOT
- El Higgs fue descubierto con ROOT
Desarrollo open source y contribuciones
- ROOT se ofrece como open source
- Se puede usar libremente
- Se puede compilar desde el código fuente y modificar
- Adopta un proceso de desarrollo abierto que recibe contribuciones de usuarios
Formas de uso basadas en C++, Python y notebooks
- La interfaz de desarrollo soporta tanto C++ como Python
- Ofrece un intérprete de C++, adecuado para prototipado rápido
- Con los bindings dinámicos de Python se puede acceder a todos los componentes de ROOT
- También soporta Jupyter Notebook
Noticias del blog y releases
- Entre las entradas recientes del blog hay publicaciones sobre una invitación al estreno en YouTube del documental de C++, el tráiler del documental de ROOT y C++, el ROOT Advanced Course 2026 y el 3rd ROOT Hackathon
- La lista de releases más recientes incluye las siguientes versiones
- Release 6.40.02 - 11 de junio de 2026
- Release 6.40.00 - 20 de mayo de 2026
- Release 6.40.00-rc1 - 23 de abril de 2026
- Release 6.38.06 - 12 de junio de 2026
- Release 6.38.04 - 12 de marzo de 2026
1 comentarios
Comentarios en Hacker News
Me trae recuerdos. Cuando trabajaba en física de partículas usaba mucho ROOT y tenía una relación de amor-odio con él
Por un lado, tenía mucha deuda técnica e inercias raras, pero por otro había bastantes cosas que eran más fáciles en ROOT que en opciones más “modernas” como matplotlib. Por ejemplo, histogramas, datos altamente estructurados con objetos que tienen campos metidos en “columnas”, o graficar funciones directamente sin asignar arreglos x/y por separado
También me gustaba su API orientada a objetos e intuitiva. Se sentía más cercana al C++ o Java clásico que al method chaining de pandas/matplotlib, al abuso de la sintaxis
[]y a varios comportamientos medio mágicos; no era elegante y sí verbosa, pero en análisis científico eso incluso puede ser una ventajaCuando me fui, hace unos 5 años, ROOT estaba en transición, quitando el viejo intérprete CINT y migrando a una base de código basada en clang. Entiendo que ahora se pueden correr análisis en Jupyter con C++ o Python, y he escuchado que la calidad del código ha mejorado bastante
No hay muchas razones para que un análisis nuevo tenga que usar ROOT por defecto. Es mejor usar algo como uproot, que es una opción más amigable y más sensata
Puede haber flujos de trabajo legacy o casos donde cada experimento trae un montón de parches personalizados encima de ROOT, pero si hablamos solo de análisis de física, puede ser una forma de hacerse sufrir a uno mismo
También me gusta la página 404. Y no, no hablo del cuarto 404
https://github.com/scikit-hep/uproot5
https://root.cern/404/
forde Python son demasiado lentosEn esos casos puedes usar Numba, cuando funciona bien, o si me permiten hacer autopromoción descarada, puedes usar Julia: https://github.com/JuliaHEP/UnROOT.jl
Discusión anterior en HN sobre usar Julia en física de partículas: https://news.ycombinator.com/item?id=38512793
Es genial ver proyectos de software a gran escala usados para descubrimientos científicos
Otro ejemplo: en LIGO usaron GStreamer para encontrar ondas gravitacionales: https://lscsoft.docs.ligo.org/gstlal/
Pero no sé si realmente sea buena idea que gente externa lo use. Mi experiencia puede estar algo desactualizada, pero era bastante tosco y anticuado. La gran ventaja en CERN o en trabajo de física de partículas es que es un estándar de facto, así que colaborar internamente es fácil
En cambio, GStreamer es una plataforma con un diseño hermoso, con una arquitectura tan buena que se puede abstraer y reutilizar fácilmente en escenarios completamente distintos, probablemente fuera de lo que imaginaron quienes la crearon originalmente
Se nota por todas partes. Es un monolito enorme, así que cada vez que quieres hacer algo apenas fuera de lo normal terminas peleándote con él. Menos mal no tengo que usarlo seguido, aunque todavía me toca lidiar un poco con eso
Personalmente, creo que ROOT intenta hacer demasiadas cosas, su diseño de API no es bueno y, sobre todo, ROOT como librería y ROOT como programa no están separados
Tiene muchísimo estado global y parte de la idea de que la gente debe usarlo al estilo del programa ROOT. ROOT 6 empezó a arreglar parte de eso, pero tomará tiempo, y personalmente creo que al apoyarse tan profundamente en llvm y clang aumentaron todavía más los tiempos de compilación y volvieron el proyecto más difícil de arreglar
Durante mucho tiempo la documentación del formato de entrada/salida fue pobre y solo existía una implementación
Ahora, gracias a groot, uproot, freehep, openscientist y otros, ya se puede leer y escribir datos ROOT sin arrastrar todo ROOT completo. Creo que la interoperabilidad es crucial en los datos. Es indispensable si quieres mantener la esperanza de poder volver a leer esos datos únicos dentro de 20 o 30 años
https://go-hep.org/x/hep/groot
Soy el desarrollador principal de go-hep
Ah, root… cada día agradezco no tener que usar versiones anteriores a la 6
Me trae recuerdos de desvelarme depurando código escrito por físicos brillantes pero sin formación en ciencias de la computación
Ellos usaban ROOT para el modelado y Ruby como interfaz, y desde la perspectiva de ingeniería de software era un monstruo. Aun así, desde el punto de vista estadístico estaba bastante bien
Fue mucho antes de que explotara el ecosistema de Python, y cuando los paquetes de machine learning en R apenas arrancaban
main()de 2000 líneasRoot sí es el núcleo de una cantidad enorme de trabajo en física experimental de partículas, pero también es una pesadilla para estudiantes de posgrado nuevos
Está tan profundamente incrustado en la física de partículas que no parece que vaya a cambiar pronto
El problema suele estar en el código legacy que hay que mantener como parte del servicio experimental
La parte de Root que yo uso es Cling, el intérprete de C++, y Xeus para notebooks Jupyter
Una noche comparé el n-body más rápido de benchmarkgames entre Xeus y Python 3. En la misma instancia de Binder, Xeus tardó 15.58 segundos, y el código Python más rápido ejecutado en un kernel de Python3 tardó 5 minutos. La salida fue exactamente la misma en ambos casos
Aunque a este programa le atribuyeras un overhead de ejecución dinámica en C++ de alrededor de 300%, Cling sigue siendo muy rápido. No usé SIMD ni vectorización, solo el código de benchmarkgames. Uso Cling principalmente como un reemplazo rápido de JIT para lenguajes que se compilan principalmente a C++
Es un intento de llevar C++ al mundo de Clojure, y Clojure y la programación interactiva al mundo de C++
Código fuente: https://github.com/root-project
“Depurar scripts de CERN ROOT y programas basados en ROOT en Eclipse IDE”
Dios mío, eso me trae pesadillas. Sin duda demuestra que se pueden construir cosas extraordinarias incluso en entornos horribles