Pour un bon fonctionnement, les systèmes d’acquisition de données évitent de travailler en aveugle. Ils possèdent des outils de mesures des flux et de la qualité des données acquises. Au Ganil, pour répondre à ce besoin, nous avons GRU (Ganil ROOT Utilities ) et Vigru (Visualisation GRU) . Ces outils sont largement basés sur les librairies ROOT développées au CERN, ROOT (root.cern.ch) étant « un environnement orienté objet ayant pour objectif de résoudre le défi de l’analyse de données issues de la physique des hautes énergies. ». L’ensemble a été programmé en C++.
Bien que GRU permette aussi d’analyser les données Ganil, nous ne développerons pas ce chapitre qui est très lié au format de données Ganil. Par contre, nous exposerons dans ce document la partie serveur de spectres et le client de visualisation associé qui peuvent être facilement utilisés dans d’autres applications. Le mot « spectre » est un terme générique désignant des histogrammes ou des graphes de 1 à 3 dimensions.
Principe
Pour minimiser l’influence de la visualisation en terme de performance, de ressource et de stabilité sur le processus traitant les données et donc générant les spectres, la visualisation est un application cliente distincte et celle-ci ne reçoit des copies de spectres que sur requêtes réseaux.
Le Serveur
Le serveur de spectre se présente comme une librairie que l’on ajoute à une application quelconque génératrice de spectres. Ce serveur contient une petite base de données de spectres. Celle-ci facilite les recherches et le classement par nom, famille ou caractéristique des spectres. L’application désirant rendre ses spectres visibles n’a qu’à déclarer ses spectres dans la base de données afin qu’ils soient immédiatement disponibles sur le réseau. Les spectres peuvent être de deux formats, en fonction du type de serveur choisi. Ils sont soit de type ROOT (TH, Tgraph... pour les connaisseurs de ROOT) soit ce sont de simples vecteurs d’entier. Dans le premier cas nous choisirons le serveur basé sur les classes ROOT. Dans le second cas, principalement utilisé en solution embarqué, un serveur SOAP préférable car beaucoup plus léger.
Le Client Vigru
Le client Vigru est donc une application à part entière. Son utilisation est simplifiée au maximum par l’utilisation d’une interface graphique. Il permet de se connecter à un ou plusieurs serveurs de type ROOT ou/et SOAP. Lors de la première connexion au serveur, Vigru charge les différentes listes ordonnées des spectres. L’utilisateur choisit ensuite les spectres à afficher. Le rafraîchissement des spectres se fait à la demande ou périodiquement. Vigru propose l’affichage multiple sur une ou plusieurs pages accessibles par onglets.
Toute la mise en page est configurable et enregistrable. Une fois l’affichage réalisé, il est possible d’appliquer bon nombre de traitements spécifiquement développés ou disponibles dans les librairie ROOT que nous avons mis en avant via des boutons sur l’interface graphique (Log X,Y,Z, Zoom, Fit, Statistique, détection de pics multiples, FFT...). Vigru peut également soumettre des commandes aux serveurs comme la remise à zéro d’histogrammes. Lorsque le nombre de spectres est important (plusieurs milliers) le classement des spectres par famille (ou dossier) facilite le classement et donc l’accès à un spectre particulier.
Conclusion
Ce couple serveur de spectre/visualisation est actuellement utilisé dans 3 applications :
évidement dans GRU dont il est issu.
Narval au Ganil et au LNL pour l’affichage des spectres d’acquisition de physique nucléaire
dans le développement de la carte de numérisation NUMEXO2 où ce couple client/serveur SOAP fait office d’oscilloscope.
Les sources et les informations complémentaires à propos GRU et Vigru sont disponibles sur ce site.
Luc Legeard