L'équipe ROOT a annoncé la sortie de la version 6.0 le 29 mai dernier. ROOT est un framework d'analyse de données très utilisé dans le domaine de la physique des particules et de la physique nucléaire. Les versions 6.00/01 et 6.00/02 sorties respectivement le 18 juin et le 3 juillet apportent des corrections à cette version 6.0.
Exemples d'utilisation
ROOT fournit un ensemble de bibliothèques facilitant l'analyse de données. Il permet la création de figures comme celles qui ont été présentées lors de l'annonce de la découverte du boson BEH, le boson de Higgs.
ROOT est également utilisé pour simuler des détecteurs, mais aussi créer des systèmes de visualisation des données en ligne…
Nouveautés
Nouvel interpréteur
La principale nouveauté de ROOT 6, qui justifie le changement de version majeure, est le remplacement de l'ancien interpréteur de C/C++ CINT (300k lignes de code) par un nouvel interpréteur appelé Cling (5k lignes de code). La rétro-compatibilité avec CINT est assurée. Cling est basé sur la technologie LLVM JIT/Clang (et sera à terme basé sur LLVM MCJIT/Clang). Les développeurs justifient ce choix par le fait que CINT était vieux :
- Il a été conçu il y a une vingtaine d'années pour prendre en charge le C. La prise en charge du C++ a été ajoutée par la suite avec néanmoins beaucoup de restrictions.
- Le deuxième argument concerne sa maintenance. Le développeur originel n'est plus au CERN et la taille relativement importante du code (300 000 lignes) a décidé les développeurs à franchir le pas.
Compilation
Historiquement, ROOT se compilait avec le système « ./configure;make; ». Il est toujours possible d'utiliser ce moyen pour compiler ROOT 6.00. Cela dit, une compilation à l'aide du système « cmake » est maintenant également possible. Les informations sont disponibles ici.
Architectures prises en charge et compilateur requis
Du fait du passage à Cling et Clang/LLVM, le nombre d'architectures prises en charge a drastiquement diminué. ROOT 6.00 n'est disponible que sous Linux i32, x86-64 et x32 et OSX x86-64. À noter l'absence de Windows, mais ce dernier devrait être rapidement pris en charge dans les futures versions.
Au niveau compilateur, il est nécessaire de disposer au minimum de gcc 4.8 ou de Clang 3.4.
Nouvelles palettes de couleur et transparence
Cette version voit l'apparition de 5 nouvelles palettes de couleurs prédéfinies
Par ailleurs, une option « alpha » a été ajoutée afin de préciser le niveau de transparence d'un objet (TAttText, TAttMarket, TAttLine…) que l'on désire.
Changement de logo
Le passage à cette version 6 est aussi l'occasion de voir l'apparition d'un nouveau logo.
L'ancien logo qui datait d'octobre 1999 :
a été remplacé par celui-ci :
Autres nouveautés
D'autres changements importants ont également eu lieu :
- une nouvelle bibliothèque réseau a été ajoutée,
- une nouvelle classe TTreeReader a été ajoutée permettant un accès plus simple, plus sûr et plus rapide au contenu des TTree,
- diverses améliorations dans PROOF, l'extension qui permet de paralléliser le traitement d'une analyse,
- prise en charge des boîtes à moustaches,
- le binding Python est entièrement pris en charge par ROOT 6. Ce n'est pas encore le cas du binding Ruby,
- …
Aller plus loin
- ROOT Version 6.00/00 (278 clics)
- Annonce du passage de ROOT en LGPL (95 clics)
# cling
Posté par akimatsumoto . Évalué à 3.
On peut avoir cling facilement sans root
# Une petite préférence pour l'ancien logo
Posté par denaitre . Évalué à 5.
L'ancien logo avait plus de charme …
[^] # Re: Une petite préférence pour l'ancien logo
Posté par akimatsumoto . Évalué à 10.
Plus que le logo j aurai préféré un changement de nom. Chercher des info sur google renvoit plus souvent sur le compte root de linux que sur le root du cern
# Keep ROOT out-of-your life
Posté par Mais qui suis-je ? :) . Évalué à 7.
10 ans de ROOT, et si j'ai un conseil à donner aux jeunes, c'est de ne pas l'utiliser. (Même si la nouvelle équipe qui a repris le projet à l'air dynamique et qu'on voit enfin des avancées)
ROOT à quelques atouts :
Par contre ROOT a pleins de défauts
Les plots par défauts sont moches, il y a eu beaucoup de travail ces derniers temps, mais devoir commencer un programme par une fonction genre :
```
void set_plot_style_color() {
const Int_t NRGBs = 5;
const Int_t NCont = 255;
Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
Double_t red[NRGBs] = { 0.00, 0.00, 0.87, 1.00, 0.51 };
Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
Double_t blue[NRGBs] = { 0.51, 1.00, 0.12, 0.00, 0.00 };
TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
gStyle->SetNumberContours(NCont);
}```
Pour avoir des plots qui ressemblent à quelque chose, ca motive pas (On notera au passage que j'interviens sur des variables globales, voir ce que je disais sur le C++ moderne)
- ROOT + Valgrind = Feu d'artifice, Il suffit d'inclure un header de ROOT à un projet pour voir valgrind envoyer un nombre impressionnant de messages et rendre toute recherche de fuite de mémoire ou autre problème impossible (Pas de surprises, dans les exemples on peut trouver ce genre de ligne, ou l'on passe un new en argument
AddFrame(fEcan, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX | kLHintsExpandY,0,0,1,1));
Bref pour moi les défauts du projets dépasse les avantages, et même si j'avoue que la V6 fait envie (plus que les nouvelles fonctionalités c'est surtout la nouvelle dynamique qui me fait dire qu'il se peut que le projet évolue dans le bon sens) , je vais passer mon tour, python + scipy répond à pas mal de mes besoins (Et puis j'ai quitté le monde de la physique à haute énergie)
[^] # Re: Keep ROOT out-of-your life
Posté par pamputt . Évalué à 3.
Je n'ai pas d'actions dans ROOT mais je vais tenter une défense sur les points qui te posent problème
C'est exactement la raison d'être de cling. La totalité de la norme c++11 devrait être prise en charge à terme (je ne connais pas assez le c++ pour savoir si ce n'est pas encore le cas)
Ce que tu dis était vrai il y a encore 3-4 ans (palette de couleur vraiment moche, fond du canevas en gris très moche, …) mais les choses se sont considérablement améliorées depuis. Maintenant, on est passé du truc à gauche à la palette de droite (on met de côté le binning)
Alors certes, ça ne donnera pas quelque chose d'aussi beau et lisse que ce que tu proposes mais ça va dans le bon sens. Les nouvelles palettes qui font leur apparition dans cette version me semblent convenables.
Quoi qu'il en soit, je te rejoins. La nouvelle équipe apparait comme très dynamique et c'est une très bonne nouvelle. Le logiciel s'améliore rapidement et tous les points positifs que tu as donné au début font que j'arrive à la conclusion inverse. Cet outil nécessite un temps de prise en main relativement long mais une fois fait, il présente des avantages indéniables.
[^] # Re: Keep ROOT out-of-your life
Posté par Mais qui suis-je ? :) . Évalué à 2.
Le problème de ROOT, c'est que le projet se retrouve le cul entre deux chaises,
Des utilisateurs souvent jeune, et avec un fort turn-over qui veulent du CPP moderne, du python et pour qui la compatiblité avec les notations à la fortran ( 3**2 ) n'a aucun intérêt
Des projets qui durent longtemps et qui ne veulent pas trop de changements (
On voit donc pas mal de gens se détourner de ROOT ou content d'en être débarrasser.
Soit ROOT arrive à évoluer vraiment, quitte à perdre en rétro-compatibilité (de toute façon chaque changement de version majeure de gcc entraîne des problèmes de rétro-compatiblité). et à se débarrasser des défauts que j'ai cité auquel cas, le projet repart sur de bonne base, et on pourrait le voir percer hors de la communauté HEP.
Soit ça ne suffit pas, et les nouvelles expériences vont s'orienter vers d'autres solutions (Par exemple des entrées/sorties en hdf5, et une analyse avec scipy)
Bref j'attend de voir, j'exclus pas de refaire un peu de ROOT dans le futur. Mais le coté usine à gaz fait que je m'en passe. même si j'ai pas trouvé de framework équivalent en C++
[^] # Re: Keep ROOT out-of-your life
Posté par JGO . Évalué à 4. Dernière modification le 11 juillet 2014 à 19:56.
Je ne connaissais pas et j'ai une question générale, que je profite pour poser puisque vous avez l'air de bien connaitre : pourquoi Root a-t-il besoin de son propre interpréteur C++ (que ce soit l'ancien ou le nouveau basé sur clang) ? De quoi ROOT a-t-il besoin qui fait qu'il ne peut pas être écrit comme une bibliothèque qui s'appelle depuis un langage quelconque (comme VTK) ?
[^] # Re: Keep ROOT out-of-your life
Posté par akimatsumoto . Évalué à 2.
Root peut tres bien s'appeler de maniere standard, à la manière de vtk, GSL, ou autre. C'est juste que le projet Root possède en plus un interpreteur C++. Mais rien n'oblige à l'utiliser.
Pour ma part, je n'utilise que très peu l'interpreteur, je prefere l'inclure puis le complier (couplé à GEANT4, l'autre usine à gaz du CERN)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.