a.f. barfussréunion de groupe - 31/03/20061 commencer une analyse sur caf didacticiels et aide...
TRANSCRIPT
A.F. Barfuss Réunion de groupe - 31/03/2006
1
Commencer une analyse sur Commencer une analyse sur CAFCAF
• Didacticiels et aide
• Framework : CAF, CAFE, etc.
• Installation
• Outils : fichier de configuration
• Ecrire son processeur
• Output et histogrammes
• Batch
A.F. Barfuss Réunion de groupe - 31/03/2006
2
• Page d’accueil de CAF : http://www-d0.fnal.gov/Run2Physics/cs/caf/
• Le didacticiel complet : http://www-d0.fnal.gov/Run2Physics/cs/caf/docs/Tutorial-Vancouver.pdf
• Un didacticiel sommaire sur les outils de base de CAF :http://www-d0.fnal.gov/Run2Physics/cs/caf/docs/tutorial_CAFTools.pdf
• Production de CAF trees : http://www-d0.fnal.gov/Run2Physics/cs/howto/tmb_analyze/TMBAnalyze.html
• Mailing list : [email protected] archives : http://listserv.fnal.gov/archives/d0-caf-users.html
Didacticiels et aide
A.F. Barfuss Réunion de groupe - 31/03/2006
3
CAF ? CAFE ?…
CAF = Common Analysis Format.Structure arborescente ROOTesque. Voir structure :
http://www-d0.fnal.gov/Run2Physics/working_group/data_format/caf/
CAFe est le framework pour l’analyse. Ses fonctionnalités de base permettent l’analyse des
CAF trees (packages cafe, cafe_sam). http://www-d0.fnal.gov/d0dist/dist/packages/cafe/devel/doc/UserGuide.html
CAF UTILITIES est une boîte à outils standards pour réaliser les sélections courantes, appliquer des corrections à l’efficacité des MC,… (packages caf_util, caf_mc_util)
caf_tools contient des outils pour lancer des jobs en batch.
A.F. Barfuss Réunion de groupe - 31/03/2006
4
Installation> setup D0RunII p18.05.00 –O SRT_QUAL=maxopt *> setup d0cvs> setenv LINK_SHARED yes> newrel –t p18.05.00 myworkarea> cd myworkarea> d0setwa> set path = ($SRT_PRIVATE_CONTEXT/shbin/$SRT_SUBDIR $path)> addpkg… (Voir http://www-d0.fnal.gov/Run2Physics/cs/caf/Packages.html) S’ils ne figurent pas sur la page web : (voir
/D0/users/barfuss/180500WA/<pkg>/CVS/Tag)
> addpkg cafe> addpkg tmb_tree
> gmake (Message à ignorer : ERROR: multiply defined symbol: _moddi3…)
> cp caf_util/configs/test.config . > cp emid_cuts/support/emid_cuts.txt .> ./test.config
* Pour données p17.09.01(3), CAF p18.03(5).00
En rouge, à saisir à chaque fois
A.F. Barfuss Réunion de groupe - 31/03/2006
5
Pas de recompilation, un enregistrement suffit !
Ligne d’exécution ordonnée des processeurs (petite liste page 16)
Déclaration ordonnée des packages utilisés Spécifications pour chaque processeur (e.g. nombre d’e…) Lecture partielle des branches (gain de temps sensible) Déclaration des histogrammes (nom, binning,…) Organisation des fichiers et branches d’output (rootuples)
contenant les objets sélectionnés Traitement possible d’une liste de fichiers ou d’un SAM
dataset
CAFe gère la boucle sur tous les événements.
Fichier de configuration
A.F. Barfuss Réunion de groupe - 31/03/2006
6
Fichier de configuration (suite)
1. Configuration généraleVoir exemple p. 17
2. Sélecteurs d’objets : outils pour appliquer les critères de sélection classiques (nombre min, max, pT, JES, tri…)
Voir exemple p.18
3. Outils de qualité des données : fichiers contenant les mauvais runs et LBN pour le calo, le SMT, le CFT et les muons
Voir exemple p.19
4. Efficacité des coupures et statistiquesVoir exemple p.20
5. Création d’histogrammes et écriture du fichier skim.root
Voir exemple p.21
A.F. Barfuss Réunion de groupe - 31/03/2006
7
Ecrire son propre processeur
• Les sélecteurs et autres outils inclus dans les packages conviennent à une analyse standard.
• Mais il devient rapidement nécessaire d’étendre les fonctionnalités de ces processeurs pour un usage plus personnalisé.
• On peut toujours améliorer le code existant. Mais se pose alors le problème de la compatibilité au passage de version…
Ecrire son propre processeur est donc la solution la
plus flexible et la plus adaptée à l’analyse.
A.F. Barfuss Réunion de groupe - 31/03/2006
8
Ecrire son propre processeur (suite)
• Il existe 2 types de processeurs : – ceux qui produisent des histos et qui doivent obligatoirement renvoyer “true”– ceux effectuant des coupures qui renvoient “true” pour garder l’événement ou “false” pour le rejeter
• Ils contiennent config.get pour récupérer les paramètres dans le fichier de configuration
• Ce qu’il faut faire pour qu’un nouveau processeur soit utilisable :
– dans pkg/scripts/rootrc, +Plugin.Processor: myProc pkg::myProc…– ajouter son processeur à la liste des pkg/src/COMPONENTS
Note : on peut aussi écrire son propre package, auquel cas il faut le lier dans include/, recompiler et l’appeler dans test.config (cafe.Packages: …)
A.F. Barfuss Réunion de groupe - 31/03/2006
9
Ecrire son propre processeur (suite)
Un exemple de package “fait maison” (Samuel) à Lyon :/afs/in2p3.fr/home/s/scalvet/public/Btagging_p18.05.00/mypackage
• Exemple d’un processeur qui fait des coupures : AngleSelector constructeur : AngleSelector(const char *name); où “name”
est le nom donné au processeur dans test.config.
On y récupère aussi les paramètres fixés par test.config :_DeltaPhiMIN_JETMET_sup = config.get(“DeltaPhiMIN_JETMET_sup”,
180.);
180 est la valeur par défaut de _DeltaPhiMIN_JETMET_sup.
pour récupérer une branche : _jetBranch = config.get(“jetBranch”,
“JCCB”);
processEvent récupère les objets (pointeur ou Collection<TMB…
>)
true or false? une fois les objets récupérés, coupures et T ou F.
A.F. Barfuss Réunion de groupe - 31/03/2006
10
Output et histogrammes
• Output : rootuple contenant les objets sélectionnés
• Histogrammes éventuellement dans un .root séparé cafe.Output: histos.root
• Comment traiter le résultat sous root :
> autoroot.py tmb_tree cafe
> root skim.root histos.root (ou, si ça ne marche pas :
> $SRT_PUBLIC_CONTEXT/tmb_tree/tmb_tree/scripts/autoroot.py tmb_tree
cafe)
% TBrowser…
A.F. Barfuss Réunion de groupe - 31/03/2006
11
Batch
Tutorial complet p. 54 – 57> setup caf_tools> runcafe –h …
Exemples à partir de myworkarea : > runcafe -clued0 --test.config> runcafe -cabsrv1 -outdir=/work/host/scratch --test.config> runcafe -cabsrv2 -def=caf_test_1 --test.config> runcafe -clued0 -tar=/path/my.tar.gz --test.config> …
Temps d’exécution
BACK UP
A.F. Barfuss Réunion de groupe - 31/03/2006
13
• Pour utiliser des fichiers sur HPSS :
cafe.Input: stageinlist: mylist.list
cafe.Stager: /afs/in2p3.fr/home/throng/d0/scripts/D0rfcp
(cafe.StagingDirectory: .)
Chaque fichier est alors copié sur le worker avant d’être ouvert puis effacé lorsqu’il est fermé.
Prévoir de l’espace scratch pour le job !
HPSS
A.F. Barfuss Réunion de groupe - 31/03/2006
14
Triggers
Quels triggers pour mon état final ?
https://plone4.fnal.gov/P1/D0Wiki/tsg/caftrigger/
A.F. Barfuss Réunion de groupe - 31/03/2006
15
Calcul de luminosité
Avec l’outil lm_tools> setup lm_tools > getLuminosity source [flags] [options] [input files]
lm_tools documentation: getLuminosity http://www-d0.fnal.gov/d0dist/dist/packages/lm_tools/devel/doc/
Avec l’outil lm_access> addpkg -h lm_access > gmake lm_access
Si erreur à la compilation concernant lm_access_interface, ajouter aussi ce package dans myworkarea (addpkg -h lm_access_interface).Pour l’exécuter, il est également nécessaire de faire setup d0_config.
Access Luminosity information:http://www-d0.fnal.gov/phys_id/luminosity/data_access/
Liste de quelques processeurs
Retour
Package Processeur Fonction cafe.Run: Utilisation
caf_util
*SelectorSélecteurs d’objets
(* = Electron, Muon, Jet, MET, Vertex,…)
JetSelector (myjet)
myjet.From: JCCBmyjet.pT: 25.
CafeDataQualityProcessor
Supprime les evts bruitésCafeDataQualityProcessor(mydq
)mydq.dqdef: filedq.dqdef
ApplyJESApplique les corrections JES
à une liste de jetsApplyJES(myjes)
myjes.Tree: OutputTreeNamemyjes.doJESMU: false
cafe
ForkExécute les processeurs en
parallèleFork(myfork)
myfork.Run: Group(gr1) Group(gr2)
GroupExécute tous ses proc. fils en
séquence jusqu’à un falseGroup(gr1)
gr1: JetSelector(myjet) Hist1D(h)
Hist*D Trace des histos *=1, 2,3 Hist1D(jetpT)jetpT.Bins: 100, 0., 100.jetpT.Draw:selectedJets.pT
StatCollecte les stats des
sélections et affiche les efficacités
Stat(eff)eff.Output: testeff.Update: 1000
Trigger Sélectionne les evts triggésTrigger(DiEMEvt
s)DiEMEvts.Triggers: 2EM_HI
Write Ecrit les fichiers d’output Write(skim) skim.File: skim.root
PassedAffiche le nombre d’evts qui
ont passé la coupure.Passed
cafe.Run: EventFlags(myFlags) PassedPages web : http://www-d0.fnal.gov/d0dist/dist/packages/<pkg>/devel/doc/html/index.html
Commanded’exécution
Déclarationdes packages
Configuration générale
Retour
# commentaire
Prenons l’exemple des jets :
Sélecteurs d’objets
Retour
Il existe des fichiers contenant les bad LBN et bad runs pour tous les sous-systèmes :
Cependant, on peut les utiliser séparément :
Outils de qualité des données
Retour
Outil de calcul de l’efficacité :
L’output est un fichier html :
Efficacité
Retour
Méthodes plutôt intuitives… :
Création d’histogrammes
Écriture du fichier
Retour
Batch
> runcafe [ options ] [ -- arguments ]Runcafe
-help|-h|--help print this help
-dest=<CLUSTER>submit job to destination [ required ]currently: clued0, cabsrv1, cabsrv2
-clued0 shortcut for -dest=clued0
-cabsrv1 shortcut for -dest=cabsrv1
-cabsrv2 shortcut for -dest=cabsrv2
-def=<DEFINITION> SAM dataset definition [ default: “” ]
-filelist=<LISTFILE.LST> File with filename list [ default: “” ]
-project=<NAME> SAM project name [ default: rhauser_[date] ]
-jobs=<NUMBER> number of parallel SAM jobs [ default: 1 ]
-exec=<EXECUTABLE> name of executable [ default: cafe ]
-name=<NAME> name of job in batch system [ default: run_jobs.sh ]
-outhost=<HOSTNAME> name of output host [ default: hostname ]
-outdir=<DIRECTORY> name of output directory [ default: pwd ]
-outfiles='...' list of files/directories to copy back as result
-inputdir=<DIRECTORY> name of input directory [ default: pwd ]
-tar=<TARFILE.tar.gz> alternative .tar.gz file for input directory
-infiles='...' list of input files/directories to copy in
-queue=<QUEUE> name of queue in batch system
-debug print out debug statements of script
All command line parameter after the -- are assumed to be arguments to the executable runcafe
Temps d’exécution
Batch
Question : dois-je faire un sous-skim des événements EM1TRK ?
– terminaux 3GHz sélectionnent les runs par flags à ~8kHz– sélection par triggers à ~6kHz– sélection par expression arbitraire 500 à 1kHz
Le conseil de Slava : “Au lieu de vous embêter à faire des sous-skims géants, utilisez vos critères spécifiques et n’écrivez que les événements qui vous intéressent.”