{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "(datospp)=\n", "# Datos preprocesados\n", "En la sección anterior, analizamos los datos publicados para las LHCO 2020 sin alteración. En esta sección, analizaremos los datos preprocesados de estos conjuntos. \n", "\n", "Los datos preprocesados se obtienen utilizando `build_features` del módulo `clustering`, que utiliza la librería `pyjet` para agrupar los jets y obtener variables cinemáticas de los dos jets con mayor $pT$ de cada evento, puesto que se espera que estos correspondan a los jets provenientes de las partículas $X$ y $Y$ de la señal descrita en la {numref}`datos`. Los detalles del preprocesamiento se encuentran en la {numref}`bench-pre`. Los primeros cinco eventos del conjunto R&D preprocesados por `benchtools` se pueden ver en la {numref}`df-RnD`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Importamos las librerías principales\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from myst_nb import glue\n", "from PIL import Image\n", "import os\n", "\n", "# Funciones de benchtools\n", "from benchtools.src.plotools import create_png, image_grid\n", "from benchtools.src.clustering import build_features\n", "\n", "# Definimos variables globales\n", "PATH_IMAGES = '../../figuras/'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Definimos donde están los datos\n", "path_data_RnD = \"../../../datos/events_anomalydetection.h5\"\n", "path_data_BB1 = \"../../../datos/events_LHCO2020_BlackBox1.h5\"\n", "path_key_BB1 = \"../../../datos/events_LHCO2020_BlackBox1.masterkey\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A file with that name already exists\n" ] } ], "source": [ "# preprocesamiento R&D\n", "# Esta celda se corre una vez para preprocesar los datos\n", "# Una vez que el archivo existe no vuelve a correr\n", "build_features(path_data=path_data_RnD, nbatch=11, outname='RnD-1100000', outdir='../../../datos/', chunksize=100000)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A file with that name already exists\n" ] } ], "source": [ "# preprocesamiento BB1\n", "# Esta celda se corre una vez para preprocesar los datos\n", "# Una vez que el archivo existe no vuelve a correr\n", "build_features(path_data=path_data_BB1, nbatch=10, outname='BB1-1000000', path_label=path_key_BB1, outdir='../../../datos/', chunksize=100000)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "application/papermill.record/text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
pT_j1m_j1eta_j1phi_j1E_j1tau_21_j1nhadrons_j1pT_j2m_j2eta_j2phi_j2E_j2tau_21_j2nhadrons_j2m_jjdeltaR_j12n_hadronslabel
01286.727685106.9121290.185508-2.7636761313.2904350.624659361283.22073363.1642150.0649890.3936881287.4819340.713248332580.4895683.159663109.00.0
11354.394070614.2691080.8265051.3655241943.5598860.311688841325.613761439.064150-0.874319-1.7862481916.3707440.276881973859.3150473.581406208.00.0
21214.955723645.865619-0.1967862.0405451396.8406540.2382051191072.462085113.7688400.143831-1.0903301089.5306300.726963592480.7697253.149348196.00.0
31285.227873516.8352480.3286932.9753211450.4859260.013429651220.251279174.7960770.294854-0.3226611285.6187890.706361892609.8934133.298155183.00.0
41210.415787129.499352-0.744836-2.8833471567.3453000.423550541091.785816155.3622621.0605340.2649771772.3402090.787662573313.4888353.629229169.01.0
\n
", "application/papermill.record/text/plain": " pT_j1 m_j1 eta_j1 phi_j1 E_j1 tau_21_j1 \\\n0 1286.727685 106.912129 0.185508 -2.763676 1313.290435 0.624659 \n1 1354.394070 614.269108 0.826505 1.365524 1943.559886 0.311688 \n2 1214.955723 645.865619 -0.196786 2.040545 1396.840654 0.238205 \n3 1285.227873 516.835248 0.328693 2.975321 1450.485926 0.013429 \n4 1210.415787 129.499352 -0.744836 -2.883347 1567.345300 0.423550 \n\n nhadrons_j1 pT_j2 m_j2 eta_j2 phi_j2 E_j2 \\\n0 36 1283.220733 63.164215 0.064989 0.393688 1287.481934 \n1 84 1325.613761 439.064150 -0.874319 -1.786248 1916.370744 \n2 119 1072.462085 113.768840 0.143831 -1.090330 1089.530630 \n3 65 1220.251279 174.796077 0.294854 -0.322661 1285.618789 \n4 54 1091.785816 155.362262 1.060534 0.264977 1772.340209 \n\n tau_21_j2 nhadrons_j2 m_jj deltaR_j12 n_hadrons label \n0 0.713248 33 2580.489568 3.159663 109.0 0.0 \n1 0.276881 97 3859.315047 3.581406 208.0 0.0 \n2 0.726963 59 2480.769725 3.149348 196.0 0.0 \n3 0.706361 89 2609.893413 3.298155 183.0 0.0 \n4 0.787662 57 3313.488835 3.629229 169.0 1.0 " }, "metadata": { "scrapbook": { "mime_prefix": "application/papermill.record/", "name": "df-RnD" } }, "output_type": "display_data" } ], "source": [ "# Cargamos los datos\n", "df_RnD = pd.read_csv(\"../../../datos/RnD-1100000.csv\")\n", "df_BB1 = pd.read_csv(\"../../../datos/BB1-1000000.csv\")\n", "\n", "glue(\"df-RnD\", df_RnD.head(), display=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{glue:figure} df-RnD\n", ":figwidth: 700px\n", ":name: \"df-RnD\"\n", "\n", "Primeros 5 eventos de los datos R&D preprocesados usando `benchtools`. Las variables corresponden a la información de los eventos presentes en la {numref}`df-raw`.\n", "```\n", "(datospp-dist)=\n", "## Distribuciones\n", "Son de interés las variables que poseen mayor separación entre distribuciones de eventos de señal y de fondo. En principio, estas son las variables que los modelos van a utilizar para distinguir entre clases. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "variables = ['pT_j1','E_j1', 'm_j1','tau_21_j1']\n", "xlabels = [r'$pT$', r'$E$', 'm', r'$\\tau_{21}$']\n", "ylabels = ['Densidad de eventos']*4\n", "lista_RnD = create_png(namedf='R&D', df=df_RnD, variables=variables, keyname='vardiff', path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, jet='jet principal', nbins=50, type='distribution', title=True)\n", "lista_BB1 = create_png(namedf='BB1', df=df_BB1, variables=variables, keyname='vardiff', path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, jet='jet principal', nbins=50, type='distribution', title=True)\n", "# Grid de imagenes para RnD y BB1\n", "image_grid(rows=2, columns=2, images=lista_RnD, name='datospp-vardiff-RnD', path=PATH_IMAGES, remove=True)\n", "image_grid(rows=2, columns=2, images=lista_BB1, name='datospp-vardiff-BB1', path=PATH_IMAGES, remove=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} ./../../figuras/datospp-vardiff-RnD.png\n", "---\n", "name: datospp-vardiff-RnD\n", "width: 70%\n", "---\n", "Distribución de $pT$, $E$, $m$ y $\\tau_{21}$ del jet principal en el conjunto R&D.\n", "```\n", "En la {numref}`datospp-vardiff-RnD` vemos que la distribución del $pT$ del fondo decae suavemente, lo que indica que los jets más energéticos de eventos de QCD tienden a tener un momento transverso menor a 1500 GeV. Los jets más energéticos de los eventos de señal poseen un $pT$ mayor, entre 1500 y 2000 GeV. El mayor valor de $pT$ en los jets de señal se debe a que se requiere una interacción con mayor transferencia de momento para generar la masa de la partícula $Z'$, interacción que, a su vez, resulta en un mayor $pT$. Esta distribución de señal y fondo también se observa en las distribuciones de energía, donde los jets principales de eventos de señal son más energéticos que los de eventos de fondo, debido a lo explicado anteriormente.\n", "\n", "La distribución de masa del jet principal también es diferente. Para el fondo, los jets tienden a ser menos masivos y la distribución de masa también decaen suavemente, debido a que los jets provienen principalmente de quarks y gluones. Sin embargo, en los eventos de señal se observan dos picos alrededor de 100 y 500 GeV. Estas son las masas correspondientes a las partículas $X$ y $Y$ del evento $Z'\\rightarrow XY$ para el conjunto R&D.\n", "\n", "Finalmente, se observa diferencia en la distribución de la variable $\\tau_{21}$. De acuerdo a su definición en la ec.{eq}`jets-ratio_subjettiness`, el valor de esta variable es menor cuando los jets son más consistentes con la subestructura de dos subjets. Por lo tanto, como la señal se agrupa hacia valores más pequeños, los jets de señal son más consistentes con la subestructura de dos subjets. Los jets de fondo no son consistentes con la subestructura de dos subjets porque provienen principalmente de quarks y gluones, y su subestructura es consistente con un solo jet porque poseen una sola dirección predominante de la deposición de energía en el detector.\n", "\n", "El conjunto BB1 presenta distribuciones similares en las variables mostradas, como notamos en la {numref}`datospp-vardiff-BB1`. La diferencia principal se encuentra en la distribución de la masa de los jets. Para el conjunto BB1 los picos de señal están alrededor de 380 y 750 GeV, cercanos a los valores de las masas de las partículas $X$ y $Y$ de este conjunto. Las distribuciones de $pT$ y de $E$ varían en consecuencia: el $pT$ y $E$ del jet principal en este conjunto son mayores a las del conjunto R&D, porque la masa de la partícula $Z'$ es mayor.\n", "\n", "```{figure} ./../../figuras/datospp-vardiff-BB1.png\n", "---\n", "name: datospp-vardiff-BB1\n", "width: 70%\n", "---\n", "Distribución de $pT$, $E$, $m$ y $\\tau_{21}$ del jet principal en el conjunto BB1.\n", "```\n", "En las {numref}`datospp-vareq-RnD` y la {numref}`datospp-vareq-BB1`, notamos que las distribuciones de $\\eta$ son más angostas para la señal porque los jets de señal se producen de forma más centrales en el detector, debido a que provienen de colisiones más energéticas. También observamos que el número de hadrones para los jets de fondo es mayor que para los de señal, debido a que los jets iniciados por gluones tienden a tener más divisiones en su evolución y mayor radiación{cite}`Aad_2014`. El ángulo $\\phi$ de los jets no presenta diferencias evidentes." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "variables = ['eta_j1', 'nhadrons_j1', 'phi_j1']\n", "xlabels = [r'$\\eta$', 'nro. de hadrones', r'$\\phi$']\n", "ylabels = ['Densidad de eventos']*3\n", "lista_RnD = create_png(namedf='R&D', df=df_RnD, variables=variables, keyname='vareq', path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, jet='jet principal', nbins=50, type='distribution', title=True)\n", "lista_BB1 = create_png(namedf='BB1', df=df_BB1, variables=variables, keyname='vareq', path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, jet='jet principal', nbins=20, type='distribution', title=True)\n", "\n", "# Grid de imagenes para RnD y BB1\n", "image_grid(rows=1, columns=3, images=lista_RnD, name='datospp-vareq-RnD', path=PATH_IMAGES, remove=True)\n", "image_grid(rows=1, columns=3, images=lista_BB1, name='datospp-vareq-BB1', path=PATH_IMAGES, remove=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} ./../../figuras/datospp-vareq-RnD.png\n", "---\n", "name: datospp-vareq-RnD\n", "width: 100%\n", "---\n", "Distribución de $\\eta$, *nro. de hadrones* y $\\phi$ del jet principal para el conjunto R&D.\n", "```\n", "\n", "```{figure} ./../../figuras/datospp-vareq-BB1.png\n", "---\n", "name: datospp-vareq-BB1\n", "width: 100%\n", "---\n", "Distribución de $\\eta$, *nro. de hadrones* y $\\phi$ del jet principal para el conjunto BB1.\n", "```\n", "Las distribuciones de las variables analizadas previamente poseen las mismas características para el jet secundario, como se evidencia en la {numref}`datospp-jet2-RnD` y la {numref}`datospp-jet2-BB1`. El jet secundario posee menor $pT$ y $E$ que el jet principal, por definición. Las demás variables muestran las mismas distribuciones que las correspondientes al jet principal, explicadas anteriormente." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "variables = ['pT_j2','E_j2', 'm_j2','tau_21_j2', 'eta_j2', 'nhadrons_j2', 'phi_j2']\n", "xlabels = [r'$pT$', r'$E$', 'm', r'$\\tau_{21}$', r'$\\eta$', 'nro. de hadrones', r'$\\phi$']\n", "ylabels = ['Densidad de eventos']*7\n", "lista_RnD = create_png(namedf='RnD', df=df_RnD, variables=variables, keyname='jet2', path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, jet='jet secundario', nbins=50, type='distribution', title=True)\n", "lista_BB1 = create_png(namedf='BB1', df=df_BB1, variables=variables, keyname='jet2', path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, jet='jet secundario', nbins=20, type='distribution', title=True)\n", "\n", "# Grid de imagenes para RnD y BB1\n", "image_grid(rows=2, columns=4, images=lista_RnD, name='datospp-jet2-RnD', path=PATH_IMAGES, remove=True)\n", "image_grid(rows=2, columns=4, images=lista_BB1, name='datospp-jet2-BB1', path=PATH_IMAGES, remove=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} ./../../figuras/datospp-jet2-RnD.png\n", "---\n", "name: datospp-jet2-RnD\n", "width: 100%\n", "---\n", "Distribución de las variables del jet secundario para el conjunto R&D.\n", "```\n", "\n", "```{figure} ./../../figuras/datospp-jet2-BB1.png\n", "---\n", "name: datospp-jet2-BB1\n", "width: 100%\n", "---\n", "Distribución de las variables del jet secundario para el conjunto BB1.\n", "```\n", "Por último, tenemos las variables que relacionan los dos jets principales, $\\Delta R$ y $m_{jj}$, que se observan en la {numref}`datospp-jetrelations-RnD` y la {numref}`datospp-jetrelations-BB1`. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lista_RnD = create_png(namedf='RnD', df=df_RnD, variables=['deltaR_j12','m_jj'], path=PATH_IMAGES,\n", " xlabels=[r'$\\Delta R$', r'$m_{jj}$'], ylabels= ['Densidad de eventos']*2, keyname='jetrelations', type='distribution', title=True)\n", "lista_BB1 = create_png(namedf='BB1', df=df_BB1, variables=['deltaR_j12','m_jj'], path=PATH_IMAGES, \n", " xlabels=[r'$\\Delta R$', r'$m_{jj}$'], ylabels = ['Densidad de eventos']*2, keyname='jetrelations', type='distribution', title=True)\n", "\n", "# Grid de imagenes para RnD y BB1\n", "image_grid(rows=1, columns=2, images=lista_RnD, name='datospp-jetrelations-RnD', path=PATH_IMAGES, remove=True)\n", "image_grid(rows=1, columns=2, images=lista_BB1, name='datospp-jetrelations-BB1', path=PATH_IMAGES, remove=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} ./../../figuras/datospp-jetrelations-RnD.png\n", "---\n", "name: datospp-jetrelations-RnD\n", "width: 80%\n", "---\n", "Distribución de las variables $\\Delta R$ y $m_{jj}$ para el conjunto R&D.\n", "```" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "3476.93849410142" ] }, "metadata": { "scrapbook": { "mime_prefix": "", "name": "mjj-RnD" } }, "output_type": "display_data" }, { "data": { "text/plain": [ "3670.46231528546" ] }, "metadata": { "scrapbook": { "mime_prefix": "", "name": "mjj-BB1" } }, "output_type": "display_data" } ], "source": [ "mjj_RnD = df_RnD.loc[df_RnD['label']==1]['m_jj'].mean()\n", "glue('mjj-RnD', mjj_RnD, display=True)\n", "mjj_BB1 = df_BB1.loc[df_BB1['label']==1]['m_jj'].mean()\n", "glue('mjj-BB1', mjj_BB1, display=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La distribución de $\\Delta R$ es más angosta para los eventos de señal. Los jets de señal, al ser producto de colisiones más energéticas, se generan en direcciones opuestas, y son más centrales en los detectores. La masa invariante del fondo se encuentra entre 2000 y 3000 GeV, y decae suavemente, mientras que para la señal del conjunto R&D se observa un pico en {glue:text}`mjj-RnD:.0f` GeV, consistente con la masa del bosón $Z'$ de nueva física para el evento de este conjunto de datos. Para el conjunto BB1 se observa un pico en {glue:text}`mjj-BB1:.0f` GeV, cerca de la masa de el bosón $Z'$ para este conjunto.\n", "\n", "```{figure} ./../../figuras/datospp-jetrelations-BB1.png\n", "---\n", "name: datospp-jetrelations-BB1\n", "width: 80%\n", "---\n", "Distribución de las variables $\\Delta R$ y $m_{jj}$ para el conjunto BB1.\n", "```\n", "Aunque las variables de masa poseen diferentes distribuciones para señal y fondo, y podrían ser de utilidad para que los modelos aprendan a distinguir entre clases, no serán utilizadas para el entrenamiento ni la clasificación. La idea es que la búsqueda sea lo más libre de modelo posible, por lo que no se desea que los algoritmos aprendan las distribuciones de masa.\n", "(datospp-correlaciones)=\n", "## Correlaciones\n", "Las correlaciones de las variables que se utilizarán para entrenamiento se encuentran en la {numref}`datospp-correlaciones-fondo` y la {numref}`datospp-correlaciones-senal`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "nombres = [r'$p_{T_{j1}}$', r'$E_{j1}$', r'$\\tau_{21,j1}$', r'$\\eta_{j1}$', r'nro. hadrones $j1$', r'$\\phi_{j1}$',\n", " r'$pT_{j2}$', r'$E_{j2}$', r'$\\tau_{21,j2}$', r'$\\eta_{j2}$', r'nro. hadrones $j2$', r'$\\phi_{j1}$',\n", " r'$\\Delta R$', 'nro. hadrones']\n", "\n", "for label, intlabel in [('señal', 1), ('fondo', 0)]:\n", " # Queremos tener las correlaciones para la señal y el fondo en dataframes separados\n", " df_BB1_nm = df_BB1[df_BB1['label']==intlabel].drop(['label','m_jj','m_j1','m_j2'], axis=1)\n", " df_RnD_nm = df_RnD[df_RnD['label']==intlabel].drop(['label','m_jj','m_j1','m_j2'], axis=1)\n", "\n", " # Calculamos las correlaciones\n", " df_BB1_corr = df_BB1_nm.corr()\n", " df_RnD_corr = df_RnD_nm.corr()\n", " \n", " # Definimos figura y tamaño\n", " fig, axes = plt.subplots(figsize=[14,11], facecolor='white', nrows=1, ncols=2, sharey=True)\n", " fig.tight_layout() \n", " # Para graficar el mapa de correlaciones:\n", " for ax, (name, corr) in zip(axes.flat, [('R&D', df_RnD_corr), ('BB1', df_BB1_corr)]):\n", " \n", " cax = ax.matshow(corr,cmap='coolwarm', vmin=-1, vmax=1)\n", "\n", " #Ejes\n", " ticks = np.arange(0,len(corr.columns),1)\n", " ax.set_xticks(ticks)\n", " ax.set_yticks(ticks)\n", " corr.columns=nombres\n", " ax.set_xticklabels(corr.columns, rotation=90)\n", " ax.set_yticklabels(corr.columns)\n", " ax.xaxis.tick_top()\n", " ax.set_title('{}'.format(name), fontsize=16)\n", " \n", " \n", " # Mapa de color\n", " fig.colorbar(cax, ax=axes.ravel().tolist(), fraction=0.025, pad=0.04)\n", " # Título\n", " #fig.suptitle('Mapa de correlación de {}'.format(label), fontsize=25)\n", " \n", " #plt.show()\n", " plt.savefig('./../../figuras/datospp-correlaciones-{}'.format(label), bbox_inches='tight', facecolor=fig.get_facecolor(),edgecolor='none')\n", " plt.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} ./../../figuras/datospp-correlaciones-fondo.png\n", "---\n", "name: datospp-correlaciones-fondo\n", "width: 80%\n", "---\n", "Mapa de correlaciones para los eventos de **fondo**.\n", "```\n", "```{figure} ./../../figuras/datospp-correlaciones-señal.png\n", "---\n", "name: datospp-correlaciones-senal\n", "width: 80%\n", "---\n", "Mapa de correlaciones para los eventos de **señal**.\n", "```\n", "La mayoría de las variables no presentan una correlación importante, sobre 0.5 o menores a -0.5, a excepción del $pT$ del jet principal con el $pT$ jet secundario y $\\phi$ del jet principal con $\\phi$ del jet secundario, para la señal y el fondo ({numref}`datospp-correlaciones-fondo` y {numref}`datospp-correlaciones-senal`), y el $pT$ de los jets principales con $\\Delta R$, para la señal ({numref}`datospp-correlaciones-senal`). Estas correlaciones se observan en la {numref}`datospp-correlaciones-RnD` y la {numref}`datospp-correlaciones-BB1`." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "variables = [('pT_j1', 'pT_j2'), ('phi_j1', 'phi_j2'), ('pT_j1', 'deltaR_j12'), ('pT_j2', 'deltaR_j12')]\n", "xlabels = [r'$pT$ del jet principal', r'$\\phi$ del jet principal', r'$pT$ del jet principal', r'$pT$ del jet secundario']\n", "ylabels = [r'$pT$ del jet secundario', r'$\\phi$ del jet secundario', r'$\\Delta R$', r'$\\Delta R$']\n", "lista_RnD = create_png(namedf='RnD', df=df_RnD, variables=variables, path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, keyname='corr', type='scatter',title=True)\n", "lista_BB1 = create_png(namedf='BB1', df=df_BB1, variables=variables, path=PATH_IMAGES, \n", " xlabels=xlabels, ylabels=ylabels, keyname='corr', type='scatter', title=True)\n", "\n", "# Grid de imagenes para RnD y BB1\n", "image_grid(rows=2, columns=2, images=lista_RnD, name='datospp-correlaciones-RnD', path=PATH_IMAGES, remove=True)\n", "image_grid(rows=2, columns=2, images=lista_BB1, name='datospp-correlaciones-BB1', path=PATH_IMAGES, remove=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} ./../../figuras/datospp-correlaciones-RnD.png\n", "---\n", "name: datospp-correlaciones-RnD\n", "width: 100%\n", "---\n", "Variables correlacionadas del conjunto R&D.\n", "```\n", "\n", "```{figure} ./../../figuras/datospp-correlaciones-BB1.png\n", "---\n", "name: datospp-correlaciones-BB1\n", "width: 100%\n", "---\n", "Variables correlacionadas del conjunto BB1.\n", "```\n", "La correlación del $pT$ del jet principal con el $pT$ jet secundario es lineal por la naturaleza del evento y del agrupamiento. Se escogieron como jets principales los de mayor $pT$, por lo que el $pT$ de los jets secundarios puede ser a lo sumo igual que el de los jets principales. Además, el momento de la colisión se distribuye de acuerdo a los dos productos principales que se formen, manteniendo una relación entre sí. \n", "\n", "Los valores de $\\phi$ del jet principal con $\\phi$ del jet secundario también presentan una correlación positiva por la naturaleza del evento. En los eventos dijet, los jets se generan en direcciones opuestas, por lo que la dirección angular del jet principal se relaciona con la del jet secundario. Las demás correlaciones no son evidentes en los gráficos." ] } ], "metadata": { "celltoolbar": "Tags", "interpreter": { "hash": "be244558907c567e73a32fad5ffef5514602d6da01bb2b6b51508d7e46fcc84d" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 2 }