Difference: EPUniandes2011TC1 (1 vs. 6)

Revision 62013-08-22 - AndresOsorio

Line: 1 to 1
 
META TOPICPARENT name="EPUniandes2011"
Changed:
<
<

Taller 1

>
>

Taller 1

 

Revision 42012-05-24 - AndresOsorio

Line: 1 to 1
 
META TOPICPARENT name="EPUniandes2011"

Taller 1

Convenciones utilizadas en esta guía

  • Comandos realizados desde la Linea de Comando de Linux (CLI) van en rojo.
  • Texto en Magenta es para ser reemplazado por algún valor que usted desee.
  • Argumentos opcionales o pasos opcionales van en azul.
  • Usaré como editor “gedit”. Si ustedes prefieren, pueden usar algún otro.

Los siguientes ejercicios nos servirán como preparación para las dos sesiones siguientes, en las que simularemos datos y los analizaremos.

Material

El material para este taller, se puede descargar del siguiente link:

O si prefiere, como parte del primer ejercicio se puede descargar el material usando el comando wget desde una terminal (pasal al Ejercicio 1).

Ejercicio 1 – Cortar y Pegar

Dado que los ejercicios que haremos usualmente requieren de “copiar y pegar” (C&P), nos cercioraremos de que no tengamos problemas en esta sencilla operación. Para verificar que C&P del y hacia el terminal funciona. Empezaremos por copiar algunos comandos en la Terminal. Para abrir la terminal, hacer click en el icono utilities-terminal.png en la barra superior. Ahora, copiar del texto siguiente, una linea al tiempo (seleccionar y hacer Ctrl+C) y en el terminal pegar (Shift+Ctlr+V) y luego "Enter":

wget --no-check-certificate http://hep.uniandes.edu.co/~aosorio/Particulas/ejercicios-Parte1.tgz
tar xzvf ejercicios-parte1.tgz
cd ejercicios-parte1
chmod +x ejecutarEsteComando.py
./ejecutarEsteComando.py qwerty 

La respuesta debe mostrarnos su nombre de usuario y el texto ingresado:

<!--/twistyPlugin twikiMakeVisibleInline-->

Muy bien: Sr aosorio usted ha dado la clave qwerty

<!--/twistyPlugin-->

Si usted ejecuta el anterior comando sin ningún argumento:

./ejecutarEsteComando.py

El resultado será:

<!--/twistyPlugin twikiMakeVisibleInline-->

Error: Usted debe proveer la clave secreta

<!--/twistyPlugin-->

Ejercicio 2 – Edición simple de un archivo

El propósito de este ejercicio es que usted pueda editar un archivo sin problemas. Primero hagamos una copia de seguridad del siguiente archivo usando el comando cp de Linux (cp = copy):

cp editarEsteComando.py editarEsteComandoOriginal.py

Ahora, abra el archivo “editarEsteComando.py” y edite la línea 5 adicionando un símbolo # al principio de la línea. Explícitamente cambie las siguientes líneas:

gedit editarEsteComando.py

# Por favor comente la siguiente linea adicionando un simbolo # al frente de la línea siguiente

raise RuntimeError

Así debe quedar:

# Por favor comente la siguiente linea adicionando un simbolo # al frente de la línea siguiente

# raise RuntimeError

Guarde el archivo, salga del editor y ejecute el programa:

./editarEsteComando.py

Si todo sale bien debe resultar en pantalla:

<!--/twistyPlugin twikiMakeVisibleInline-->

 Muy bien: aosorio usted ha editado correctamente este script
<!--/twistyPlugin-->

Al contrario, si no se edita como se sugiere debemos obtener:

<!--/twistyPlugin twikiMakeVisibleInline-->


Traceback (most recent call last):
File "./editThisCommand.py", line 11, in ?
raise RuntimeError,
RuntimeError 
<!--/twistyPlugin-->

Ejercicio 3 – Variables de entorno del sistema

El propósito de este ejercicio es verificar que tenemos las variables de entorno necesarias para ejecutar ROOT.

  • Desde el terminal, ejecutar el siguiente comando:


