= Soumission d'un job d'analyse athena/DQ2 avec GANGA = [[PageOutline]] Ce tutoriel décrit comment executer un job d'analyse en utilisant: * GANGA * Le software d'ATLAS athena * Un package d'analyse à compiler (Merci à Annick Lleres). * Des fichiers de dataset obtenus avec DQ2. Pour lancer un job, vous avez besoin d'un fichier * '''L'archive du package''' package.tgz contenant le package d'analyse à compiler.[[BR]] Le package fourni exécute produit des DPD à partir d'AOD. * '''gangaScript''' qui est le fichier qui contient la séries d'instructions à executer sous GANGA pour lancer le job. (à adapter selon votre cas) == Prérequis == * Installez et configurez GANGA. * [wiki:setupAthenaGeneric Préparer votre environnement] comme pour un job à lancer en local (cmthome, testarea...) * Décompressez le package fourni sous testarea puis initialiser le (après l'avoir éventuellement compilé) {{{ sh-3.00$ cp package.tar.gz testarea/14.2.20/package.tar.gz sh-3.00$ cd testarea/14.2.20/ sh-3.00$ tar -xvzf package.tar.gz ... sh-3.00$ ls TopAnalysis TopAnalysis.tgz sh-3.00$ cd testarea/14.2.20/TopAnalysis/cmt/ sh-3.00$ cmt config sh-3.00$ source setup.sh sh-3.00$ gmake }}} == Lancer Ganga == Pour les utilisations suivantes de GANGA avec ce package vous pouvez commencer directement d'ici. ==== Initialisation de l'environnement CMT ==== {{{ sh-3.00$ source /swareas/atls/prod/releases/rel_14-4/CMT/v1r20p20080222/mgr/setup.sh }}} ==== Le fichier joboptions ==== {{{ sh-3.00$ cd testarea/14.2.20/TopAnalysis/run/ sh-3.00$ ls PoolFileCatalog.xml PoolFileCatalog.xml.BAK RunTopAnalysisDPD.py TopAnalysisDPD.py }}} Placez vous dans le répertoire run. Vous devez y trouver les fichiers joboptions !RunTopAnalysisDPD.py et !TopAnalysisDPD.py [[BR]] Le fichier RunTopAnalysisDPD.py inclus le fichier TopAnalysisDPD.py, vous devrez préciser ceci à GANGA enrenseignant le paramètre "inputsandbox"[[BR]] Deux lignes sont importantes dans le fichier !RunTopAnalysisDPD pour GANGA: {{{ InputCollections = [ "AOD.pool.root" ] OutputFileName = "TopAnalysisDPD.root" }}} Lors de la soumission du job, GANGA va analyser le fichier de joboptions et initialiser: [[BR]] !InputCollections avec les bonnes valeurs (la liste des fichiers d'un dataset à analyser) [[BR]] !OutputFileName en ajoutant une numérotation automatique à TopAnalysisDPD.root si plusieurs fichiers sont produits. ==== Initialisation de l'environnement d'exécution dans GANGA ==== {{{ sh-3.00$ ganga Enter GRID pass phrase: Your identity: /O=GRID-FR/C=FR/O=CNRS/OU=LPSC/CN=Fabian Lambert Creating temporary proxy ....................................... Done Contacting lcg-voms.cern.ch:15001 [/DC=ch/DC=cern/OU=computers/CN=lcg-voms.cern.ch] "atlas" Done Creating proxy ................................................ Done Your proxy is valid until Tue Oct 28 14:29:49 2008 *** Welcome to Ganga *** Version: Ganga-5-0-10 Documentation and support: http://cern.ch/ganga Type help() or help('index') for online help. This is free software (GPL), and you are welcome to redistribute it under certain conditions; type license() for details. ATLAS Distributed Analysis Support is provided by the "Distributed Analysis Help" HyperNews forum. You can find the forum at https://hypernews.cern.ch/HyperNews/Atlas/get/distAnalysisHelp.html or you can send an email to hn-atlas-dist-analysis-help@cern.ch GangaAtlas : INFO Tasks read from file Ganga.GPIDev.Lib.JobRegistry : INFO Found 1 jobs in "jobs", completed in 0 seconds Ganga.GPIDev.Lib.JobRegistry : INFO Found 0 jobs in "templates", completed in 0 seconds In [1]:cmtsetup 14.2.20,setup,32 GangaAtlas : INFO CMTCONFIG = i686-slc4-gcc34-opt GangaAtlas : INFO CMTPATH = /atlas/lambert/testarea GangaAtlas : INFO CMTPATH = /swareas/atls/prod/releases/rel_14-4/AtlasOffline/14.2.20 In [2]:setup GangaAtlas : INFO Package TopAnalysis has been configured. }}} ==== Lancer le job ==== Pour lancer votre job vous pouvez choisir de taper une a une les instructions que vous avez dans gangascript, ou faire un copier/coller de ces instructions afin que GANGA les lance en une fois. Pensez à adapter ce fichier à votre cas. {{{ In [3]:j = Job() In [4]:j.application=Athena() In [5]:j.application.prepare(athena_compile=True) In [6]:j.application.option_file="$HOME/testarea/14.2.20/TopAnalysis/run/RunTopAnalysisDPD.py" In [7]:j.inputsandbox=['TopAnalysisDPD.py'] In [8]:j.application.max_events=100 In [9]:j.inputdata=DQ2Dataset() In [10]:j.inputdata.dataset="fdr08_run2.0052280.physics_Egamma.merge.AOD.o3_f8_m10" In [11]:j.outputdata=DQ2OutputDataset() In [12]:j.outputdata.outputdata=['TopAnalysisDPD.root'] In [13]:j.splitter=DQ2JobSplitter() In [14]:j.splitter.numsubjobs=6 In [15]:j.splitter.numfiles=1 In [16]:j.merger=AthenaOutputMerger() In [17]:j.backend=LCG() In [18]:j.backend.requirements=AtlasLCGRequirements() In [19]:j.backend.requirements.sites=['IN2P3-LPSC_DATADISK'] In [20]:j.submit() }}} Cette suite d'instructions mérite quelques explications : * Ligne 3 : Définition d'un objet job * Ligne 4 : Nous allons utiliser athena * Ligne 5 : Le package sera compilé sur le WN * Ligne 6 : Emplacement du fichier joboptions * Ligne 7 : Le fichier TopAnalysisDPD.py est inclus dans RunTopAnalysisDPD.py, il est déclaré dans la inputsandbox. * Ligne 8 : On limite le nombre d'event a 100 par jobs pour ce test * Ligne 9 : Les données en entrées sont un dataset gérer par DQ2 * Ligne 10 : Le LDN de ce dataset est défini ici * Ligne 11 : Les données en sortie seront placées dans un dataset * Ligne 12 : Base du nom des fichiers dans le dataset de sortie (voir plus haut) * Ligne 13 : Création du gestionnaire qui va gérer le "splittage" du job en subjobs en fonction des fichiers présent dans le dataset en entrée. * Ligne 14 : Nombre de subjobs * Ligne 15 : Nombre de fichiers par subjobs * Ligne 16 : ... Sans objet ici * Ligne 17 : backend utilisé * Ligne 18 : Création de l'objet gestionnaire des requirements sur le backend. (Cela va permettre à GANGA de trouver l'endroit le plus approprié pour exécuter le job) * Ligne 19 : Les données doivent être prises sur ce site * Ligne 20 : Lancement du job ==== Récuperer les données ==== Au fur et à mesure du déroulement du job, vous pouvez suivre son état en tapant {{{ In [19]:jobs() }}} Quand le statut du job est completed (i.e. tous les subjobs sont completed) vous pouvez récupérer le dataset créer avec dq2-get {{{ sh-3.00$ dq2-list-dataset "userFL*" userFL08.FabianLambert.ganga.2.20081024 sh-3.00$ dq2-get userFL08.FabianLambert.ganga.2.20081024 Querying DQ2 central catalogues to resolve datasetname userFL08.FabianLambert.ganga.2.20081024 Datasets found: 1 userFL08.FabianLambert.ganga.2.20081024: Querying DQ2 central catalogues for replicas... Querying DQ2 central catalogues for files in dataset... userFL08.FabianLambert.ganga.2.20081024: Using site IN2P3-LPSC_USERDISK userFL08.FabianLambert.ganga.2.20081024: Querying local file catalogue of site IN2P3-LPSC_USERDISK... ... }}} Notez que conformément à ce qui a été défini dans .gangarc, les fichiers du dataset ont été stockés sur le space-token IN2P3-LPSC_USERDISK Pour choisir un autre space-token, il vous faut taper l'instruction suivante dans GANGA (?? pas sur de ça...) {{{ In [xx]: config['DQ2']['DQ2_LOCAL_SITE_ID']= "" }}} [wiki:tutoganga up]