La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Un outil pour découper les arbres ROOT

Présentations similaires


Présentation au sujet: "Un outil pour découper les arbres ROOT"— Transcription de la présentation:

1 Un outil pour découper les arbres ROOT
TSkim Un outil pour découper les arbres ROOT Subversion == SVN

2 Motivation De nombreuses expériences de physique stockent leurs données sous forme d’arbres ROOT. Une activité récurrente des chercheurs consiste à établir des critères pour définir quels événements physiques sont intéressants, et à extraire des fichiers ROOT 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 pour l’expérience FERMI, l'outil est à présent devenu suffisamment élaboré pour s’ouvrir à d'autres expériences.

3 Plan Présupposés sur l’organisation des données
Configuration et Entrées/Sorties de TSkim Détails sur les variables d’environnement et les fichiers de configuration Quelques détails d’implémentation. Perspectives et conclusions

4 Organisation des données
m_runId EvtRun m_runId m_eventId EvtEventId m_eventId 2 15 2 15 2 15

5 Config/Entrées/Sorties de TSkim
MetaData.txt LibraryList.txt BranchList.txt FileList.txt EventList.txt TSkim BeamTest_jobinfo.root BeamTest_merit.root BeamTest_digi.root BeamTest_X.root BeamTest_X.root libBeamTestDigi.so

6 Exemple de job csh> setenv ROOTSYS /…/v5.18.00c/root
csh> setenv TS_META_DATA .../MetaData.txt csh> setenv TS_INPUT_LIBRARY_LIST .../LibraryList.txt csh> setenv TS_INPUT_FILE_LIST .../FileList.txt csh> setenv TS_INPUT_BRANCH_LIST .../BranchList.txt csh> setenv TS_INPUT_EVENT_LIST .../EventList.txt csh> setenv TS_DATA_TYPES "merit:jobinfo:digi" csh> setenv TS_OUT_DIR $PWD csh> tskim setenv GLAST_TASK " … " setenv GLAST_RUN_MIN 0 setenv GLAST_RUN_MAX 9 setenv TS_TCUT_DATA_TYPE "merit" setenv TS_TCUT "ObfGamStatus>0"

7 Types de données #! SECTION MetaData (merit.treeName) MeritTuple
MetaData.txt #! SECTION MetaData (merit.treeName) MeritTuple (merit.runIdBranchName) EvtRun (merit.eventIdBranchName) EvtEventId (jobinfo.treeName) jobinfo (digi.treeName) Digi (digi.runIdBranchName) m_runId (digi.eventIdBranchName) m_eventId (digi.topBranchName) DigiEvent (digi.topBranchType) DigiEvent (digi.libName) libdigiRootData.so

8 Bibliothèques C++ précompilées
LibraryList.txt #! SECTION Libraries /nfs/u09/builds/rh9_gcc32/Beamtest/v3r0907p0/libcommon.so (mc)/nfs/u09/builds/rh9_gcc32/Beamtest/v3r0907p0/libmc.so (digi)/nfs/u09/builds/rh9_gcc32/Beamtest/v3r0907p0/libdigi.so (recon)/nfs/u09/builds/rh9_gcc32/Beamtest/v3r0907p0/librecon.so TS_LIB_DIRS = /nfs/u09/builds/rh9_gcc32/ : … : … TS_LIB_DIR = Beamtest/v3r0907p0 Pour Fermi, mécanisme de détection automatique de la version à partir d’un objet « entête » stocké dans tous les fichiers.

9 Fichiers ROOT d’entrée
FileList.txt #! SECTION Files (merit:jobinfo)/nfs/u35/MC-tasks/BeamTest-10_0000_merit.root (merit:jobinfo)/nfs/u35/MC-tasks/BeamTest-10_0001_merit.root (merit:jobinfo)… (merit:jobinfo)/nfs/u35/MC-tasks/BeamTest-10_0008_merit.root (merit:jobinfo)/nfs/u35/MC-tasks/BeamTest-10_0009_merit.root (digi)/nfs/u35/MC-tasks/BeamTest-10_0000_digi.root (digi)/nfs/u35/MC-tasks/BeamTest-10_0001_digi.root (digi)… (digi)/nfs/u35/MC-tasks/BeamTest-10_0008_digi.root (digi)/nfs/u35/MC-tasks/BeamTest-10_0009_digi.root TS_DATA_DIRS = … : … : … root://… FERMI_TASK = BeamTest-10 FERMI_RUN_MIN = 0 FERMI_RUN_MAX = 9

10 Sélection des branches
BranchList.txt #! SECTION Branches (merit) -* (merit) +PtT* (merit) +Cal* (digi) +m_eventId (digi) +m_runId (digi) +m_acd (digi) -m_cal (digi) …

11 Sélection des évènements
EventList.txt #! SECTION Events #! 2000 entries in original dataset. #! 7 events after cut: 1 8 1 183 1 344 1 553 2 117 2 517 2 980 TS_TCUT = « TkrEnergy>200  » TS_TCUT_DATA_TYPE = merit En l’absence de TCUT et de liste d’évènements, TSkim fusionne les données.

12 Utilisation d’un fichier CEL
MetaData.txt LibraryList.txt BranchList.txt FileList.txt TCUT TSkim BeamTest_jobinfo.root BeamTest_merit.root BeamTest_digi.root BeamTest_X.root Je peux filer un fichier CEL à un collègue, pour qu’il travaille sur le même sous-ensemble d’évènements que moi. On est en train de faire converger les formats txt et le format cel. BeamTest.cel.root BeamTest_X.root libBeamTestDigi.so

13 Implémentation 1ère Couche en PERL : prépare les variables, attribue les valeurs par défaut, gère la rétro-compatibilité. 2ème Couche en C++ compilé (pour chaque version de ROOT) Ne lit que les branches utiles. Sélection le « Fast Merge » quand c’est approprié. Vérifie que les valeurs de Run/Event IDs sont compatibles avec les indexes ROOT. Outillage : Eclipse, Subversion, Trac, gmake, Oval. Code compilé à cause des limites de l’interpréteur ROOT => sur chaque site il faut précompiler TSkim pour toutes les versions de ROOT mises à disposition des utilisateurs.

14 Perspectives Appariemment des morçeaux d’événement en utilisant des “time-stamps”. Détection automatiquement des méta-données. Généraliser certaines fonctionnalités FERMI : Analyse automatique des fichiers de données pour établir la version des bibliothèques de description de données. Récupération des noms de fichiers d’entrée depuis une base de données. Gestion de l’évolution des méta-données. Amélioration du format CEL, fourniture d’une API et d’outils pour manipuler les fichiers CEL. Détection automatique des méta-données : dans des cas simples, façon hadd.

15 Conclusions En production pour FERMI.
Très récemment ouvert aux autres expériences. On recherche : De nouveaux utilisateurs hors FERMI. De nouveaux développeurs ?

16 Références


Télécharger ppt "Un outil pour découper les arbres ROOT"

Présentations similaires


Annonces Google