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
  • Crear directorio cmthome
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

Root analisis con AthenaRootAccess(ARA)

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

Edit | Attach | Watch | Print version | History: r7 < r6 < r5 < r4 < r3 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r7 - 2020-08-31 - TWikiAdminUser
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Sandbox/SandboxArchive All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback