n°2
Septembre
2008
TSkim : un outil pour découper les arbres ROOT

Comme de multiples expériences de physique, le Fermi Large Area Telescope (Fermi-LAT, anciennement GLAST-LAT) stocke ses données sous forme d’arbres ROOT. Une activité récurrente des physiciens consiste à établir des critères pour définir quels événements sont intéressants, et à effectuer des coupes sur les arbres ROOT afin d’extraire les données attachées à ces événements particuliers. TSkim a été développé pour les y aider. Initialement un simple couple de scripts PERL et ROOT, l’outil est à présent devenu suffisamment élaboré pour prétendre servir à d’autres expériences que FERMI.

Pour un même événement physique, l’utilisateur peut souhaiter récupérer des données issues de plusieurs sources, correspondant à des représentations ou des stades différents dudit événement : simulation de la collision initiale de particules, simulation de la réponse du détecteur, vraies mesures du détecteur, reconstruction de base, calcul d’un jeu de grandeurs physiques caractéristiques permettant de classifier l’événement, etc. Un arbre contient les données de toute une séquence d’événements, mais pour seulement l’un des types d’information précédents. Les arbres utilisés pour un type d’information donné ont tous la même structure, mais cette structure diffère d’un type à l’autre. En effet, elles ont été définies par des équipes différentes, à des périodes différentes, avec plus ou moins de concertation, et pour répondre à des contraintes techniques différentes. Au bout du compte, d’un type à l’autre, les noms de fichier ne respectent pas les mêmes règles, les arbres n’ont pas les mêmes noms ni les mêmes branches, et les morceaux d’un même événement ne sont pas forcément placés au même rang dans les différents arbres.

Un utilisateur ordinaire de ROOT peut écrire sans trop de difficultés un script capable de traiter une séquence d’arbres d’un type donné (par exemple les mesures réelles). Par contre, la tâche devient plus ardue lorsqu’il faut le faire simultanément pour plusieurs types d’arbres (par exemple les mesures réelles et la reconstruction de base), ce qui constitue la très grande majorité des cas d’utilisation. Si on ajoute que la manipulation des arbres et des indexes de ROOT demande un certain savoir-faire, on comprendra qu’il était naturel de développer un outil pour faciliter cette activité.

Gestion de l’hétérogénéité des données

L’objectif premier de TSkim est de gérer l’hétérogénéité des données. Pour ce faire, il s’appuie sur un fichier de description des types de données, personnalisable, qui définit pour chaque type, entre autres : le nom de l’arbre à rechercher dans les fichiers, le nom de la branche qui contient les numéros d’événements, le nom de la bibliothèque de définition de données C++ qu’il faut charger en mémoire (inutile pour les arbres plats, ou "tuples", mais souvent indispensable pour les structures plus complexes). Avant de lancer une exécution de TSkim, l’utilisateur doit fournir la liste des fichiers à traiter, et des critères de coupe définis pour l’un des types de fichiers. TSkim procède alors en deux étapes. Dans un premier temps , il enregistre dans une liste les numéros des événements intéressants, pour un type d’arbre donné et selon les critères établis par l’utilisateur. Dans un second temps, il utilise cette liste pour retrouver dans tous les fichiers les données associées à ces même numéros, les lire et les recopier dans de nouveaux fichiers de sortie. Depuis peu, TSkim peut aussi, au lieu de recopier les données, écrire un fichier spécial qui se contente de lister les éléments sélectionnés (technique inspirée des KanEvents de BaBar). Ce dernier fichier pourra être réinjecté dans TSkim comme entrée pour une nouvelle découpe. On peut procéder ainsi à des coupes cumulatives, sans jamais copier la moindre donnée, ce qui peut épargner à l’utilisateur du temps et surtout de la place disque.

En ce qui concerne le savoir-faire nécessaire à la manipulation des arbres ROOT, il s’agit à la fois de profiter des optimisations fournies par ROOT lorsque le cas d’utilisation le permet, par exemple la fusion rapide de données, mais aussi de détecter et d’interdire des pratiques connues comme néfastes, par exemple l’utilisation d’indices d’événements trop grands pour être compatibles avec l’implémentation actuelle des TTreeIndex de ROOT. A propos de l’implémentation de TSkim lui-même, un grand virage a été pris lorsque nous avons décidé de transformer tous les scripts ROOT en programmes C++ compilés, suite à plusieurs déconvenues avec l’interpréteur C++ de ROOT. Cela se paie à l’installation, car il faut recompiler l’outil pour toutes les versions de ROOT qui peuvent être nécessaires aux utilisateurs, mais cela nous évite les problèmes trop fréquents liés à l’interpréteur.

N’ayant été intensivement utilisé que dans le contexte d’une seule expérience, TSkim a besoin aujourd’hui de trouver un nouveau public afin de comprendre et de corriger ce qui reste trop spécifique à la problématique du Fermi-LAT. Cependant, nous ne doutons pas du potentiel de l’outil et de l’intérêt qu’il présente dès à présent pour beaucoup d’utilisateurs de ROOT. C’est l’exemple typique d’un développement très spécifique à notre discipline, réalisé dans un coin pour une seule collaboration (et qui ne générera jamais le moindre revenu), mais qui peut assez facilement profiter à une communauté d’utilisateurs plus large, d’autant plus vite que nous réussirons à mobiliser d’autres développeurs et à en faire un produit collectif de notre institut. Il ne s’agit pas seulement de rendre notre outil plus flexible pour répondre aux besoins de telle ou telle expérience. Il y a également de nouvelles idées à explorer : la gestion automatique de l’évolution dans le temps des structures de données, la reconnaissance des événements en utilisant des "timestamps" plutôt que des numéros, la connexion avec les catalogues de données des expériences, etc.

Utilisateurs de ROOT ou développeurs, nous vous donnons rendez-vous aux Journées Informatique et sur le nouveau site web de TSkim. A l’heure où nous écrivons ces lignes, ce nouveau site est en construction, mais il devrait s’enrichir très rapidement dans les prochains jours.

David Chamont (LLR)