- ROOT prend en charge le traitement de gros volumes de données et l’analyse scientifique nécessaires aux recherches de grande ampleur comme la physique des hautes énergies, et plus de 2 exaoctets de données sont actuellement stockés dans des fichiers ROOT
- ROOT a aussi été utilisé pour la découverte du Higgs, ce qui en fait un outil disposant d’un cas d’usage réel et éprouvé pour l’analyse de données expérimentales
- Disponible en open source, il peut être utilisé et modifié librement, et accepte les contributions des utilisateurs via un processus de développement ouvert
- Le interpréteur C++ fourni convient au prototypage rapide, et les liaisons dynamiques Python donnent accès à tous les composants
- La prise en charge des notebooks Jupyter permet aussi d’étendre les analyses en C++ et Python à un environnement de notebook, tandis que les annonces de releases, de formations et de hackathons continuent d’être publiées
Le rôle de ROOT dans l’analyse de données
- ROOT est un outil qui permet le traitement de grands volumes de données et leur analyse scientifique
- Plus de 2 exaoctets de données sont actuellement stockés dans des fichiers ROOT
- Le Higgs a été découvert avec ROOT
Développement open source et contributions
- ROOT est proposé en open source
- Il peut être utilisé librement
- Il peut être compilé depuis les sources et modifié
- Il adopte un processus de développement ouvert qui accepte les contributions des utilisateurs
Utilisation avec C++, Python et les notebooks
- L’interface de développement prend en charge à la fois C++ et Python
- Un interpréteur C++ est fourni, adapté au prototypage rapide
- Les liaisons dynamiques Python permettent d’accéder à tous les composants de ROOT
- Les notebooks Jupyter sont également pris en charge
Articles de blog et annonces de releases
- Parmi les récents billets de blog figurent l’invitation à la mise en ligne sur YouTube du documentaire C++, la bande-annonce du documentaire ROOT et C++, le ROOT Advanced Course 2026 et un article sur le 3rd ROOT Hackathon
- La liste des dernières releases comprend les versions suivantes
- Release 6.40.02 - 11 juin 2026
- Release 6.40.00 - 20 mai 2026
- Release 6.40.00-rc1 - 23 avril 2026
- Release 6.38.06 - 12 juin 2026
- Release 6.38.04 - 12 mars 2026
1 commentaires
Commentaires Hacker News
Ça me rappelle des souvenirs. Quand je travaillais en physique des particules, j’utilisais beaucoup ROOT, et j’avais une relation d’amour-haine avec lui.
D’un côté, il y avait beaucoup de dette technique et une inertie particulière, mais de l’autre, certaines choses étaient nettement plus faciles dans ROOT qu’avec des options plus « modernes » comme matplotlib. Par exemple les histogrammes, les données très structurées où des objets avec des champs sont stockés en « colonnes », ou encore le tracé direct de fonctions sans allouer séparément des tableaux x/y.
J’aimais aussi son API orientée objet assez intuitive. Ça ressemblait davantage à du vieux C++ ou à Java qu’au chaînage de méthodes de pandas/matplotlib, à l’abus de la syntaxe
[]et à toutes sortes de comportements magiques. Ce n’était pas élégant, c’était verbeux, mais en analyse scientifique cela peut au contraire être un avantage.Quand je suis parti il y a environ cinq ans, ROOT était en pleine mutation : l’ancien interpréteur CINT avait été retiré et le projet était passé à une base de code fondée sur clang. Je crois qu’aujourd’hui on peut lancer des analyses dans Jupyter en C++ ou en Python, et j’ai entendu dire que la qualité du code s’était beaucoup améliorée.
Il n’y a pas beaucoup de raisons pour lesquelles une nouvelle analyse devrait utiliser ROOT par défaut. Mieux vaut utiliser une option plus conviviale et plus saine comme uproot.
Il peut y avoir des workflows legacy, ou des expériences qui ont empilé beaucoup de patchs personnalisés sur ROOT, mais pour une analyse de physique en soi, cela peut être une façon de se faire du mal.
J’aime aussi leur page 404. Et ce n’est pas une référence à la room 404.
https://github.com/scikit-hep/uproot5
https://root.cern/404/
foren Python sont trop lentes.Dans ces cas-là, on peut utiliser Numba, quand cela fonctionne bien, ou, pour faire une autopromotion éhontée, Julia : https://github.com/JuliaHEP/UnROOT.jl
Ancienne discussion HN sur l’usage de Julia en physique des particules : https://news.ycombinator.com/item?id=38512793
C’est chouette de voir de grands projets logiciels utilisés pour des découvertes scientifiques.
Autre exemple : LIGO a utilisé GStreamer pour détecter des ondes gravitationnelles : https://lscsoft.docs.ligo.org/gstlal/
En revanche, je ne sais pas si c’est une bonne idée pour des personnes extérieures de l’utiliser réellement. Mon expérience date peut-être un peu, mais c’était assez brut et vieillissant. Son grand avantage au CERN ou dans les travaux de physique des particules, c’est que c’est de facto un standard, ce qui facilite la collaboration interne.
GStreamer, en revanche, est une plateforme à la conception élégante, avec une architecture suffisamment bonne pour être abstraite et réutilisée facilement dans des scénarios totalement différents, que ses créateurs n’avaient probablement jamais imaginés.
On en voit les traces partout. C’est un énorme monolithe, et dès qu’on essaie de faire quelque chose d’un peu non standard, il faut se battre avec lui. Heureusement, je n’ai pas souvent à l’utiliser, mais j’y suis encore exposé dans une certaine mesure.
Personnellement, je trouve que ROOT essaie de faire beaucoup trop de choses, que la conception de son API est mauvaise, et surtout qu’il n’y a pas de séparation entre ROOT en tant que bibliothèque et ROOT en tant que programme.
Il y a beaucoup d’état global, et l’hypothèse sous-jacente est que les gens doivent l’utiliser à la manière du programme ROOT. ROOT 6 a commencé à corriger une partie de cela, mais ça prend du temps, et personnellement je pense qu’en s’appuyant trop profondément sur llvm et clang, il a encore allongé les temps de build et rendu le projet plus difficile à corriger.
Pendant longtemps, la documentation du format d’entrée/sortie était aussi très pauvre, et il n’y avait qu’une seule implémentation.
Aujourd’hui, grâce à groot, uproot, freehep, openscientist, etc., on peut lire et écrire des données ROOT sans embarquer tout ROOT. Pour les données, l’interopérabilité est extrêmement importante à mes yeux. Elle est indispensable si l’on veut avoir l’espoir de relire ces données uniques dans 20 ou 30 ans.
https://go-hep.org/x/hep/groot
Je suis le développeur principal de go-hep.
Ah, root… ça me rend reconnaissant de ne pas avoir à utiliser tous les jours une version antérieure à la 6.
Ça me rappelle les soirées passées à déboguer du code écrit par d’excellents physiciens, mais sans formation en informatique.
Ils utilisaient ROOT pour la modélisation et Ruby pour construire l’interface ; du point de vue du génie logiciel, c’était un monstre. Mais d’un point de vue statistique, c’était plutôt correct.
C’était bien avant l’essor de l’écosystème Python, et les packages de machine learning en R en étaient tout juste à leurs débuts.
main()de 2 000 lignes.Root est bien l’épine dorsale d’une quantité énorme de travaux en physique expérimentale des particules, mais c’est aussi un cauchemar pour les nouveaux doctorants.
Il est tellement profondément ancré dans la physique des particules qu’il ne semble pas près de changer à court terme.
Le problème se trouve généralement dans le code legacy qu’il faut maintenir dans le cadre des services expérimentaux.
La partie de Root que j’utilise, c’est Cling, l’interpréteur C++, et Xeus pour les notebooks Jupyter.
Un soir, j’ai comparé le n-body le plus rapide de benchmarkgames entre Xeus et Python 3. Sur la même instance Binder, Xeus a pris 15,58 secondes, tandis que l’exécution du code Python le plus rapide avec le noyau Python3 a pris 5 minutes. La sortie était exactement la même dans les deux exécutions.
Même en estimant l’overhead de l’exécution dynamique de C++ à environ 300 % dans ce programme, Cling reste très rapide. Je n’ai pas utilisé de SIMD ni de vectorisation, seulement le code de benchmarkgames. J’utilise surtout Cling comme alternative JIT rapide pour les langages qui se compilent principalement en C++.
C’est une tentative d’amener C++ dans le monde Clojure, et Clojure ainsi que la programmation interactive dans le monde C++.
Code source : https://github.com/root-project
« Débogage de scripts CERN ROOT et de programmes basés sur ROOT dans Eclipse IDE »
Mon Dieu, ça me rappelle des cauchemars. Cela montre clairement qu’on peut créer des choses extraordinaires même dans des environnements atroces.