Vous êtes sur la page 1sur 64

Institut Suprieur dInformatique, Modlisation et de leurs Applications.

Complexe des Cezeaux BP125 63173 Aubire CEDEX

de

CERN European Organisation for Nuclear Research CH-1211 GENEVE 23 Suisse

Rapport de stage de 2me anne Filire Calcul et Modlisation Scientifiques

Visualisation de la base de donnes de configuration de lexprience LHCb

Prsent par : Walid Belballi Responsable CERN : Mr Eric Van Herwijnen Responsable ISIMA : Mr Emmanuel Mesnard

Du 2 avril 2007 au 31 aout 2007

ISIMA

2007

Remerciements
Je tiens tout dabord remercier mon encadrant au CERN, Eric van Herwijnen, pour mavoir aid tout au long de ces cinq mois, pour ses remarques pertinentes qui mont permit damliorer mon travail et aussi pour sa gentillesse. Je remercie aussi Niko Neufeld et Sai Suman Cherukuwda pour avoir rpondu beaucoup de mes questions. Je tiens aussi remercier Emmanuel MESNARD pour tre venu me rendre visite dans les locaux du CERN, Radu Stoica pour son aide concernant la bibliothque Qt. Je remercie enfin Lana Abadie pour avoir rpondu toutes mes questions concernant la base de donnes de configuration, mon collgue Stefan Koestner pour sa gentillesse et tous les membres de lquipe Online pour leur accueil.

ISIMA

2007

Rsum
LOrganisation europenne pour la Recherche Nuclaire (CERN) situ prs de Genve sur la frontire franco-suisse accueillera, en Mai 2008, le plus grand collisionneur de particules jamais construit : le LHC (Large Hardon Collider). Le LHC est lun des instruments scientifiques les plus grands et les plus complexes. Configurer les diffrents modules de lexprience est une opration trs sensible et fastidieuse vue le nombre de composants et de technologies mis en jeux. Do lutilit des bases de donnes de configuration qui permettent dorganiser toutes les informations ncessaires la bonne configuration du systme. La contribution de mon stage est lamlioration dun diteur de la base de donnes de configuration du LHCb qui est une des quatre expriences menes au CERN. Lditeur est appel CDBVis et permet de visualiser la topologie des diffrents sous dtecteurs constituant le systme. Mon travail a consist porter lapplication qui utilise la bibliothque graphique wxWidget associe au langage Python vers la bibliothque Qt qui est plus facile utiliser. Le portage de lapplication sest bien droul et plusieurs autres amliorations ont taient apportes lapplication. Mots clefs : CERN, LHCb, base de donnes de configuration, interface graphique, Python, wxWidget, Qt

ISIMA

2007

Abstract
The worlds largest proton collider, LHC (Large Hardon Collider), is currently build in the European Organization for Nuclear Research (CERN) located on the French-Swiss border. The LHC is scheduled to begin operation in May 2008 and will be one of the most complex scientific instruments ever built. Configuring all the modules of the experiment is a complex task because of the huge network of devices and the big number on technologies involved. Thats why configuration databases are used to store and organise the informations needed to well configure the system. My contribution was to improve an editor of the configuration database of the LHCb wich is one the four experiments taking place at CERN. This editor is called CDBVis and my work consist on porting the software written in Python to use the Qt library instead of the wxWidget one. I also made many enhancements to this software. Key words : CERN, LHCb, configuration database, Graphical User Interface, Python, wxWidget, Qt

ISIMA 2007

CERN

Glossaire
CDBVis : Configuration Database Visualizer ; le nom de lapplication permettant de visualiser la connectivit de la base de donnes de configuration. CIC DB : Configuration Inventory Connectivity DataBase ; base de donnes de configuration contenant aussi des informations sur la connectivit du systme. CIC DB Lib : Configuration Database Library ; bibliothque crite en C constituant une interface pour la base de donnes de configuration GUI : Graphical User Interface, se dit dune application graphique qui ne tourne pas quen mode console. SQL : Structured Query Language, un langage informatique permettant de communiquer avec les bases de donnes. Widget : un composant dune interface graphique Antiparticule : A chaque type de particule correspond une antiparticule. Lorsquune particule entre en collision avec son antiparticule, elles sannihilent, ne laissant que de lnergie Hadron : Particule non lmentaire contenant des quarks et des antiquarks Meson : Particule non lmentaire de la famille des hadrons. Quark : particule lmentaire charge qui est sensible linteraction forte. Elle existe en 6 sorte diffrentes notes u,d,s,c,b et t.

-1-

ISIMA 2007

CERN

Table des matires


REMERCIEMENTS RESUME ABSTRACT GLOSSAIRE TABLE DES MATIERES TABLE DES FIGURES INTRODUCTION ...................................................................................................................................... 6 PRESENTATION GENERALE ................................................................................................................ 7 1) 2) a) b) c) d) PRESENTATION DU CERN ............................................................................................................. 7 LEXPERIENCE LHCB ..................................................................................................................... 8 LHCb : Le dtecteur ................................................................................................................... 8 Systme Online .................................................................................................................... 9 Configuration de lexprience LHCb.......................................................................................... 9 Outils de configuration :.......................................................................................................... 10
PVSS : .............................................................................................................................................................10 CDBVis : ........................................................................................................................................................11

ANALYSE DU PROBLEME.................................................................................................................... 13 1) 2) 3) a) b) c) 4) a) b) c) d) 5) a) b) c) ETUDE DES BESOINS ...................................................................................................................... 13 COUCHE TRAITEMENT DE DONNEES ............................................................................................ 13 SCHEMA DE LA BASE DE DONNEES ............................................................................................... 13 Inventaire des composants ....................................................................................................... 13 Connectivit ............................................................................................................................. 15 Schma de la base de donnes................................................................................................... 15 COUCHE PRESENTATION DES DONNEES....................................................................................... 16 Prsentation des composants dans CDBVis............................................................................. 17 Exemple : systme MUON ...................................................................................................... 17 Python...................................................................................................................................... 20 WxPython ................................................................................................................................ 21 MIGRATION VERS QT ................................................................................................................... 22 Gestion des vnements ........................................................................................................... 23 Loutil Qt Designer.................................................................................................................. 23 Gnration de code : Le Compilateur dInterfaces Utilisateur (uic)........................................ 25

REALISATION DE LA SOLUTION ..................................................................................................... 26 1) 2) 3) DEFINITION DE LENVIRONNEMENT DE TRAVAIL ........................................................................ 26 ARCHITECTURE DE LAPPLICATION CDBVIS : UML, DIFFERENTES CLASSES ............................. 27 DEMARCHE SUIVIE POUR LE PORTAGE DE LAPPLICATION.......................................................... 28 a) Identification les classes modifier .......................................................................................... 29 b) Utilisation dinterfaces............................................................................................................. 29 c) Partie visuelle : Canevas .......................................................................................................... 30
Gestion des collisions:..................................................................................................................................32 Matrices de transformations: ......................................................................................................................33

d)

Sparer le contenu de la prsentation....................................................................................... 33

-2-

ISIMA 2007
4) 5)

CERN

AFFICHAGE DES GRANDS COMPOSANTS ...................................................................................... 34 MISE A DISPOSITION DES UTILISATEURS ....................................................................................... 36

RESULTATS ET DISCUSSIONS .......................................................................................................... 38 1) PRESENTATION GENERALE DE CDBVIS ....................................................................................... 38 Vue Principale.......................................................................................................................... 38 Zone de slection ...................................................................................................................... 39 Zone dinformation .................................................................................................................. 41 Barre dtat............................................................................................................................... 41 2) MODE DE NAVIGATION ............................................................................................................... 42 a) Visualisation des voisins .......................................................................................................... 42 b) Visualisation des chemins ........................................................................................................ 43 3) MODE DE CREATION .................................................................................................................... 45 a) Cration et modification des composants ................................................................................. 45 a) b) c) d)
Cration dun nouveau Type de composant ............................................................................................45 Cration de composant(s) ...........................................................................................................................46 Modification de composant ........................................................................................................................47

b) c) d) e)

Cration de ports...................................................................................................................... 47 Cration de connexions ............................................................................................................ 48 Exportation des donnes dans un fichier ................................................................................. 50 Cration partir dun fichier ................................................................................................... 50

CONCLUSION.......................................................................................................................................... 52 REFERENCES BIBLIOGRAPHIQUES ................................................................................................. 53 ANNEXE I .................................................................................................................................................... I ANNEXE II..................................................................................................................................................V ANNEXE III ................................................................................................................................................V ANNEXE III .............................................................................................................................................. VI

-3-

ISIMA 2007

CERN

Table des figures


