Setup athena At CERN
Tipos de Formatos disponibles.
*DPD: Derived Physics Data
Derivado de AOD es usado para el analisis final. 10 kB por evento.
Preparando la cuenta.
* Log in to lxplus escoja un pcatlas para trabajar; tiene desde pcatlas005 hasta el pcatlas008 (yo uso el pcatlas009)
* Cree un directorio de trabajo en su directorio home, por ejemplo:
cd /home/dmoreno
mkdir athena
mkdir athena/13.0.40
mkdir athena/13.0.40/AtlasProduction-13.0.40
mkdir athena/13.0.40/AtlasProduction-13.0.40/run
cd /home/dmoreno
mkdir cmthome
cd cmthome
*Listo.
Setup athena con 13.0.40 para usar las herramientas de analisis.
*Crear fichero llamado "requirements" en su directorio cmthome. Recomiendo usar como editor vi
vi requirements
*Puede usar como modelo el siguiente ejemplo, solo reemplace dmoreno, por su correspondiente username:
###### cmthome/requirement ######
set CMTSITE CERN
set SITEROOT /afs/cern.ch
macro ATLAS_DIST_AREA ${SITEROOT}/atlas/software/dist
# use optimised version by default
apply_tag opt
apply_tag runtime
# simple workarea directories
apply_tag simpleTest
apply_tag oneTest
apply_tag setup
apply_tag 32
# Set the location of your preferred development area
macro ATLAS_GROUP_AREA "/afs/cern.ch/atlas/groups/PAT/Tutorial/EventViewGroupArea/EVTags-13.0.40.2"
macro ATLAS_TEST_AREA /afs/cern.ch/user/d/dmoreno/home/dmoreno/athena/13.0.40
use AtlasLogin AtlasLogin-* $(ATLAS_DIST_AREA)
#################################################################
* Para crear la apropiada version del cmt para este release debe ejecutar en su directorio cmthome
source /afs/cern.ch/sw/contrib/CMT/v1r20p20070720/mgr/setup.sh
cmt config
*Como se cual es la version apropiada del cmt?
http://atlas-computing.web.cern.ch/atlas-computing/projects/releases/status/
*Para correr la configuracion haga:
source setup.sh -tag=13.0.40,groupArea
*Para ver que la cosa anda bien:
echo $CMTPATH
*La salida debe lucir como:
/home/dmoreno/athena/13.0.40:/afs/cern.ch/atlas/groups/PAT/Tutorial/EventViewGroupArea/EVTags-13.0.40.2/13.0.40:/afs/cern.ch/atlas/software/builds/AtlasOffline/13.0.40
Si la salida es correcta, podemos continuar. Ahora vamos a hacer el checking de unos paquetes de fisica de tops.
*Vaya a su directorio de trabajo.
cd /home/dmoreno/athena/13.0.30.4/AtlasProduction-13.0.30.4
Y ejecute las siguientes lineas:
*Cree la version del paquete
TopPhysTools:
cmt co -r TopPhysTools-13-00-40-06 PhysicsAnalysis/TopPhys/TopPhysTools
Ahora debe aparecer una carpeta llamada
PhysicsAnalysis donde estan las tools que se usan para hacer analisis.
*Vaya a
PhysicsAnalysis/TopPhys/TopPhysTools/cmt y compile el paquete usando:
cmt config
source setup .sh
cmt bro make
Esto puede demorar cierto tiempo, pero si la cosa va bien debe aparecer un mensaje de
all ok.
*Haga lo mismo para el paquete
TopPhysDPDMarker. Esto debe hacerlo en su /home/dmoreno/athena/13.0.40/AtlasProduction-13.0.40
cmt co -r TopPhysDPDMaker-00-00-10 PhysicsAnalysis/TopPhys/TopPhysDPDMaker
cd PhysicsAnalysis/TopPhys/TopPhysDPDMaker/cmt
cmt config
source setup .sh
cmt bro make
all ok?.
Creando un DPD.
En el paquete
TopPhysDPDMaker/share/ podremos encontrar la herramienta principal para crear los DPD's apartir de AOD's esta se llama
ElectroweakD2PD_jobOptions.py.
*La parte esencial del jo es:
#--------------------------------------------------------------
# Fun part (play around)
#--------------------------------------------------------------
# Skimming using lepton filter
from TopPhysDPDMaker.inclusive_lepFilterAlgorithm import *
filAlg=inclusive_lepFilterAlgorithm("inclusive_lepFilter")
filAlg.isEMmask=0x0
theApp.TopAlg += ["inclusive_lepFilter"]
StreamDPD.AcceptAlgs=["inclusive_lepFilter"]
# slim the contents of containers
include("TopPhysDPDMaker/D1PDSlimming_jobOptions.py")
# Primary DPD contents here, replace with whatever you want
include("TopPhysDPDMaker/D1PDItemList_jobOptions.py")
Aqui se define la principal caracteristica que hace los DPD's mas versatiles:
Skimming:
Es un filtro que se le impone a los eventos que van a ser escritos en el DPD. El codigo en Python que hace esto aparece en el paquete
TopPhysDPDMaker/python/inclusive_lepFilterAlgorithm.py. Si se requiere puede ser modificado para sus propios requerimientos de analasis.
Slimming:
Del AOD se seleccionan solo los containers que contengan objetos de interes. Esto se hace con el Job option
TopPhysDPDMaker/D1PDSlimming_jobOptions.py
Thinning:
De los containers seleccionados solo se pasa una fraccion al DPD. Para seleccionar la informacion del container esta el archivo
TopPhysDPDMaker/D1PDItemList_jobOptions.py. Si se desea adicionar cualquier otro objecto de un container se hace:
StreamDPD.ItemList += ['Nombre_del_Container#Objeto']
Ahora si a trabajar
*Vaya a su directorio run abra un archivo con el nombre que quiera, sugiero DPD.py
vi DPD.py
*Copie las siguientes lineas:
InputCollections = ['/afs/cern.ch/atlas/maxidisk/d66/AOD.019335._00001.pool.root.4']
outFileName = 'Your.D2PD.pool.root'
EvtMax=100
SkipEvents=0
include("TopPhysDPDMaker/ElectroweakD2PD_topOptions.py")
*Cambie el nombre de la salida segun su gusto, salvelo y corralo con athena:
athena DPD.py > mi_primer_dpd.log&
tail -f mi_primer_dpd.log
Si todo esta bien debe obtener una salida de la forma:
ApplicationMgr INFO Application Manager Finalized successfully
ApplicationMgr INFO Application Manager Terminated successfully
Py:Athena INFO leaving with code 0: "successful run"
Y en su directorio run el archivo
D2PD.pool.root
Para analizar el DPD construido en la seccion anterior vamos a usar
PyRoot que es basicamente es usar Root con la posibilidad de ejecutar macros en python.
Lo primero es cagar un script en python llamado test.py, el resto es mas o menos similar al trabajo con Root.
get_files test.py
*Ahora iniciemos la sesion en pyroot
python -i test.py
Veamos que hay en el arbol cargado:
>>tt.Print()
****************************************************************************************
*Tree :CollectionTree_trans: CollectionTree_trans *
*Entries : 97 : Total = 12545 bytes File Size = 0 *
* : : Tree compression factor = 1.00 *
****************************************************************************************
*Br 0 :McEventInfo : *
*Entries : 0 : Total Size= 484 bytes One basket in memory *
*Baskets : 0 : Basket Size= 100 bytes Compression= 1.00 *
*...........................................................................................................*
*Br 1 :ElectronAODCollection : *
*Entries : 0 : Total Size= 522 bytes One basket in memory *
*Baskets : 0 : Basket Size= 100 bytes Compression= 1.00 *
*..........................................................................................................*
*Br 2 :PhotonAODCollection : *
*Entries : 0 : Total Size= 514 bytes One basket in memory *
*Baskets : 0 : Basket Size= 100 bytes Compression= 1.00 *
*......................................................................................................... *
*Br 3 :VxPrimaryCandidate : *
*Entries : 0 : Total Size= 507 bytes One basket in memory *
*Baskets : 0 : Basket Size= 100 bytes Compression= 1.00 *
*..........................................................................................................*
*Ahora miremos como es la variable phi para el contenedor de electrones:
>>> tt.Scan('ElectronAODCollection.phi()')
***********************************
* Row * Instance * ElectronA *
***********************************
* 0 * 0 * -2.447267 *
* 0 * 1 * -0.930943 *
* 0 * 2 * -0.927760 *
* 0 * 3 * 0.2695070 *
* 0 * 4 * 1.4604262 *
* 0 * 5 * -2.620200 *
* 0 * 6 * 1.5997855 *
* 0 * 7 * -0.866306 *
* 1 * 0 * -1.917529 *
* 2 * 0 * -2.654615 *
* 2 * 1 * 0.5958873 *
* 2 * 2 * 1.9409417 *
* 3 * 0 * 2.5096593 *
* 3 * 1 * 2.3511901 *
* 4 * 0 * -2.055856 *
* 4 * 1 * -1.785498 *
* 4 * 2 * 0.6969459 *
* 4 * 3 * 0.6970353 *
* 5 * 0 * -2.959500 *
* 5 * 1 * -2.050041 *
* 5 * 2 * -2.049898 *
* 5 * 3 * 0.2836265 *
* 5 * 4 * 0.4155759 *
* 5 * 5 * 1.5682902 *
* 5 * 6 * 1.6326238 *
Type <CR> to continue or q to quit ==>
*Vamos a impornerle una restriccion a los electrones:
>>> tt.Scan('ElectronAODCollection.pt()','ElectronAODCollection.isem(0xf3)==0')
***********************************
* Row * Instance * ElectronA *
***********************************
* 0 * 2 * 2164.4603 *
* 4 * 0 * 21979.338 *
* 5 * 4 * 5053.7190 *
* 5 * 5 * 4255.1725 *
* 6 * 0 * 17247.742 *
* 6 * 1 * 21699.905 *
* 9 * 0 * 16232.643 *
* 9 * 3 * 2149.2386 *
* 11 * 3 * 37813.670 *
* 12 * 0 * 5848.0364 *
* 14 * 2 * 7563.3446 *
* 14 * 3 * 7491.8294 *
* 14 * 4 * 24640.732 *
* 15 * 7 * 6781.0965 *
* 16 * 1 * 8862.0888 *
* 16 * 3 * 62491.207 *
* 17 * 1 * 60481.877 *
* 17 * 2 * 6952.0056 *
* 19 * 2 * 16824.688 *
* 19 * 6 * 5186.1991 *
* 20 * 1 * 57127.612 *
* 20 * 4 * 18844.441 *
* 22 * 7 * 2396.6108 *
* 23 * 0 * 32171.606 *
* 24 * 1 * 15370.559 *
Type <CR> to continue or q to quit ==>
*Ahora vamos a tratar de obtener un grafico.
tt.Draw('ElectronAODCollection.pt()','')
<TCanvas::MakeDefCanvas>: created default TCanvas with name c1
Algunos links de interes.
*
https://twiki.cern.ch/twiki/bin/view/Atlas/PatBuenosAires
*
https://twiki.cern.ch/twiki/bin/view/Atlas/PyAthena
*
https://twiki.cern.ch/twiki/bin/view/Atlas/SusyDPDMaker#Slimming
--
DeywisMorenoLopez - 11 Apr 2008