echo $ROOTSYS
/opt/hepsw/root/pro
export MENSAJE=”Linux es fabuloso”
echo $MENSAJE
Linux es fabuloso

Pregunta: ¿Qué comando nos permite conocer que variables de entorno están definidas?

<!--/twistyPlugin twikiMakeVisibleInline-->


env
ORBIT_SOCKETDIR=/tmp/orbit-aosorio
SSH_AGENT_PID=1811
TERM=xterm
SHELL=/bin/bash
...

<!--/twistyPlugin-->

Ejercicio 4 – Interacción con ROOT I

  • Empecemos a trabajar con ROOT. Como vimos en el ejercicio anterior, las variablee de entorno necesarias estan definidas y podemos inciar ROOT haciendo el siguiente comando:


root

  • (Seguir ahora al instructor en pantalla. Interacción libre con ROOT en modo interactivo.)

Ejercicio 5 – Interacción con ROOT II

Ahora vamos a realizar un ciclo (loop) que nos permita hacer la grafica de una función. El siguiente es un ejemplo. La idea es que usted cree su propio ciclo para graficar una función relevante para usted. Para graficar en ROOT, utilizaremos la clase TGraph. Desde la línea de comando de ROOT:

root [0] float x = -10.0; 
root [1] float dx = 0.01; 
root [2] int i = 0; 
root [3] { TGraph mygraph; while ( x < 10.0 ) { 
end with '}', '@':abort > float fx = sin(x)/x; 
end with '}', '@':abort > mygraph.SetPoint(i,x,fx); 
end with '}', '@':abort > i=i+1; x=x+dx; } } 
root[13]  mygraph.Draw("ACP") 

En este punto, la grafica para la función dada debe aparecer en pantalla.

<!--/twistyPlugin twikiMakeVisibleInline-->

c1.png

<!--/twistyPlugin-->

Cada uno de las lineas coloreadas en rojo, son declaraciones que el usuario de ROOT hace cuando se encuentra en una sesion interactiva con ROOT.

Ejercicio 6 – Interacción con ROOT III

Modificar el ejemplo anterior para hacer la gráfica de una función de su gusto. A diferencia del ejemplo anterior, vamos a crear un macro o script que encapsula los comandos que escribimos durante la sesión interactiva. Esto permite que podamos reusar el código. Para ello salir de la sesión interactiva de ROOT, escribiendo ".q" (punto y q). Editar el archivo siguiente:

gedit hacerGrafica.C

Este archivo contiene un esqueleto listo para que usted lo llene. Yo por ejemplo cambiaré mi función a F(x) = cos(x) y la graficaré en Coordenadas Polares usando la clase TGraphPolar. Guarde el archivo. Ahora bien, existen distintas formas de ejecutar el macro que hemos escrito:

  1. Desde la línea de comando: root hacerGrafica.C
  2. Desde la sesión interactiva de ROOT: root[0] .x hacerGrafica.C

El resultado es la gráfica siguiente:

<!--/twistyPlugin twikiMakeVisibleInline-->

c2.png

<!--/twistyPlugin-->

Ejercicio 7 – Interacción con ROOT IV - Graficar datos desde un archivo ascii

Ahora vamos a realizar un ciclo (loop) que nos permita hacer la grafica de unos datos guardados en un formato ascii. Para este ejercicio, debemos recordar cómo se leen archivos ascii desde C/C++. ROOT está escrito en C/C++ y posee un intérprete para este lenguaje de programación. Luego usted posee todo el poder de C++ y además las Clases que hacen parte del sistema de ROOT.

Vamos a tomar datos del sitio: HEPDATA (http://hepdata.cedar.ac.uk/). Allí ustedes encuentran una base de datos de resultados que han sido liberados y que hacen parte de publicaciones oficiales de experimentos de Altas Energías. Para este ejercicio, tomaremos datos de una de las publicaciones de un experimento del LHC y trataremos de reproducir una de las graficas de una variable muy importante en la búsqueda de Supersimetria: Energía Transversal Faltante o Missing ET.

  1. En el explorador de Internet Firefox firefox.png, ir al sitio: http://hepdata.cedar.ac.uk/
  2. En la máquina de búsqueda insertar el comando “exp lhc” y luego mostrar "all" todos los resultados
  3. Buscar en la lista de resultados, la publicación con el nombre "Search for supersymmetry using final states with one lepton, jets, and missing transverse momentum with the ATLAS detector in sqrt{s} = 7 TeV pp" o CERN-PH-EP-2011-013. Seleccionar haciendo click en “Full data record”
  4. En la Tabla 1 están los datos que necesitamos "Distribution of ET(C=MISSING) IN GEV for data and background MC calculation". El sitio los ofrece en distintos formatos. Hacer click en "plan text". El browser los abre en una pantalla.
  5. Observar el formato en el que vienen los datos. Al principio hay varias especificaciones y el encabezado de cada columna. Ver Nota al final.
  6. Ahora puede copiar estos datos en un nuevo archivo: gedit missingEt-Figure1.txt
  7. Eliminar el encabezado y quedarse solo con las columnas de datos y guardar en un archivo de texto.
  8. Estos son los datos que vamos a graficar:

<!--/twistyPlugin twikiMakeVisibleInline-->

5.0   0.0   10.0   332.0   +19.1   -18.1   238.0   +63.2   -63.2   +39.9   -36.3
15.0   10.0   20.0   730.0   +27.9   -26.9   712.9   +146.0   -146.0   +156.2   -0.0
25.0   20.0   30.0   716.0   +27.6   -26.6   878.7   +166.3   -166.3   +0.0   -201.7
35.0   30.0   40.0   635.0   +26.1   -25.1   604.9   +116.1   -116.1   +95.8   -25.5
45.0   40.0   50.0   441.0   +21.9   -20.9   373.9   +63.7   -63.7   +21.3   -105.3
55.0   50.0   60.0   337.0   +19.3   -18.3   275.5   +45.1   -45.1   +69.2   -14.1
65.0   60.0   70.0   241.0   +16.5   -15.4   241.8   +43.9   -43.9   +65.1   -28.1
75.0   70.0   80.0   155.0   +13.4   -12.4   186.5   +42.4   -42.4   +64.7   -14.1
85.0   80.0   90.0   101.0   +11.0   -10.0   152.4   +44.0   -44.0   +13.3   -60.0
95.0   90.0   100.0   77.0   +9.76   -8.71   81.13   +5.36   -5.36   +42.77   -16.45
105.0   100.0   110.0   62.0   +8.87   -7.81   62.54   +4.26   -4.26   +11.92   -12.39
115.0   110.0   120.0   57.0   +8.55   -7.49   46.83   +3.21   -3.21   +9.06   -4.93
125.0   120.0   130.0   45.0   +7.72   -6.65   38.96   +3.4   -3.4   +5.14   -9.19
135.0   130.0   140.0   22.0   +5.73   -4.63   26.68   +2.36   -2.36   +6.21   -4.11
145.0   140.0   150.0   17.0   +5.18   -4.06   21.21   +1.5   -1.5   +3.95   -3.81
155.0   150.0   160.0   14.0   +4.81   -3.68   17.31   +1.35   -1.35   +4.11   -3.46
165.0   160.0   170.0   10.0   +4.245   -3.095   13.71   +1.12   -1.12   +2.9   -3.93
175.0   170.0   180.0   9.0   +4.089   -2.931   9.239   +0.816   -0.816   +3.385   -1.712
185.0   180.0   190.0   4.0   +3.147   -1.907   8.224   +0.787   -0.787   +1.253   -1.678
195.0   190.0   200.0   5.0   +3.365   -2.151   6.673   +0.705   -0.705   +1.369   -2.198
205.0   200.0   210.0   6.0   +3.566   -2.37   3.835   +0.481   -0.481   +2.413   -0.54
215.0   210.0   220.0   6.0   +3.566   -2.37   3.473   +0.458   -0.458   +0.605   -0.443
245.0   240.0   250.0   3.0   +2.904   -1.627   2.841   +0.46   -0.46   +0.17   -1.163
255.0   250.0   260.0   1.0   +2.2885   -0.8256   1.579   +0.313   -0.313   +1.182   -0.286
285.0   280.0   290.0   1.0   +2.2885   -0.8256   0.7854   +0.1961   -0.1961   +0.4278   -0.1508
295.0   290.0   300.0   1.0   +2.2885   -0.8256   0.6747   +0.1771   -0.1771   +0.171   -0.1666
305.0   300.0   310.0   2.0   +2.625   -1.288   0.5973   +0.1886   -0.1886   +0.2111   -0.3757
315.0   310.0   320.0   1.0   +2.2885   -0.8256   0.369   +0.1467   -0.1467   +0.4075   -0.0
325.0   320.0   330.0   1.0   +2.2885   -0.8256   0.5463   +0.1865   -0.1865   +0.0626   -0.4146
385.0   380.0   390.0   1.0   +2.2885   -0.8256   0.104   +0.0852   -0.0852   +0.2524   -0.02

<!--/twistyPlugin-->

Nota: el encabezado de cada columna nos dice lo siguiente:

x   xlow   xhigh   y   dy+   dy-   y   dy+   dy-   dy+   dy-   

En donde:

  • x = valor X del punto
  • xlow, xhigh = tamaño del bin del histograma segun el rango [xlow,xhigh]
  • y = valor y del punto - datos obtenidos por el experimento
  • dy+, dy- = errores asimetricos en la variable Y1 [dy-,dy+]
  • y = valor y del punto - para backgrounds del Modelo Estandar segun simulacion de Monte Carlo
  • dy+, dy- = errores asimetricos en la variable Y2 [dy-,dy+]
  • dy+, dy- = errores asimetricos en la variable Y1/Y2 (Datos / Modelo Estandar)

Ahora necesitamos hacer un código para leer y graficar estos datos. Parece complicado, pues hay 11 columnas que leer. Sin embargo, en el paquete de este taller viene un esqueleto del codigo necesario para leer y graficar los datos que nos interesa. Por simplicidad, nos concentraremos solamente en los datos obtenidos por el experimento. Abrir y editar el archivo hepdataPlotter.C:

gedit hepdataPlotter.C

Empezaremos por insertar el nombre del archivo de lectura. En nuestro caso usaremos el archivo “missingEt-Figure1.txt” en el que hemos guardado los datos. Siga ahora los comentarios en el script para completar el código. Al igual que los ejercicios anteriores, todo se centra en un ciclo en el que se adicionan los puntos de la grafica a un objeto de tipo TGraphAsymmErrors. Este es un tipo de grafico con errores asimetricos en X y Y.

Los puntos (x,y) se pasan a la grafica haciendo uso del metodo:

missingEt_Err.SetPoint(k, x, y);

En donde k es el k-esimo punto. Ahora, los errores en X y Y se pasan usando el metodo:

missingEt_Err.SetPointError(k, dxm, dxp, fabs(dym), dyp );

Un par de aclaraciones: dxm y dxp son los errores en X, los cuales para este caso en especial son 0 ambos. La segunda aclaracion tiene que ven con los errores en Y. ROOT toma la magnitud de los errores y segun los datos estos vienen positivos y negativos. Luego para el error negativo tenemos que calcular el valor absoluto haciendo uso de la funcion de C/C++ fabs.

El resultado debe ser (después de hacer unos retoques):

<!--/twistyPlugin twikiMakeVisibleInline-->

figure1.png

<!--/twistyPlugin-->

La cual podemos comparar con la original del articulo:

<!--/twistyPlugin twikiMakeVisibleInline-->

figure1-ATLAS.png

<!--/twistyPlugin-->

Como tarea, uno podria combinar la grafica de datos de simulacion.

El objetivo de las sesiones siguientes será el de simular datos de Física de Supersimetria y analizar los datos. Intentaremos hacer una grafica similar a esta y observar las diferencias con otras distribuciones.

-- AndresOsorio - 14-May-2012

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