Figure 1 Deux vue diffrentes du LHC......................................................................7 Figure 2 - Vue d'ensemble du dtecteur LHCb............................................................8 Figure 3 - Vue gnrale du systme Online montrant le positionnement de la CIC DB parmi les autres composants du systme. ..........................................................10 Figure 4 - Exemple d'une interface graphique PVSS montrant le commutateur TFC. .........................................................................................................................................11 Figure 5- Exemple d'une interface graphique montrant un switch du DAQ........12 Figure 6 - Transitions possibles entre tats dun composant ...................................15 Figure 7 - relation entre ltat de la partie hardware et la partie fonctionnelle dun composant ..............................................................................................................................15 Figure 8 - Schma de la base de donnes de configuration .....................................16 Figure 9 - Reprsentation dun composant dans CDBVis .......................................17 Figure 10 - topologie du systme MUON...................................................................18 Figure 11 - Chemin reliant la carte frontale (Front End Board) la HVBRD_CAEN (High Voltage Board) ..............................................................................19 Figure 12 - chemin reliant la carte frontale aux diffrents composants du MUON Chamber .................................................................................................................................20 Figure 13 - Logo de Python...........................................................................................21 Figure 14 - Logo de wxPython .....................................................................................21 Figure 15 - Diffrence entre lapparence de la mme application sur deux OS diffrents (Windows XP et GNOME).................................................................................21 Figure 16 - Logo de la librairie Qt ................................................................................22 Figure 17 - Mcanisme de signaux/slots dans Qt ......................................................23 Figure 18 Vue densemble de loutil Qt Designer...................................................24 Figure 19 - Cration de connexion signaux/slots dans Qt Designer .......................25 Figure 20 - processus de dveloppement en utilisant les outils de Qt ...................25 Figure 21 Lenvironnement de lapplication CDBVis ............................................26 Figure 22 - Diagramme UML de la lapplication CDBVis........................................28 Figure 23 - Utilisation des interfaces de communication .........................................29 Figure 24 - Exemple dune zone de dfilement .........................................................31 Figure 25 - Exemple dune application utilisant le Canvas module de Qt ............32 Figure 26 - Sparation entre la partie graphique du code et la partie non graphique ...............................................................................................................................33 Figure 27 - Interface utilisant des Layouts..................................................................34 Figure 28 - Interface ralis sans Layouts ...................................................................34 Figure 29 - Reprsentation du routeur du DAQ avec toutes ses connexions........35 Figure 30 - visualisation des grands composants (ici le DAQ_ROUTER_1) .........36 Figure 31 - Vue densemble de lapplication CDBVis...............................................39 -4-

ISIMA 2007

CERN

Figure 32 - Deux vues de la zone de selection montrant les deux premiers niveaux de larbre .................................................................................................................40 Figure 33 - Les trois derniers niveaux (types de composants, composants, ports) de larbre contenant tous les composants..........................................................................40 Figure 34 - Deux vues de la zone dinformation ; dans la premire vue un composant est slectionn et dans la deuxime il sagit dune connexion. ..................41 Figure 35 - Barre de status de lapplication ................................................................42 Figure 36 - Visualisation des voisins du VELO_HYBRID_R_0 ...............................42 Figure 37 - Visualisation des voisins du VELO_SHORT_KAPTON_0 ..................43 Figure 38 - Bouton permettant de passer au mode de visualisation de chemins .43 Figure 39 - Visualisation des chemins passant par la carte VELO_TELL1_0 ........44 Figure 40 - Formulaire de cration dun nouveau type de composant ..................45 Figure 41 - Formulaire de creation de composant(s) ................................................46 Figure 42 - Menu contextuel suite un clique droit sur le VELO_REPEATER_0 47 Figure 43 - Formulaire de cration de ports ..............................................................48 Figure 44 - Formulaire de cration de connexion ......................................................49

-5-

ISIMA 2007

CERN

Introduction
Pour explorer linfiniment petit, il faut voir trs trs grand comme en tmoigne le LHC (Large Hadron Collider), cet immense collisionneur de 27 kilomtres de circonfrence rig de part et dautre de la frontire franco-suisse par le Conseil Europen pour la Recherche Nuclaire (CERN). 4 milliards deuros et la collaboration de quelques 6500 scientifiques et techniciens ont t ncessaires pour venir bout de se dfit technologique qui prendra fonction en Mai 2008. Le LHC aura pour mission, travers ses quatre dtecteurs, de voir la physique des particules sous une nouvelle lumire en permettant aux physiciens de faire des expriences des nergies encore jamais atteintes. Les dtecteurs du LHC sont dune trs grande complexit, il est donc ncessaire de sauvegarder et dorganiser toutes les informations relatives leur installation et leur configuration. Cest ainsi que des bases de donnes de configuration ont t cres pour rendre disponible cette norme quantit dinformation. Mon travail a port sur un outil de visualisation de la base de donnes de configuration du LHCb (Large Hardon Collider beauty), lun des quatre dtecteurs du LHC qui tudiera les collisions mettant en jeux un quark b dit beaut ou son antiquark. Loutil de visualisation consiste en une application graphique qui permet de visualiser la liste de tous les composants de lexprience ainsi que leur connectivit ce qui permettra de mieux apprhender la topologie du systme afin de pouvoir localiser les ventuels disfonctionnements et leurs origines. Cette application porte le nom de CDBVis (Configuration DataBase Visualizer) et mon travail a principalement consist la porter vers une nouvelle bibliothque graphique offrant plus de possibilits tout en amliorant les fonctionnalits dj prsentes dans lapplication.

-6-

ISIMA 2007

CERN

Prsentation gnrale
1) Prsentation du CERN
Le 24 septembre 1954 Genvre, douze Etats ratifient la convention de lOrganisation Europenne pour la Recherche Nuclaire. Ils signent lacte de naissance juridique de ce qui deviendra le plus grand laboratoire de physique des particules au monde. Aujourdhui, le Conseil Europen pour la Recherche Nuclaire compte une vingtaine de pays participants et abrite des centaines de physiciens et dingnieurs europens en plus du grand nombre de scientifiques internationaux qui y mnent leurs recherches. Il contiendra aussi dici 2008 le plus grand acclrateur de particules au monde qui permettra de recrer les conditions de tempratures qui prvalaient dans lUnivers ses tout premiers instants aprs le Big Bang.

Figure 1 Deux vue diffrentes du LHC Install une centaine de mtres sous terre, le nouveau collisionneur de 27 kilomtres de circonfrence aura pour objectif dacclrer et de faire collisionner deux faisceaux de protons une vitesse proche de celle de la lumire. Les collisions auront lieu en quatre points de lanneau o se trouvent les quatre dtecteurs du LHC (ATLAS, ALICE, CMS, LHCb) et devront produire un ensemble de particules secondaires dont ltude permettra de rvler quelques un des secrets les mieux gards de notre Univers tels que dvoiler lexistence du bosson de Higgs souponn dtre lorigine de la masse des particules ou rvler lorigine du dsquilibre matire-antimatire

-7-

ISIMA 2007

CERN

2) Lexprience LHCb
Lexprience LHCb runit prs de 600 scientifiques issus de 47 laboratoires et de 15 pays. Le dtecteur LHCb traquera les particules contenant un quark b dit beaut et son antiquark dans lultime but dexpliquer comment la matire a pris le dessus sur lantimatire alors quelles taient prsentes en quantits gales la naissance de lUnivers.

a) LHCb : Le dtecteur
Lexprience LHCb est compose dun ensemble de sous dtecteurs complmentaires : VELO : (Vertex Locator) permet de dterminer lemplacement des collisions avec une prcision de 10 microns. RICH 1&2 : (Ring Imaging Cherenkov) permettent didentifier les particules charges ainsi que leur quantit de mouvement. TRACKERS : fournit des mesures prcises sur les quantits de mouvement des particules charges. CALORIMETERS : mesurent principalement lnergie des particules contenant des quarks. Ils sont en nombre de quatre. Le HCAL, par exemple, possde 80 km de fibres et est constitu dun empilement de plaques en acier qui psent 500 tonnes. MUON : sert pour lidentification des muons.

Figure 2 - Vue d'ensemble du dtecteur LHCb -8-

ISIMA 2007

CERN

b) Systme Online
En plus de lensemble des sous dtecteurs, Lexprience LHCb sappuie sur un systme dit Online qui permet de superviser le droulement de lexprience et qui est compos de quatre lments : Le Trigger : Les collisions ont lieu une frquence de 40 MHz (une collision toute les 25 ns), ce qui reprsente une grande quantit de donnes traiter. Le trigger a pour but de rduire cette frquence en ne slectionnant que les vnements importants. Le DAQ (Systme dacquisition de donnes) est un rseau Gigabit Ethernet qui soccupe du transport des donnes du dtecteur jusquaux disques de stockage en passant par les PCs de la ferme o seffectue la slection des vnements. Le TFC (Timing and Fast Control) : permet de synchroniser tous les modules de lexprience. ECS (Experiment Control System) : Le systme de contrle de lexprience LHCb est en charge de la configuration, du contrle et de la surveillance de tous les composants du dtecteur.

c) Configuration de lexprience LHCb


Avec plus de 500 000 composants, le dtecteur du LHCb est un systme dune grande complexit. La configuration de tous ses composants devient rapidement une opration fastidieuse, dautre part il nest pas toujours possible de se dplacer sur le lieu o se trouve le matriel, celui-ci pouvant de plus se trouver dans une zone soumise aux radiations. Il convient donc dautomatiser ces oprations et stocker toutes les informations relatives la configuration qui peuvent aller de quelques kB quelques MB selon le type du composant. Cest ici quintervient la base de donnes de configuration du LHCb, plus communment appele Conf DB ou CIC DB (Configuration Inventaire Connectivit), qui devrait contenir toutes les informations dont a besoin le systme de contrle (ECS) pour dfinir les paramtres de configuration des composants de lexprience. La CIC DB comporte aussi : Une description complte de la topologie du systme (connexions entre composants). La hirarchie des diffrents lments. Les caractristiques physiques et fonctionnelles des quipements utiliss. Un historique et inventaire des modules de lexprience.

-9-

ISIMA 2007

CERN

Figure 3 - Vue gnrale du systme Online montrant le positionnement de la CIC DB parmi les autres composants du systme.

d) Outils de configuration : PVSS :


Le systme de contrle du LHCB repose sur PVSS qui est un logiciel de type SCADA (Supervisory Control And Data Acquisition, Superviseur de contrle et dacquisition de donnes).

Ce logiciel a t dvelopp par la socit autrichienne ETM et permet de rcuprer des donnes partir du matriel afin de surveiller et contrler son fonctionnement ainsi que de configurer le matriel distance. Tous les modules contrlables doivent donc tre reprsents dans PVSS.

- 10 -

ISIMA 2007

CERN

Figure 4 - Exemple d'une interface graphique PVSS montrant le commutateur TFC.

CDBVis :
Bien que PVSS permet de reprsenter fidlement tous les composants du dtecteur, il nest pas trs utile quand il sagit de visualiser la topologie du systme ou comment les diffrents modules sont relis entre eux. De mme, la plupart des diteurs de bases de donnes classiques offrent une bonne ide de la structure des tables et de leur contenu mais ils restent inadapts pour visualiser la connectivit contenue dans la Conf DB de manire intuitive. En effet, si on considre que le dtecteur est constitu de plusieurs composants relis entre eux travers leurs diffrents ports par des connexions, et que les composants, les ports et les connexions sont stocks dans la Conf DB dans des tables diffrentes, il devient donc difficile de dterminer quel composant est reli quel autre. Car pour savoir que le composant A est connect au composant B. Il va falloir consulter la table des ports pour en extraire les ports appartenant A et B, pour ensuite rechercher dans la table des connexions les liens reliant un des ports de A un des ports du composant B. Il parait donc clair, quun diteur graphique de la Conf DB, permettant de visualiser de manire intuitive comment les composants sont relis entre eux, sera dune grande utilit pour naviguer dans le contenu de la base de donnes de configuration. Cest dans cette optique qua t dvelopp lditeur graphique CDBVis sur lequel a port mon travail pendant toute la priode de mon stage.

- 11 -

ISIMA 2007

CERN

Figure 5- Exemple d'une interface graphique montrant un switch du DAQ

- 12 -

ISIMA 2007

CERN

Analyse du problme
1) Etude des besoins
Comme expliqu prcdemment, lditeur CDBVis devra permettre une navigation simple et intuitive dans le rseau des composants du dtecteur. Ceci permettra entre autre de dtecter rapidement les erreurs lies la topologie du systme. Par exemple dans le cas du disfonctionnement dun des composants ont pourrait dterminer facilement les autres composants qui lui sont relis et qui seront affects ou bien en cause de ce disfonctionnement. De mme, connatre la topologie du systme permettra de suivre le flux des donnes dun bout lautre du dtecteur. CDBVis devra aussi permettre lajout de nouveaux composants dans la ConfDB, la modification des paramtres dun composant et prvoir une option pour linsertion dune grande quantit de donnes. CDBVis fait appel pour cela des bibliothques de fonctions intelligentes permettant de manipuler les informations contenues dans la base de donnes de manire sre et cohrente sans connaissance pralable de la structure de la base de donnes.

2) Couche traitement de donnes


La CIC DB dispose dune couche applicative permettant daccder aux donnes et leurs manipulations dune manire simple et sre afin de prserver la cohrence de donnes contenues dans la CIC DB et de permettre aux utilisateurs dinterroger la base de donnes sans aucune connaissance du schma des tables ou du langage SQL. Cette couche applicative a t mise sous forme dune bibliothque crite en C, appele CIC Lib, et qui regroupe un ensemble de fonctions qui peuvent tre appeles par lutilisateur ou par dautres applications. La CIC Lib permet aussi de protger le schma de la base de donnes dans la mesure o elle nous vite de changer toutes les applications utilisant la CIC DB dans le cas ou un changement imprvu du schma de la base de donnes venait arriver. Dans un tel cas de figure on naura besoin que de changer notre librairie pour prendre en compte le changement du schma de la base de donnes et cette opration sera ds lors transparente pour les applications utilisant la CIC DB du moment o on sarrange leur fournir les mmes fonctions pour communiquer avec la base de donnes.

3) Schma de la base de donnes


a) Inventaire des composants
Le schma de la CIC DB a t labor pour rpondre aux diffrents cas dutilisation demands par lensemble des utilisateurs. Il doit pour cela tre gnrique pour sappliquer nimporte quel sous systme du dtecteur et extensible - 13 -

ISIMA 2007

CERN

pour pouvoir inclure facilement dultrieurs changement non prvus au dpart. Ce travail a t ralis en 2006 par Lana Abadie lors de sa thse au CERN. Il a ainsi t choisit de distinguer dans le schma de la CIC DB entre le cot fonctionnel et le cot matriel ou hardware des diffrents composants. Ainsi, chaque composant de lexprience sera associes deux entres dans la base de donnes dans deux tables diffrentes : La table FUNCTIONAL_DEVICES : contient les informations relatives la fonction du composant. La table HARDWARE_DEVICES : contient les informations relatives la partie purement matriel du composant (numro de srie, nom du responsable prvenir dans le cas dune ventuelle panne). Une telle distinction a t adopte car il est plus facile de retenir le nom fonctionnel dun composant plutt que son numro de srie. Ainsi, la carte qui porte le numro de srie XDHFFD41 (hardware) accomplit les tches de MUON_TELL1_12 (fonctionnel) et si jamais la carte MUON_TELL1_12 tombe en panne, la carte du point de vue lment physique sera remplace. Et donc par la suite, cest une carte qui porte le numro de srie GT54RVSS, par exemple, qui accomplira les tches de MUON_TELL1_12. Le nom fonctionnel reste inchang au cours du temps. Pour pouvoir donner une vue gnrale de ltat du systme, plusieurs tats possibles ont t dfinis pour tous les composants. Ainsi un composant matriel peut tre: IN_USE : si le composant a bien t install sur les lieux de lexprience et est prt tre utilis. SPARE : sil sagit dune pice de rechange qui nest pas connecte au systme. IN_REPAIR : si le composant est en rparation. DESTROYED : si le composant a t endommag et ne peut plus tre utilis. EXT_TEST : si le composant a t dconnect du systme pour tre test en laboratoire. TEST : si le composant est test localement (sans tre dconnect du systme) Etat initial dun composant IN_USE SPARE TEST EXT_TEST Statut autoriss auxquels il peut transiter SPARE, IN_REPAIR, TEST, DESTROYED, EXT_TEST IN_USE SPARE, IN_REPAIR, IN_USE, DESTROYED SPARE, IN_REPAIR, IN_USE, DESTROYED - 14 -

ISIMA 2007 IN_REPAIR SPARE, IN_USE, DESTROYED DESTROYED Figure 6 - Transitions possibles entre tats dun composant

CERN

Ltat du composant fonctionnel peut tre dduit directement de celui du composant matriel suivant le tableau suivant : Composant matriel Composant fonctionnel (hardware) IN_USE IN_USE SPARE indfini TEST indfini EXT_TEST indfini IN_REPAIR indfini DESTROYED indfini Figure 7 - relation entre ltat de la partie hardware et la partie fonctionnelle dun composant

b) Connectivit
Dans le schma de la base de donnes, chaque composant fonctionnel dispose de plusieurs ports travers lesquels il est connect aux autres composants du systme. Les liens entre composants peuvent tre de plusieurs types diffrents et sont stocks dans la table CONNECTIVITY. Les liens peuvent tre des connexions physiques (conduites de gaz, files de transport de donnes) ou bien des connexions logiques qui servent regrouper les composants qui sont traits de la mme manire ou quon a lhabitude de ranger dans la mme catgorie.

c) Schma de la base de donnes


Aprs ltude des diffrents cas dutilisation possible, le schma suivant a t labor pour la base de donnes de configuration :

- 15 -

ISIMA 2007

CERN

Figure 8 - Schma de la base de donnes de configuration Dans le schma prsent ci-dessus, on voit que les composants fonctionnels sont regroups selon diffrents types (chaque composant fonctionnel est associ un type donn dans la table FUNCTIONAL_DEVICE_TYPES). Ceci permet de regrouper les proprits communes plusieurs composants et dviter la duplication inutile dinformation. On remarque aussi que la table contenant les types de connexions est relie une table contenant une liste de nombres premiers. En effet, vu le nombre rduit de type de liens dans le systme (14 au total), chaque type de lien a t associ un nombre premier qui lui sert didentifiant. Ceci facilite le stockage et la gestion des liens car il est beaucoup plus ais de manipuler des nombres que de dutiliser des chanes de caractres.

4) Couche prsentation des donnes


La couche prsentation des donnes de la CIC DB repose sur des interfaces graphiques PVSS et sur CDBVis sur lequel sest concentr mon travail pour toute la dure de mon stage.

- 16 -

ISIMA 2007

CERN

a) Prsentation des composants dans CDBVis


Les composants du systme sont reprsents dans CDBVis par des rectangles avec les ports dentre (input) sur la partie suprieure et les ports de sortie sur la partie infrieure comme le montre la figure ci-dessous. Les deux ranges de ports sont numrotes partir de zro. Les composants sont affiches de diffrentes couleurs selon leur type. De mme, plusieurs couleurs sont utilises pour distinguer les 14 types de connexions prsentes dans le systme.

Figure 9 - Reprsentation dun composant dans CDBVis

b) Exemple : systme MUON


Pour illustrer de quelle manire lapplication CDBVis permet de reprsenter la topologie des diffrends systmes considrons le systme MUON comme exemple. La figure suivant montre une reprsentation du systme MUON donne par le groupe travaillant dessus. On distingue la carte frontale (FE_M3C17C) en couleur verte qui dispose dune connectivit interne et qui est relie aux autres composants spcifiques au systme : les cartes PAD suivies des cartes GAP et pour finir le Chamber et les HV Ch. On note aussi que trois diffrents types de connexions sont mises en jeux ici : les connexions de transport de donnes (data link), les files de hautes tensions (High Voltage Link) et des liens dassociation (part Link) dont le rle est dindiquer que les cartes Gap sont associes au Chamber mme sil n y aucune connexions physiques entre les deux.

- 17 -

ISIMA 2007

CERN

Figure 10 - topologie du systme MUON Bien que la gestion de la connectivit microscopique soit incluse dans la CIC DB Lib, lapplication CDBVis ne permet pas encore de lafficher, la connectivit interne des cartes frontales ne sera pas accessible partir de CDBVis, par contre toute la connectivit macroscopique est bien reprsent comme le montre les deux figures cidessous. Sur le premier figure on visualise le premier chemin allant de la carte frontale jusquaux HV Ch et sur la deuxime figure le chemin reliant la carte frontale au MUON Chamber.

- 18 -

ISIMA 2007

CERN

Figure 11 - Chemin reliant la carte frontale (Front End Board) la HVBRD_CAEN (High Voltage Board)

- 19 -

ISIMA 2007

CERN

Figure 12 - chemin reliant la carte frontale aux diffrents composants du MUON Chamber Une premire version minimal de CDBVis a t dveloppe durant lt 2004, par ltudiant Felix Schmidt-Eisenlohr, le travail a t ensuite poursuivit par un autre tudiant, Thomas Johansen, qui a ajout plusieurs fonctionnalits aux programmes. Lapplication CDBVis a t dveloppe en utilisant le langage Python ainsi que la bibliothque graphique wxPython pour les premires versions.

c) Python
Le langage Python a t choisit car il fait partie, avec le C et le C++, des langages communment utiliss au CERN. Python a t prfr au C et C++ pour sa simplicit qui rend le processus de dveloppement beaucoup plus rapide. En effet en combinant une syntaxe trs simple un ensemble de structures de donnes volues (listes, dictionnaires,...), Python permet de produire des programmes la fois trs compacts et trs lisibles. A fonctionnalits gales, un programme Python abondamment comment est souvent de 3 5 fois plus court qu'un programme C ou - 20 -

ISIMA 2007

CERN

C++ quivalent, ce qui reprsente en gnral un temps de dveloppement de 5 10 fois plus court et une facilit de maintenance largement accrue.

Figure 13 - Logo de Python De plus, Python est gratuit, portable sur la majorit des systmes dexploitation existants et intgre toute la puissance du modle objet. Il dispose aussi dun grand nombre de bibliothques standards qui donnent accs beaucoup de services et est connu pour son extensibilit qui permet de linterfacer facilement avec des bibliothques en C comme sera le cas pour lapplication CDBVis avec la couche applicative de la base de donnes de configuration, la CIC DB Lib, qui est une bibliothque de fonctions en C.

d) WxPython
wxPython est une implmentation libre en Python de l'interface de programmation wxWidgets qui est crite en C++. wxPython met disposition des dveloppeurs un grand nombre de classes permettant de raliser des interfaces homme machine (IHM) compltement indpendantes du systme dexploitation (OS) utilis.

Figure 14 - Logo de wxPython Pour la cration et gestion des widgets, wxPython se base sur les routines natives du systme dexploitation sur lequel tourne lapplication ce qui fait que les interfaces dveloppes avec wxPython sont semblables celles du systme comme le montre les deux figure suivantes :

Figure 15 - Diffrence entre lapparence de la mme application sur deux OS diffrents (Windows XP et GNOME)

- 21 -

ISIMA 2007

CERN

Toutefois, la version obtenue de CDBVis en utilisant wxPython souffrait dun ensemble de problmes qui ont rendu lexploitation de lditeur et sa maintenance difficiles. En effet, wxPython souffre de quelques fuites de mmoire (du moins sur la version 2.4.2 de la distribution linux utilise au CERN). De plus, wxPython ne fourni pas beaucoup de fonctions facilitant la manipulation des objets graphiques (dans notre cas les composants quon dessine) ; il fallait que lapplication puisse grer le dplacement et le redimensionnement des objets dessine ce qui tait lorigine dune grande perte en performances. Le but de mon stage a donc t de porter lapplication CDBVis sur une autre bibliothque disposant de plus de fonctionnalits afin de venir bout des problmes apparus dans les versions prcdentes.

5) Migration vers Qt
Pour remplacer wxWidget le choix sest port sur Qt qui est une bibliothque C++ d'interfaces graphiques qui offre galement beaucoup dautres modules non graphiques : des composants d'accs aux donnes, de connexions rseaux, d'analyse XML, etc. Qt a t dveloppe par la socit Trolltech et est disponible en version libre pour Linux, Mac et pour WINDOWS partir de sa version 4.

Figure 16 - Logo de la librairie Qt Les principales raisons qui ont guid vers le choix de Qt peuvent tre rsums dans la liste suivante : A la diffrence de wxWidget qui est un projet communautaire, Qt semble beaucoup professionnelle car il y a une socit derrire, ce qui assure un support et une volution continues pour la bibliothque. Ceci se reflte aussi au niveau de la documentation ; Qt dispose dune documentation trs bien fournie par rapport celle de wxWidget. Qt fourni aussi des outils puissants permettant de dessiner rapidement ses interfaces et de gnrer aussi le code correspondant. Les modules de dessin de Qt sont trs complets et faciles manipuler. Qt dispose dun puissant systme de gestion dvnements et a ses propres routines daffichage ; elle ne sappuie pas donc sur ce qui est fourni par le systme dexploitation comme est le cas pour wxWidget ce qui reprsente un grand gain en performances.

- 22 -

ISIMA 2007

CERN

a) Gestion des vnements


Le systme de gestion des vnements de Qt est bas sur le mcanisme de signaux /slots. Un signal est mis par un composant de lapplication lorsquun vnement se produit. Un vnement est gnralement le fait dun utilisateur qui clique par exemple sur un bouton ou qui remplit un champ. Les slots sont des fonctions appeles en rponse un signal particulier. La figure suivante illustre la puissante de ce mcanisme. En effet, en dfinissant pour chaque objet un ensemble de signaux et de slots ont peut ensuite connecter les signaux aux slots des diffrents objets. Lavantage est quon peut connecter un seul signal plusieurs slots, ce qui fait quun seul vnement reu de lutilisateur peut dclencher plusieurs actions ce qui est impossible raliser avec les autres bibliothques.

Figure 17 - Mcanisme de signaux/slots dans Qt

b) Loutil Qt Designer
Qt Designer est un Environnement de Dveloppement Intgr Qt qui permet de concevoir graphiquement une interface. Comme le montre la figure suivante, le Qt Designer est compos dun ensemble de botes outils faciles utiliser et trs pratique :

- 23 -

ISIMA 2007

CERN

La barre vertical de gauche permet de slectionner un composant graphique (bouton, ligne de texte, label de texte, ...), puis de le placer sur la fentre central qui reprsente linterface quon veut crer. Le panel Object Explorer donne une vision hirarchique des composants et de leurs classes. Le panel Property permet dditer les proprits de tous les composants de notre interface. Project overview prsente l'arborescence des fichiers utiliss dans le projet.

Une fois l'interface statique cre, le Designer permet denregistrer le rsultat sous forme dun fichier qui porte lextension .ui et qui contient toute les informations sur linterface dans un format XML.

Figure 18 Vue densemble de loutil Qt Designer Le Qt Designer permet aussi de grer les signaux slots comme le montre la figure suivante o lon peut dfinir lobjet envoyant le signal et celui qui le reoit (colonnes sender et receiver ) ainsi que le signal et le slot mis en jeux.

- 24 -

ISIMA 2007

CERN

Figure 19 - Cration de connexion signaux/slots dans Qt Designer

c) Gnration de code : Le Compilateur dInterfaces Utilisateur (uic).


Qt dispose aussi dun outil appel uic (User Interface Compiler) qui permet de traduire le fichier XML obtenu partir du Designer en code C++. Comme lapplication CDBVis est dveloppe en Python, nous utiliserons pyuic qui est un utilitaire quivalent uic mais qui permet de gnrer du code Python. Le processus de dveloppement adopt peut donc se rsumer dans le schma suivant.

Figure 20 - processus de dveloppement en utilisant les outils de Qt Tout dabord nous utilisons le Qt Designer pour dfinir lapparence de linterface, ensuite laide de pyuic nous obtenons une classe Python que nous allons driver pour y ajouter nos propres mthodes avant de lutiliser dans lapplication principale.

- 25 -

ISIMA 2007

CERN

Ralisation de la solution
1) Dfinition de lenvironnement de travail
La premire tache que jai eu a t de dfinir un environnement de travail avant de pouvoir commencer le portage de lapplication. La figure suivante illustre bien les diffrents composants mis en jeux pour le dveloppement de lapplication.

