ROOT
Isidro González Caballero( [email protected] )
Técnicas Experimentales en Física de Partículas
Curso 2010 - 20114
2
http://root.cern.ch
3
ROOT en breve
ROOT es un entorno Orientado a Objetos programado en C++ para el desarrollo de aplicaciones que manejen grandes volúmenes de datos.
Proporciona, entre otras cosas:– Un sistema eficiente de almacenamiento y acceso a datos diseñado para soportar
conjuntos de datos estructurados hasta los PB. – Un sistema de consulta (query) para extraer los datos de los ficheros– Un intérprete de C++ (CINT)– Algoritmos de análisis estadístico avanzados (histogramas multidimensionales,
ajustes, minimización, etc.…)– Herramientas de visualización científica con gráficos 2D y 3D– Un avanzado Interfaz de Usuario Gráfico
El usuario interacciona con ROOT a través del interfaz de usuario gráfico, la línea comando o scripts
Los comandos de línea o de los scripts son C++, gracias al interprete integrado de C++, CINT.
– Soporta compilación dinámica de los scripts y cargado dinámico Es un proyecto de fuente abierta (Open Source), licenciado bajo LGPL
4
Framework y conjunto de librerías
Clases de usuario
– Cada usuario puede definir nuevas clases interactivamente
– Utilizando todos las “maravillas” del C++
– …incluyendo la posibilidad de heredar de las clases de ROOT
Enlace dinámico
– El código interpretado puede llamar al código de
compilado
– El código compilado puede llamar al código
interpretado
– Se puede compilar y enlazar dinámicamente las
Macros
Modo normal defuncionamiento
Interesante para GUIsy visualizadores de
sucesos
Compilador de macosroot > .x file.C++
5
Areas de utilización de ROOT
Almacenamiento de datos:Localmente o distribuidos
Análisis de datos & visualización
Framew
ork general
6
El interprete: CINT
CINT se utiliza en ROOT:– Como interprete de líneas comando– Como intérprete de scripts– Para generar diccionarios de clase– Signals/Slots en los GUI– …
El lenguaje de línea comando, script y programación es el mismo
Permite compilar fácilmente los scripts grandes para mejorar el rendimiento
7
¿Compilar o interpretar?
Compilar Pros:
– Ejecución más rápida– El compilador soporta
todo el C++
Cons:– Compilar lleva tiempo– El compilador es más
estricto con la estructura del lenguaje
Interpretar Pros
– Ideal para probar rápidamente si algo funcionaEdita Ejecuta Comprueba Edita…
– En programas simples puede ser más conveniente
Cons:– Ejecución más lenta,
sobre todo en programas grandes
8
Ejecutando código
Para ejecutar la función mycode() que está en el fichero mycode.C:root [0] .x mycode.C
Equivalentemente: Leer el fichero y ejecutar la función:root [1] .L mycode.Croot [2] mycode()
Para conocer todos los comandos de CINT:root [3] .h
9
Ejecutando código
Macro: Fichero interpretado por CINT (.x)
Ejecutar con .x mymacro.C(42)
Para compilar .x mymacro.C+(42)
int mymacro(int value) { int ret = 42; ret += value; return ret;}
10
Ejemplos gráficos
ROOT tiene varias clases para representar funciones matemáticas.– La más sencilla es TF1 (todas las funciones en ROOT empiezan con “T”)
Buscar la descripción en la página web de ROOT para TF1: http://root.cern.ch/root/html/TF1.html
Hay un constructor (entre otros) que toma cuatro argumentosTF1 TF1(const char* name, const char* formula, Double_t xmin = 0,Double_t xmax = 1)
Crear la función sin(x)/x en el intervalo 0 < x < 10:
Los argumentos del constructor son: El nombre (f1), la expresión de la función (sin(x)/x) y los límites inferior y superior del intervalo (0,10)
Truco: Utiliza el tabulador para completar el comando o averiguar la lista de sus argumentos. Ejemplo:
root [] TF1 f1("f1","sin(x)/x",0,10);root [] f1.Draw();
root [] f1.<TAB>
11
Histogramas - Intro
Echar un vistazo a la macro hrandom.C Creamos dos histogramas:
1. Un solo valor constante
2. Una distribución aleatoria plana en el intervalo (0,1)
Buscar la domumentación de:
– TH1F– TRandom– THistPainter (opciones de Draw())
– (TCanvas)– …
12
Histogramas - Interactividad
Ir al menu View Editor
Pinchar en el histograma– Podemos modificar un montón de
parámetros Pinchar en el eje
– Renombrarlo …
13
Histogramas - Ejercicio
Hacer una macro que llene un histograma con una distribución aleatoria de forma gaussiana– Media=1– Varianza=1.5– Intervalo (-5,5)
14
Histogramas – Las 2 dimensiones
Echar un vistazo a la macro hrandom2.C
Fijarse en:– TH1F TH2F– Damos nombre a los
ejes directamente en el código
– Elejimos el tipo de histograma que queremos pintar de entre todos los posibles en el código
– Damos título al histograma al crearlo
15
Ajustes
Echar un vistazo a la macro printHisto.C
Ejecutarlo sobre el fichero de datos gauss.txt
Histograma 1D con forma gaussiana?– Vamos a intentar ajustarlo– Click derecho y Menu FitPanel– Elegimos la función que queremos
ajustar
16
Ajustes
Los parámetros del ajuste salen en el texto
Con el botón derecho sobre el resumén del histograma se pueden añadir también ahí (SetOptFit)
– Media: 1.0– Sigma: 2.0
Podemos ajustar solo en un intervalo
17
Ajustes - Ejercicio
Mirar que forma tienen los datos en el fichero de datos gauss2.txt
Ajustar adecuadamente…
18
Estructuras de datos en ROOT: TTrees
Los TTree’s han sido diseñados para soportar colecciones muy largas de objetos.
Permiten acceso directo y aleatorio a cualquier entrada del árbol (aunque el acceso secuencial va mejor)
Los TTree’s tienen ramas (branches) y hojas (leaves). Se puede leer un subconjunto de las ramas.
Hay métodos de alto nivel como TTree::Draw que iteran sobre las entradas con expresiones de selección.
Se pueden ver los TTree’s usando TBrowser
Se pueden analizar los TTree’s usando TTreeViewer
19
Contenido de un TTree
0123456789101112131415161718
T.Fill()
T.GetEntry(6)
T
Memory
20
Estructura de un TTree
Cada fichero de datos es una colección de N sucesos
Cada suceso tiene estructura de árbol con varias ramas– Cada rama puede contener un valor (ej. Número de
sucesos)…– … o una colección de valores (momento transverso
de los jets)
La estructura de cada suceso puede ser muy compleja (RECO, PAT) o plana (Flat Trees)
21
TBrowser
Usamos la herramienta TBrowser para ver el contenido de los ficherosroot [] TBrowser t
22
TBrowser
23
TBrowser
24
TTreeViewer
root[] TFile f("staff.root")root[] T->StartViewer()
Drag and drop
1
2
3
25
Producción del bosón de Higgs SM en el LHC
Proceso dominante: gluon fusion Factor 10 de supresión: Vector Boson
Fusion (VBF) ttH: importante cerca del límite de LEP? W(Z)H: debido al enorme fondo, no para
descubrir
26
todas las colisiones no interesan
100 Hz: se registran tal vez interesen (0.0005%)
sólo < 1 Higgs por cada 100 000 000 000 interacciones-pp
“inteligentes“ estrategias de selección
pro
du
cció
n e
n e
l L
HC
t
trigger: leptones, fotones,ETMISS, ….
Secciones eficaces para los procesos del fondo
27
Además
Además:– Underlying Event: varios “partones“ en
interacciones de p– Pile-up: Hasta 23 interacciones-pp solapadas por
colisión
Por tanto:– 1600 partículas cargadas por cada colision en el
detector– efectos del pile-up: tiempo de lectura > t entre
colisiones
28
Desintegraciones del bosón de Higgs en el SM
50 100 200 100010-3
10-2
10-1
100
bb cc tt gg WW ZZ
Bra
nchi
ng r
atio (Higgs
)
mH (GeV)
bb
WW
ZZ
tt
ccgg
HDECAY: Djouadi, Spira et al.
excl
ud
ed b
y L
EP
excluded by
electroweak fit
incl. direct searches
para M<135 GeV: H bb, dominante
para M>135 GeV: H WW, ZZ dominante
pequeño: H también importante
29
Búsqueda del bosón de Higgs: HWW
Nos centraremos en:– Región de masa: MH~160
GeV– Canal HWW– Con 2 muones en el
estado final– Los neutrinos no se
detectan Energía faltante en el plano transverso
30
Fondos
Procesos que pueden dar signaturas similares
– WW Signatura idéntica. Irreducible
– W + Jets Sección eficaz altísima
– Pares de quarks top: ttbar BR[tbW] ~99%
– Otros Dibosones: WZ, ZZ– Z + jets Sección eficaz
alta, pero no tendría en principio energía faltante
– tW
31
Muestras
Sobre todas las muestras se ha hecho una preselección– µ HLT– Tracks isolation– Calotowers isolationh– Skimming 2 leptones: PT > 20,20 |η|<2.4
Tskim N
NN L
32
Ejercicio
Maximizar la relación entre señal (Higgs) y el fondo (suma de fondos) usando:– Jet veto Número de jets– MET Energía transversa faltante– ΔΦµµ Ángulo entre los dos muones
– mµµ Masa invariante de los dos muones
– PTµmax Momento transverso del muon más energético
– PTµmin Momento transverso del muon menos energético
33
Ejercicio II: Datos
Proceso WW W+jets tt WZ ZZ Z+jets tW
NLO[pb] 4.51 31314 16.52 18.2 5.9 3048 10.6
skim(%) 18.4 4.48×10-4 21 2.83 5.47 22.4 2.61
MH NLO[pb] skim(%)
130 GeV 0.20093 22.0
160 GeV 0.38509 38.5
190 GeV 0.21622 46.2
Señales(HWW 2l 2n)
Fondos
La variable Channel nos permite escoger los sucesos según el tipo de los leptones:•Channel == 0 2 muones•Channel == 1 2 electrones•Channel==2 1 muon y 1 electrón
L = 36.1 pb-1