Sortie de ROOT 6.00/00

Posté par . Édité par pamputt, BAud, tankey, Nÿco, kp, Benoît Sibaud et palm123. Modéré par tuiu pol. Licence CC by-sa
Tags :
25
10
juil.
2014
Science

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.

ROOT

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.

boson BEH

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
palette
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.

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 :
ancien logo ROOT
a été remplacé par celui-ci :
nouveau logo ROOT

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,
  • # cling

    Posté par . Évalué à 3.

    On peut avoir cling facilement sans root

  • # Une petite préférence pour l'ancien logo

    Posté par . Évalué à 5.

    L'ancien logo avait plus de charme …

  • # Keep ROOT out-of-your life

    Posté par . É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 :

    • Les entrée sortie sur de gros fichiers sont efficace et c'est pas simple de faire mieux (avec ce que le physicien moyen a sous la main)
    • ROOT est complet, on est à peu près sur qu'il y a un TDoSomething dans ROOT ce qui évite de perdre du temps à chercher une librairie qui le fait
    • La documentation de ROOT est en générale correcte, si on sait chercher on y trouve quelque-chose

    Par contre ROOT a pleins de défauts

    • ROOT ignore l'existence du C++ moderne (Certe c'est un peu la faute de CINT), c'est à peine si on y trouve des template, des passage par référence, ou des fonctions de la librairie standard (je parle même pas de RAII). C'est dommage vu le nombre de gens qui apprennent le C++ avec ROOT et qui se retrouve prisonnier de mauvaises pratiques
    • 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 . É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

      ROOT ignore l'existence du C++ moderne (Certe c'est un peu la faute de CINT), c'est à peine si on y trouve des template, des passage par référence, ou des fonctions de la librairie standard (je parle même pas de RAII). C'est dommage vu le nombre de gens qui apprennent le C++ avec ROOT et qui se retrouve prisonnier de mauvaises pratiques

      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)

      Les plots par défauts sont moches, il y a eu beaucoup de travail ces derniers temps

      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)
      palette
      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.

      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
      Je ne connais pas assez le sujet mais c'est vrai que c'est un sujet qui revient régulièrement sur le forum ROOT. Peut-être que les choses vont s'améliorer vu que le nouvel interpréteur repart sur du nouveau code.

      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 . Évalué à 2.

        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.

        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 . Évalué à 4. Dernière modification le 11/07/14 à 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 . É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 à ceux qui les ont postés. Nous n'en sommes pas responsables.