Figure 21 Lenvironnement de lapplication CDBVis Qt tant une bibliothque C++, nous ne pouvons lutiliser directement partir de CDBVis, il faut donc installer PyQt qui est une adaptation des classes C++ de Qt en classes Python. PyQt a recours loutil SIP qui permet dimporter des classes C et C++ dans Python. Le mieux aurait t dutiliser la version 4 de Qt, mais lutilisation de Qt 4, ncessite davoir PyQt 4 qui nest compatible quavec la version 2.5 de Python. Or CDBVis fait aussi appel la bibliothque ConfDBpython qui contient la couche applicative permettant de se connecter la base de donnes et qui nest pas encore compatible avec Python 2.5. Lapplication CDBVis doit donc tourner, pour le moment, avec la version 2.4 de python. Dans ce cas on ne pourra plus utiliser la version 4 de Qt est on doit se contenter de Qt v3. Le problme avec Qt 3 est que cette version nest pas disponible en version libre sous WINDOWS. Il restait alors la solution de se procurer une licence payante pour pouvoir utiliser Qt 3 sur WINDOWS. Cette solution na pas t adopte car je suis parvenu, moyennant quelques recherches, trouver une adaptation non officielle pour WINDOWS de la version libre de Qt sous linux. Cette version non officielle de - 26 -

ISIMA 2007

CERN

Qt a t ralise au sein du projet QTWIN qui visait mettre disposition Qt en version libre sous WINDOWS. A lheure actuelle, ce projet a t abandonn car Trolltech a dcid, partir de la version 4 de Qt, de fournir une version libre sous WINDOWS. Linconvnient avec lutilisation de la version non officielle de Qt vient lors de linstallation de celle-ci. Alors que la version commerciale de Qt est fourni avec un installeur qui permet dinstaller lenvironnement en quelques minutes, la version non officielle ncessite de recompiler Qt sur sa machine ce qui prend facilement une demi heure sur une machine disposant de 2 GHz de processeur et 1 Go de RAM. Un descriptif des instructions dinstallation figure en annexe I.

2) Architecture de lapplication CDBVis : UML, diffrentes classes


Une fois lenvironnement de travail dfini (Python 2.4 avec Qt 3), vient la deuxime tape de mon travail qui est de porter lapplication CDBVis pour nutiliser que la librairie Qt. Pour avoir une ide de la quantit de travail que ce portage constitue, il est utile de rappeler comment CDBVis est architecture. Les sources de lapplication sont constitues dun ensemble de classe rparties en 16 fichiers diffrents. Le plus petit de ces fichiers fait une centaine de lignes alors que le plus grands faits 5000 miles lignes de codes. Lapplication fait au total un peu plus de 16 500 lignes de code o sont entremles les parties graphiques qui font appel wxPython et les parties de traitement de donnes qui sont non graphiques. Il va falloir donc identifier tous les appels des fonctions de la librairie wxPython pour les remplacer par des fonctions quivalentes de Qt si quivalence il y a. La figure suivante montre un diagramme UML simplifi de larchitecture de lapplication en ne prenant en compte que les principales classes.

- 27 -

ISIMA 2007

CERN

Figure 22 - Diagramme UML de la lapplication CDBVis

Dans le diagramme ci-dessus on peut distinguer les trois fichiers principaux qui constituent lapplication : objectclasses.py : contient le modle objet permettant dencapsuler les donnes rcupres de la base de donnes. visWindow.py : contient les classes relatives la partie centrale de lapplication ou seront affichs les composants du systme qui sont reprsents par la classe : DrawindObject. cdbVis.py : contient la fentre principale de lapplication qui contient les diffrents menus et barres doutils.

3) Dmarche suivie pour le portage de lapplication

- 28 -

ISIMA 2007

CERN

a) Identification les classes modifier


La premire tape avant de commencer le portage de lapplication a consist dterminer les principaux fichiers qui devraient tre modifis. Car lide a t de porter lapplication petit petit en gardant une version qui marche de lapplication tout au long du portage. Une premire analyse du code source de lapplication permet dliminer les deux fichiers objectclasses.py et cdbVisCore.py car ils ne font pas appel la librairie wxPython. Aucune modification ne sera donc apporte ces deux fichiers. Le fichier cdbVisCore.py contient les paramtres intrinsques de lapplication (version de lapplication, paisseur par dfaut des traits reprsents, codes associs aux diffrentes variables globales).

b) Utilisation dinterfaces
Une des mthodes utilises au dbut pour porter lapplication sur le nouvel environnement est davoir recours des interfaces de communication qui se chargent de traduire les appels vers des fonctions de wxPython en des appels vers des fonctions de Qt.

Figure 23 - Utilisation des interfaces de communication Lide est de fournir notre application des objets semblables ceux quelle a lhabitude dutiliser dans wxPython mais qui sappuieront cette fois sur les mthodes de la nouvelle bibliothque. Prenons un exemple trs simple pour comprendre le principe de lutilisation de telles interfaces de communication. La librairie wxPython utilise la classe wxSize pour reprsenter un couple form dune longueur et dune largeur. Un objet de type wxSize dispose de deux mthodes : wxSize::GetWidth et wxSize::GetHeight qui retournent respectivement la largeur et la hauteur de lobjet. La classe quivalent wxSize dans Qt sappel QSize et les mthodes dont elle dispose sont : QSize::width et QSize::height. Lide est donc de crer une classe quon appellera wxSize mais qui sappuie sur la classe QSize de Qt. Cette nouvelle classe devra fournir les mthodes GetWidth et GetHeight qui ne feront quappeler les fonctions quivalentes dans Qt savoir : QSize::width et QSize::height. - 29 -

ISIMA 2007

CERN

Ainsi, par lajout dune simple classe, on arrive simuler une classe de wxPython et on peut spargner la fastidieuse tache de rechercher toutes les fois ou on utilise la classe spcifique wxPython pour les remplacer par la classe quivalente dans Qt. Bien quelle donne des rsultats rapides et sans grands efforts, cette mthode est proscrire pour le portage dune application car on se retrouve rapidement avec beaucoup de nouvelles classes ce qui rend la dtection des erreurs plus difficile car on confond rapidement les classes de la premire bibliothque avec celles que nous avons nous mme cr. Toutefois lutilisation de cette technique sest avre trs utile pour dterminer si les deux classes quon considre comme quivalentes ont le mme comportement, on peut donc rapidement crer une telle interface de communication pour faire des tests avant de remplacer proprement les classes dune bibliothque par leurs quivalents dans la deuxime bibliothque.

c) Partie visuelle : Canevas


Dans bien des cas, les deux bibliothques ont des conceptions diffrentes des composants graphiques, il nest pas toujours ais de trouver de parfaites quivalences do la ncessiter de reprendre entirement certaines classes pour les adapts la vision de telle ou telle bibliothque. Ceci a t le cas par exemple pour la classe visWindow qui reprsente la partie centrale de CDBVis o sont reprsents les diffrents composants ainsi que leur connectivit. En effet, dans la version de CDBVis utilisant la librairie wxPython, la partie de visualisation a t conue comme indiqu dans la figure suivante. Comme le nombre et la taille des composants afficher peut considrablement varier, il est ncessaire de disposer dune assez grande zone pour le dessin des composants. Lutilisateur a donc une petite vue sur cette grande zone et il peut naviguer dedans en utilisant les barres de dfilement.

- 30 -

ISIMA 2007

CERN

Figure 24 - Exemple dune zone de dfilement Dans la figure ci-dessus, la grande zone de dessin correspond au grand rectangle en pointills (single child). Les composants (child) viennent ensuite sajouter sur ce grand cadre et on a une vue de lensemble travers le petit cadre gris car la taille de lcran ne peut pas visualiser la totalit de la zone de dessin en mme temps. Il est possible de naviguer dans le grand cadre pour voir les diffrents composants en utilisant les barres de dfilements (horizontal ScrollBar et vertical ScrollBar). De son cot, Qt dispose dun module spcial qui sadapte parfaitement notre cas. Ce module sappel le Canvas et il permet de visualiser un grand nombre de composants graphiques sur un grand cadre comme le montre la figure suivante :

- 31 -

ISIMA 2007

CERN

Figure 25 - Exemple dune application utilisant le Canvas module de Qt Le module Canvas de Qt dispose de suffisamment de classes et de mthodes pour rendre lutilisation des composants graphiques et leur manipulation chose facile. En effet, sur le Canevas on peut ajouter des lments (Canvas items) qui peuvent prendre diffrentes formes (ellipse, rectangle, ligne, polygone). On peut aussi crer des formes composes. Chacun de ces lments dispose dun ensemble de mthode facilitant sa manipulation. Par exemple pour dplacer un lment il suffit dappeler la mthode moveBy(int x, int y) pour dplacer notre lment dune distance x horizontalement et y verticalement alors que sans le module Canvas il aurait fallu calculer la nouvelle position de notre lment, effacer la premire occurrence de llment et le redessiner sa nouvelle position.

Gestion des collisions:


Le module Canvas de Qt permet aussi de grer les collisions entre composants. Par exemple dans le cas ou on se retrouve avec plusieurs lments qui se chevauchent, un simple appel la fonction QCanvas::collisions(QPoint& Pt) permet de retrouver la liste de tous les lments se trouvant au point Pt mme si ils sont masqus par dautres lments. En plus des deux coordonnes, x et y, permettant de positionner le composant dans notre cadre, Qt ajoute une troisime coordonne, z, permettant de dterminer le plan sur lequel se trouve le composant. Ainsi les lments qui ont le z le plus grand sont ceux du premier plan et ceux avec un petit z sont ceux au fond de la scne. - 32 -

ISIMA 2007

CERN

Avec ce mcanisme il devient facile de dterminer llment slectionner aprs un clic de lutilisateur car il suffit de rechercher dans la liste des lments retourns par la fonction QCanvas::collisions celui qui a le z le plus grand.

Matrices de transformations:
Le module Canvas dispose aussi dun puissant systme de transformations 2D. En effet, il suffit de choisir la matrice 2D correspondant la transformation souhaite (rotation, translation, agrandissement) et le module Canvas se charge dappliquer cette transformation a tous les lments constituants la partie visuelle. Jai utilis ces transformation 2D lors de la gestion du zoom, car la version wxPyhon de CDBVis devait pour effectuer un zoom, redimensionner tous les lments un par un alors quavec Qt il est possible de leur appliquer une mme transformation en mme temps.

d) Sparer le contenu de la prsentation


Dans un souci de mieux organiser les sources de lapplication, jai essay tant que possible de sparer les parties du code responsables de tout ce qui est purement graphique (cration des boutons, placements des lments sur linterface) de la partie qui soccupe du traitement des donnes. Bien quune sparation parfaite ne soit pas possible jai essay tout du moins de sparer la partie du code gnre par le Qt Designer du reste du code source de lapplication. Pour cela il a fallut reprendre toutes les interfaces et formulaire utilisant wxPython pour les redessiner en utilisant le Qt Designer. Jai choisi ensuite de prfixer les noms de tous les fichiers sources gnrs partir du Designer par le mot GUI pour (Graphical User Interface). Il suffit ensuite de driver la classe obtenue pour y ajouter nos propres fonctions comme le montre la figure suivante.

Figure 26 - Sparation entre la partie graphique du code et la partie non graphique Certes, avec cette mthode nous avons deux fois plus de fichiers et de classes dans nos sources mais elle permet une meilleure organisation du code ; on sait quel fichier il faut modifier selon quon veuille modifier lapparence de notre interface ou modifier nos propres fonctions de traitement des donnes. De plus, la modification de lapparence de notre interface devient une tache facile car on peut tout moment - 33 -

ISIMA 2007

CERN

reprendre linterface avec le Designer, y apporter les modifications quon veut avant de gnrer un nouveau fichier GUI_mon_formulaire.py qui crasera le premier fichier. En reprenant les diffrentes interfaces de lapplication je leurs ai associ des Layouts qui permettent de repositionner les lments de linterface dans le cas ou la fentre principale est redimensionn de sorte ce quils prennent la totalit de lespace disponible. Le deux figures suivante montrent la mme interface avec et sans layouts.

Figure 27 - Interface utilisant des Layouts

Figure 28 - Interface ralis sans Layouts

4) Affichage des grands composants


Certains composant de lexprience possdent un grand nombre de connexions ce qui rend leur visualisation trs difficile. Par exemple dans le cas dun routeur du systme dacquisition de donnes il faut un peu plus dune minute pour que lapplication puisse afficher tous les composants qui lui sont relis. Et mme aprs un aussi long temps dattente, le rsultat obtenu nest pas trs satisfaisant car, comme on peut le voir sur la figure suivante, on se retrouve avec un - 34 -

ISIMA 2007

CERN

grand nombre de composants avec des connexions dans tous les sens ce qui dtriore la lisibilit et rduit notablement les performances de lapplication.

Figure 29 - Reprsentation du routeur du DAQ avec toutes ses connexions Jai donc choisi de fixer un nombre maximum de connexions au del duquel lapplication affiche une nouvelle fentre contenant la liste de tous les composants relis au composant central. Lutilisateur peut ensuite choisir le composant quil veut visualiser en cliquant sur son nom comme le montre la figure suivante ou on a choisit de visualiser le DAQ_SWITCH_01 reli lentre du routeur du DAQ. Ainsi on laisse lutilisateur le choix de visualiser les informations quil souhaite sans surcharger lapplication.

- 35 -

ISIMA 2007

CERN

Figure 30 - visualisation des grands composants (ici le DAQ_ROUTER_1)

5) Mise disposition des utilisateurs


Pour faire fonctionner lapplication CDBVis, il faut disposer de python 2.4, Qt v3, SIP, PyQt v3 en plus dun accs au systme de fichiers distribu AFS (Andrew File System) qui permet un ensemble de machines rparties en rseau de partager des fichiers de faon cohrente. Il serait contraignant pour lutilisateur de devoir installer tout lenvironnement comme indiqu dans les parties prcdentes. Cest pourquoi jai utilis lextension py2exe de Python qui convertit les scripts Python (.py) en excutables Windows (.exe). Py2exe permet aussi de rassembler dans un mme dossier toutes les librairies dont a besoin lapplication pour fonctionner correctement. Ainsi on arrive obtenir un dossier comportant lexcutable de lapplication accompagn de plusieurs bibliothques dynamiques (aussi appele dll pour Dynamic Link Library) reprsentant les diffrentes bibliothques appeles. Lutilisateur peut ainsi utiliser lapplication CDBVis sans avoir installer Qt ni mme Python. Tout ce dont il a besoin cest davoir un accs AFS.

- 36 -

ISIMA 2007

CERN

Larchive ralis fait 7 Mo environ et est tlchargeable sur la page rserve lapplication sur le site du LHCB : http://lhcb-online.web.cern.ch/lhcbonline/configurationdb/cdbVis.htm

- 37 -

ISIMA 2007

CERN

Rsultats et discussions
1) Prsentation gnrale de CDBVis
Dans cette partie je vais prsenter lapplication et ses diffrentes fonctionnalits aprs son portage vers Qt. Lapplication CDBVis peut fonctionner dans deux modes diffrents : un mode de navigation ou on peut afficher les donnes de la CIC DB et un mode de cration ou on peut modifier les proprits des composants existants et en crer des nouveaux. Il ny a pas de sparation entre les deux modes et on passe du mode de navigation celui de la cration automatiquement ; il suffit pour cela de crer un nouveau composant ou den modifier un dj existant. Lapplication se comporte toutefois de manire diffrente selon quon est dans lun des deux modes ; dans le mode de navigation toutes les informations quon visualise sont celle de la CIC DB alors que dans le mode de cration on voit les composants avec les modifications quon leur a apport. Par exemple si on modifie la localisation dun composant on passe automatiquement en mode de cration. Et toute les prochaines fois ou on demandera lapplication dafficher la localisation de ce composant nous verrons apparaitre la nouvelle localisation et non celle actuellement prsente dans la base de donnes. Pour revenir au mode de navigation il faut propager les changements effectus localement la base de donnes.

a) Vue Principale
Lapplication CDBVis est compose de trois zones principales : la plus grande sert pour visualiser les composants et leur connectivit. Une zone de slection affiche la liste de tous les composants de la CIC DB sous forme dun arbre. La dernire zone sert afficher les informations relatives lobjet actif.

- 38 -

ISIMA 2007

CERN

Figure 31 - Vue densemble de lapplication CDBVis

b) Zone de slection
La zone de slection contient un arbre o sont lists tous les composants des diffrents systmes. Les donnes sont organises en niveau ; chaque niveau de larbre contient un type de donnes diffrent. Le premier niveau contient la liste des systmes, pour chaque systme on dfinit une liste des types de composants et une autre liste pour les types de connexions sur le deuxime niveau (voir deuxime vue de la figure suivante).

- 39 -

ISIMA 2007

CERN

Figure 32 - Deux vues de la zone de selection montrant les deux premiers niveaux de larbre Au troisime niveau on retrouve la liste des types de composants (ou types de connexions), et dans chaque type sont lists les composants en faisant partie. Au dernier niveau figure la liste des ports se rattachant aux diffrents composants comme on peut le voir sur la figure suivante.

Figure 33 - Les trois derniers niveaux (types de composants, composants, ports) de larbre contenant tous les composants

- 40 -

ISIMA 2007

CERN

c) Zone dinformation
La zone dinformation montre toutes les informations concernant llment actif. Le type de ces informations dpend du type de lobjet actif (composant ou connexion).

Figure 34 - Deux vues de la zone dinformation ; dans la premire vue un composant est slectionn et dans la deuxime il sagit dune connexion.

d) Barre dtat
La barre dtat est divise en trois parties, la premire sert pour laffichage de tout type de message visant reflter ltat de lapplication (Informations, Erreurs, avertissement, succs ou chec dune opration...). Les messages importants (erreurs critiques, erreurs dinsertion dans la base de donnes) sont affichs en plus sous forme dune boite de dialogue pour tre plus apparents. - 41 -

ISIMA 2007

CERN

Les deux autres parties de la barre dtat montrent le zoom appliqu sur la zone de visualisation et le mode dans lequel se trouve lapplication (navigation ou cration)

Figure 35 - Barre de status de lapplication

2) Mode de Navigation
Lapplication CDBVis permet daborder la CIC DB de deux manires diffrents ; pour chaque composant on peut choisir de sintresser ses voisins ou bien aux chemins qui y passent. Il est possible de passer dun mode de visualisation lautre par un simple clique.

a) Visualisation des voisins


Ce mode de visualisation permet de voir le composant central et ses voisins qui lui sont directement connects. Dans la figure suivante, le composant central est le VELO_HYBRID_R_0, on ne peut donc voir que les composants qui lui sont directement lis (ici les quatre SHORT_KAPTONs).

Figure 36 - Visualisation des voisins du VELO_HYBRID_R_0 Cependant, en choisissant un des quatre SHORT_KAPTONs comme composant central, nous verront le HYBRID_R_0 avec les trois ports restants comme libres bien que ce ne soit pas cas. Il faut donc bien faire attention au composant central quon est entrain de visualiser pour ne pas mal interprter les informations representes.

- 42 -

ISIMA 2007

CERN

Figure 37 - Visualisation des voisins du VELO_SHORT_KAPTON_0

b) Visualisation des chemins


Le mode de visualisation des voisins et le mode par dfaut aprs le dmarrage de lapplication. Le passage au mode de visualisation des chemins se fait en actionnant le bouton de la figure suivante qui se trouve sur la barre doutils.

Figure 38 - Bouton permettant de passer au mode de visualisation de chemins Apres la slection du mode de visualisation des chemins, lapplication affichera les chemins passant par le composant central et non ses voisins. La liste de tous ces chemins sera affiche dans une nouvelle fentre qui montrera aussi la longueur de chaque chemin.

- 43 -

ISIMA 2007

CERN

Figure 39 - Visualisation des chemins passant par la carte VELO_TELL1_0

Dans la figure ci-dessus, on peut voir que lapplication a trouv quatre chemins passants par la carte VELO_TELL1_0 et que chacun de ces chemins fais une longueur de six connexions. Dans la version actuelle de lapplication, lopration de recherche de chemin prend beaucoup de temps avant daboutir (une minute et trente secondes pour la carte VELO_TELL1_0). En fait, la recherche de chemins se fait par la librairie CIC DB Lib qui est crite en C. Le long temps dattente ncessaire pour la recherche des chemins ne peut donc tre imput Python et il est principalement d au fait quil faut faire beaucoup de parcours dans la base de donnes avant de trouver les chemins recherchs. Je rappel que ce temps a t obtenu en utilisant la version 3.5 de la CIC DB Lib, et il parait que la nouvelle version de cette librairie arrive rduire ce temps dattente quelques secondes en tirant profit du puissant systme de cache dOracle.

- 44 -

ISIMA 2007

CERN

3) Mode de Cration
Lapplication CDBVis permet dajouter de nouveaux composants travers un ensemble de formulaires ou bien partir dun fichier texte contenant les donnes mis dans un format spcifique. Lutilisateur a ensuite le choix entre valider ses changements directement la base de donnes en actionnant le bouton suivant qui se trouve sur la barre doutils : ou exporter les changements vers un script python quil peut tre par la suite excut en dehors de lapplication.

a) Cration et modification des composants Cration dun nouveau Type de composant


Une fois connect la base de donnes et quun systme ait t slectionn, lutilisateur peut crer un nouveau type de composant en utilisant laction Create Devices Types du menu Create. Lutilisateur devra ensuite spcifier, travers un formulaire, le nom du nouveau type, la couleur avec laquelle seront reprsents ses composants dans CDBVis, les systmes dans lesquels il apparaitra ainsi que le nombre dentres/sorties dont il dispose.

Figure 40 - Formulaire de cration dun nouveau type de composant

- 45 -

ISIMA 2007

CERN

Cration de composant(s)
Toujours dans le menu Create, il est possible dajouter de nouveaux composants avec laction Create Device(s). Lutilisateur doit ensuite remplir les informations concernant le(s) composant(s) crer. Le nom et le numro de srie sont obligatoires et doivent tre diffrents pour chacun des composants. Il est possible de spcifier le nombre de composants crer dans le champ Total. Dans ce cas lutilisateur devra mettre le signe %d dans le nom et le numro de srie l endroit ou il veut faire figurer le numro du composant. Le champ Start number indique le numro partir duquel on commencera lindexation des composants dans le cas ou on en cre plusieurs. Il est aussi possible de spcifier le nombre de chiffres prendre en considration pour lindexation des composants. Dans la figure qui suit on a choisit dafficher deux chiffres. Le nom du premier composant cr sera donc mon_composant_01 et non mon_composant_1. Une fois le bouton Ok activ, les diffrents composants seront crs et les changements se rpercuteront aussi sur la zone de slection o on verra sajouter les nouveaux composants dans larbre de slection.

Figure 41 - Formulaire de creation de composant(s)

- 46 -

ISIMA 2007

CERN

Modification de composant
Dans la partie visuelle, il est possible de modifier les informations dun composant. Pour cela il faut faire un clique droit sur le composant modifier et choisir ensuite dans le menu contextuel qui apparait laction Modify. Cette action affichera le mme formulaire que pour la cration de composants sauf que certains champs seront griss car non modifiables tel que le type du composant ou son numro de srie.

Figure 42 - Menu contextuel suite un clique droit sur le VELO_REPEATER_0

b) Cration de ports
Sur le formulaire de cration de composant(s) figure un bouton Create/Modify ports qui permet dafficher un second formulaire pour crer de nouveaux ports. Les ports cres ainsi seront dupliqus autant de fois quil y aura de composants crer.

- 47 -

ISIMA 2007

CERN

Figure 43 - Formulaire de cration de ports Le formulaire de cration de ports comporte un tableau avec tous les ports dj disponibles pour le composant slectionn. Il est ensuite possible dajouter ou de retirer des entres cette liste. Pour chaque port il est obligatoire de dfinir un numro de port qui soit infrieur au nombre maximum dfini pour le composant ainsi quun sens pour le port (port de sortie ou dentre). Les autres champs sont optionnels saufs dans certain cas bien prcis. Par exemple les champs relatifs au cot rseaux (adresse MAC, IP, Masque du rseau) deviennent obligatoires dans le cas ou nos composants appartiennent au systme dacquisition de donnes (DAQ).

c) Cration de connexions
Pour connecter deux composants diffrents, il faut dabord sarranger pour avoir les deux composants sur la zone de visualisation en mme temps. Pour cela laction Keep Visible du menu contextuel peut tre utilise. En effet, une fois applique un composant cette action permet de le rafficher la prochaine quon choisira un nouveau composant qui devra tre celui avec lequel on veut crer la connexion. - 48 -

ISIMA 2007

CERN

Lutilisateur doit ensuite activer le mode de cration de lien qui se trouve dans la barre doutils et qui est reprsent par licone suivante : Dans ce mode lutilisateur ne peut plus dplacer les composants de la zone de visualisation, mais il lui est possible de tracer une ligne entre deux composants. Quand cela est fait, une nouvelle fentre apparait contenant les informations concernant la connexion crer entre les deux composants slectionns.

Figure 44 - Formulaire de cration de connexion

La figure ci-dessus reprsente le formulaire pour crer une connexion entre les deux composants : RICH1_L1FE_01_01 et mon_composant_23. Lapplication dtermine pour chaque composant la liste de ses ports libres. Si un des composants ne dispose daucun port libre il suffit donc de cliquer sur le signe plus se trouvant cot de la liste des ports pour rafficher le formulaire de cration de ports dcrit prcdemment. Le bouton Swap input and Output permet dinverser la position des deux composants connecter. Lutilisateur devra aussi dfinir le type de connexion crer (simple association, conduite de gaz, transport de donnes ). - 49 -

ISIMA 2007

CERN

d) Exportation des donnes dans un fichier


Lutilisateur a aussi la possibilit dexporter les modifications apporter la base de donnes sous forme dun script python quil pourra excuter en dehors de lapplication. Cette option peut savrer utile pour dupliquer plusieurs fois la mme structure. En effet, CDBVis ne permet de crer que des connexions individuelles, c'est--dire relier deux composants seulement chaque fois. On pourrait donc crer la structure voulue une premire fois en utilisant les outils de dessins et ensuite exporter la structure obtenue sous forme dun script python. Lutilisateur pourra ensuite copier/coller les lignes de codes correspondants sa structures autant de fois quil veut avant dexcuter le script. En annexe figure un exemple de code gnr par CDBVis.

e) Cration partir dun fichier


Pour la linsertion dune grande quantit de donnes il peut tre utile de pouvoir importer les donnes partir dun fichier texte ou XML. En effet, insrer les donnes dun systme en utilisant linterface graphique de CDBVis peut prendre beaucoup de temps, ceci nest pas dailleurs lobjectif de lapplication dont le but principale est de visualiser les composants et permettre dapporter de petites modifications leurs informations. Toutefois, lapplication permet dimporter des fichiers de donnes formates dune manire spcifique pour les transformer en objets qui pourront ensuite tre exports dans un script Python qui permettra de valider les changements vers la base de donnes. Dans le cas des fichiers texte, chaque ligne du fichier import correspond une entre dans la base de donnes. Une ligne du fichier est compose par un ensemble dattributs spars par une barre verticale. Chaque attributs contient trois valeurs spares par des : , la premire valeur correspond au nom de lattribut, la deuxime reprsente la valeur que va prendre cette attribut et la dernire valeur correspond au type de donnes ( s pour chaine de caractres, i pour un entier et w sil sagit dune couleur). La figure suivante reprsente une ligne du fichier importer qui correspond lajout dun nouveau composant de type FEE et qui porte le nom de FEE_MUON_7. Datatype:Device:s|system_name:MUON,DAQ:s|devicename:FEE_M UON_7:s|responsible::s|node:False:i|save_status:CREATE:i|hwt ype::s|devicetype:FEE:s|deviceid::s|serialnb::s|modify_statu s:NO_STATUS:i|user_comments::s|location::s| Figure - Ligne dun fichier importer qui correspond la cration dun nouveau composant Chacune des lignes doit commencer par lattribut Datatype qui permet de spcifier le type dentre ajouter parmi les trois types possibles (composant, port, connexion). - 50 -

ISIMA 2007

CERN

En annexe figure un descriptif plus dtaill des diffrents attributs possibles pour chaque type de donnes pour lajout dun type de composant.

- 51 -

ISIMA 2007

CERN

Conclusion
Lobjectif principal de mon stage a t atteint. Le portage vers Qt sest bien opr et une version de lapplication tournant entirement sur Qt est disponible en tlchargement sur la page web ddie au projet sur le site du LHCb. La ralisation de ce projet na pas t sans difficults surtout au dbut, car il fallait avoir une bonne connaissance des deux bibliothques wxPython et Qt pour pouvoir passer de lune lautre. De plus la, la version de lapplication quil y avait en place et sur laquelle je devais me baser pour le portage connaissait pas mal de problmes. En effet, plusieurs modifications y ont t apportes et ont t lorigine dun grand nombre de bugs quil a fallu corriger tout en effectuant le portage vers Qt. Toutefois, et avec laide des personnes de lquipe Online, jai pu mener bien ce projet qui ma permis entre autres dacqurir de nouvelles connaissances et de me confronter une situation relle ou il fallait prendre en compte pas mal de contraintes, ce qui a t trs formateur pour moi. Cependant le travail nest toujours pas fini et il reste pas mal de choses faire pour amliorer loutil CDBVis. Les prochaines tapes importantes pour lapplication seraient damliorer la librairie CIC DB Lib pour diminuer les temps dattente ainsi que dintgrer la connectivit microscopique des composants pour quelle puisse tre visualise dans CDBVis. Il faut aussi se mettre en contact directe avec les utilisateurs de lapplication pour pouvoir mieux ladapter leur besoins. A cet effet, Eric van Herwijnen et moi avons rencontr plusieurs reprises des personnes du dtecteur VELO pendant la dernire priode de mon stage. Une prsentation de la CIC DB et de loutil CDBVis a aussi t faite pendant la runion du groupe du VELO du 10 aout 2007. Cette collaboration a permit de faire connaitre un peu plus lditeur auprs de ses utilisateurs et de rpondre aussi certains de leur besoins comme a a t le cas pour lajout dune adresse web pour chaque composant ce qui a permit de relier la base de donnes de tests situe a Liverpool la CIC DB. Ce stage ma aussi beaucoup apport au niveau personnel. En effet, jai eu loccasion de damliorer mes comptences de communication ainsi que de dvelopper ma culture scientifique au travers des confrences auxquelles jai pu assister.

- 52 -

ISIMA 2007

CERN

Rfrences bibliographiques
Thomas Johansen, LHCB Configuration Database Visualizer, Technical Note, septembre 2006. Lana Abadie, An autonomic approach to configure HEP (High Energy Physics) experiments, applied to LHCb (Large Hadron Collider beauty), Octobre 2006. Robert_Shade, Populating the VELO Connectivity Database, 2006.

- 53 -

ISIMA 2007

CERN

Annexes

- 54 -

Annexe I Installation
1. Program requirements
The program was developed and tested using the following versions of external software/libraries: Requirements The program should in theory run smoothly with: Python 2.4 Qt 3 ConfDB Library version >3.5 (AFS Client so that the Boost library can be found on the CERN network.) Python 2.4 is used due to compatibility issues with the ConfDB Library Python wrapper.

2. Installing on Windows (NICE)


2.1 Installing Python
You can find the recommended stable versions of Python here: http://www.python.org/download/. To check the version of Python you are running, run the following command on the command line: python -V If you get command not found, Python is not installed on your system. For Windows you will need Python version 2.4, due to compatibility issues with ConfDBLibrary. It is possible to run two or several versions of Python in parallel, but not recommended unless you know what you're doing. You then download the Python executable from the website, and execute the *.msi or *.exe file to install it. Choose a directory to install it in, and remember this directory. You will have to add the path to the directory to the Path environment variable. This is done by right-click My Computer on your desktop, choose properties, choose the advanced tab and click on the button that says Environment Variables. In the system variable window, you look for the Path variable, choose to edit, and add the path to the directory where you installed Python at the back of the string. If the string that was already set for the path did not end with a ; (semicolon), you will have to add that to the string before you add (append) your new path. Click Ok all the way back, to close the windows. You will have to close all open I

command line windows to make the change take effect (but in some cases you will have to log off and on again). To check if Python was successfully installed, open a new command line window, and run python V again to see that your python executable echoes the new version number. If the version number is incorrect it is most likely because you have another version of Python installed on your system that is executed instead. To deal with this; change the name of one of the Python executables (found in the Python root directory), and execute the command: <name_of_my_python_executable> -V To see that it is the correct version. Now you will have to use this name instead of Python when you are running python scripts.

2.2. Installing Qt 3
Due to compatibility issues with ConfDBLibrary we cannot use Python 2.5. While Qt 4 can only be used with python 2.5 we are bounded to use Qt v3. Qt is available in a free edition for WINDOWS only since the version 4. So we will use a native win32 port of the Qt/x11 (under GPL) sources which use native win32 api and does not require cygwin. The installation instructions for Qt are available on this page: http://qtwin.sourceforge.net/qt3-win32/index.php In this page you will have to choose how you would compile the Qt sources (using MinGW or MS Visual Studio ) then you will find the corresponding instructions. We have installed Qt using MinGW and we have not encountered any problem compiling the sources. You are also recommended to download the documentation and Qt demos from the same webpage.

2.3. Installing PyQt


Qt is a C++ library and we cannot use it directly with python. You will need to Install PyQt which is a set of Python bindings for Trolltech's Qt application. Before you can build PyQt from source you must have already built and installed SIP which is a tool that makes it easy to create Python bindings for C++. Instructions to install SIP then PyQt are available on this page: http://kscraft.sourceforge.net/pyqt-windows-install.xhtml You can find documentation about SIP and PyQt on: http://www.riverbankcomputing.co.uk

2.4. Installing CdbVis


This will be downloadable from the web in a zip file to be extracted to an arbitrary directory on the user's hard drive. II

2.5. Installing Oracle Instant Client 10g


This library is needed for the Oracle database connection used by ConfDB library. Installation instructions for Windows can be found here: http://lhcbonline.web.cern.ch/lhcb-online/configurationdb/APIusage.htm 2.5 Installing ConfDB library This is the library used by CdbVis to communicate with the ConfDB. Download the Python Interface library for Windows from: http://lhcbonline.web.cern.ch/lhcb-online/configurationdb/APIusage.htm. The two *.dll and the two *.lib files should be extracted to the installation directory of CdbVis. 2.6 Installing Python modules You will need to install the cx_Oracle module that allows access to Oracle databases. The confDB library already access to the database but we need the cx_Oracle module to do some actions on the database which are not yet included in the API (dealing with the URL table). Installation instructions are available on this page: http://www.python.net/crew/atuining/cx_Oracle/ For WINDOWS you just have to download and execute the latest release of the installer for Python 2.4.

3 Testing Installation
If CdbVis is not working after you have installed all of its dependencies, here are some tests you should do to see what that fails. To make it easier to debug possible errors, we take one step at a time.

3.1 Test Python


Run the following command: Python You'll enter Python Shell, type: print hello world and press enter. If it echoes hello world back to you, then it works. Press Ctrl-Z to exit the shell.

3.2 Test Qt:


Run Python then enter: Import qt If this command succeeds without any error you have installed successfully Qt. otherwise try to install qt again.

3.3 Test CdbVis


III

Go to the directory where you installed CdbVis and run the command: python main.py If it runs, you have done things correct so far, the ConfDB library files have been found as well. If it fails, it is probably because the ConfDB library files were not found, see through the installation of the ConfDB library as described above to see if you missed something. If *.py files is associated with Python you can actually just double-click on main.py and it will start. (If the *.py files have a icon of a python snake).

3.4 Test ConfDB Connection


Once you have started CdbVis, click on the button which shows a lightning, or choose from the menu: File > Connect, to connect to the ConfDB. If it fails, the error will probably be reported either through CdbVis, or in the command line shell window. Errors here should be directed to Lana Abadie, who can most likely tell you why the database connection failed, and help you out.

IV

Annexe II
Exemple de code gnr par CDBVis pour insrer un composant dans la base de donnes : ################################################# # AUTOGENERATED PYTHON CODE # # BY CDBVIS # ################################################# # Edit the following : databasename="Your_DB_Name" username="Username" password="Password" from confDBpython import * import cx_Oracle cfDB = CONFDB(databasename,username,password) cfDB.DBConnexion() oracle = cx_Oracle.connect( username + '/' + password databasename) cfDB2 = oracle.cursor() + '@' +

cfDB.InsertFunctionalDevice("RICH1","newdevice","switchs",0,1,"sd fgfgdf","","","","","none",1) cfDB.DBDeconnexion() oracle.commit()

Annexe III
Description des attributs renseigner pour le type de composants dans le fichier dinsertion de masse : Nom de lattribut Datatype system_nam e save_status Exemple de valeur DeviceType MUON,VELO CREATE
Type de donne s

Optionnel / Obligatoire REQUIRED REQUIRED REQUIRED

Commentaire Identifie les types de composant Noms des sous systmes spas par des virgules. CREATE, MODIFY or RENAME. Pour dire si le lobjet doit tre cr, modifi ou supprim. Description du type de composant Couleur du type de composant Obligatoire si on veut modifier ou renommer un composant dj existant dans la base de donnes Nom du type de composant Ancien nom du type de composant si celui on veut le renommer Nombre de ports de sortie Nombre de ports dentre

s s i

description rgbcolor devicetypeid

(255, 0, 0) 1

s w i

OPTIONAL REQUIRED OPT/RE

devicetype old_name

FEE FE

s s

REQUIRED OPTIONAL

nbrofoutput nbrofinput

3 4

i i

REQUIRED REQUIRED

VI

Vous aimerez peut-être aussi