ANTARES KM3NeT - LofNaDI/Tutorials GitHub Wiki

ANTARES / KM3NeT

Voy a intentar poner en este archivo todo el conocimiento que tenga sobre ANTARES y KM3NeT.

CCLyon

El Centro de Cálculo de Lyon es el lugar se recogen todo el trabajo y todos los datos de grandes colaboraciones tales como ANTARES y KM3NeT. Todo lo que necesitemos en este sentido, estará de un modo u otro en este centro.

Obtener una cuenta

Cualquiera que pertenezca a una de las colaboraciones que tenga su base de datos en CCLyon puede solicitar una cuenta. En el caso particular de la colaboración de KM3NeT, la forma de hacerlo se explica en este enlace (para acceder debemos poner nuestro nombre de usuario y contraseña externa de la cuenta de KM3NeT), en el apartado General, subapartado Get an account. Una vez que entremos en el portal para crear la cuenta, debemos poner COLLAB. ETRANGER. PHY en el apartado de Organisation y KM3NeT Group en la descripción de la organización. Ponemos nuestro e-mail de KM3Net ([email protected]) y elegimos km3net como colaboración.

Al finalizar el proceso, se nos generará un PDF que deberá ser firmado por uno mismo y por el representante del grupo en Lyon. Su nombre y dirección de correo estarán indicados en el mismo fichero. Debemos enviárselo firmado por e-mail y esperar a que nos conceda acceso. Cuando tengamos acceso, nos llegará un correo a la cuenta de km3net con nuestro usuario y contraseñas en Lyon.

Conexión y familiarización

La conexión se realiza a través del protocolo VNC o SSH. Yo particularmente uso este último. Una vez que conectemos por primera vez, debemos cambiar la contraseña, que tendrá una fecha de caducidad. Todo esto está muuy bien explicado en su documentación oficial.

Al entrar estaremos siempre ubicados en el directorio /pbs/home/<u>/<user>. Este será nuestro directorio privado y será el valor predeterminado de la variable de entorno $HOME. Su cuota por defecto es de 20 GiB. También diponemos de otros directorios, como /pbs/throng/<group> y /sps/<group>. En estos direcorios los diferentes grupos intercambian datos y software, de modo que no son privados. El directorio sps además no es permaente, de modo que algunos datos podrían ser eliminados regularmente.

Almacenamiento y acceso de datos

Debido al volumen de datos que puede llegar a almacenar un gran experimento, el almacenamiento se hace de forma descentralizada. Para ello se utiliza el servicio High Performance Storage System (HPSS). El manejo de archivos remotos con este servicio se basa en la API de RFIO. Su uso básico puede verse en este enlace. Así, todos los archivos remotos se encuentran en el directorio absoluto /hpss/in2p3.fr/group/<PATH TO FILE>. Por ejemplo, podemos ver los archivos del grupo de ANTARES usando el comando rfdir /hpss/in2p3.fr/group/antares/.

Una forma más eficiente de acceder al sistema de archivos descentralizado es a través de un software especializado. En CCLyon disponemos de tres: iRODS, dCache y XRootD. El más sencillo paar empezar a usar es XRootD. Su documentación específica está aquí. Esta forma de acceder a los datos es preferible a los comando nativos de RFIO. Cualquier comando de XRootD tendrá la siguiente sintaxis: <command> root://ccxroot.in2p3.fr:1999//hpss/in2p3.fr/group/<PATH TO FILE> <extra options>. Por ejemplo, para copiar archivos remotos de ANTARES a nuesto directorio en Lyon, usaremos el comando xrdcp root://ccxroot.in2p3.fr:1999//hpss/in2p3.fr/group/antares/mc/rbr/v4/reco/final/i3/<file name> /pbs/home/<u>/<user>. Esta será la pieza clave para un script que nos permita extraer los datos de ANTARES/KM3NeT que necesitemos.

Computación

La computación de gran tamaño y recursos en CCLyon debe hacerse siempre a través del sistema de colas Sun Grid Engine (SGE). Es el sistema más típico para manejar recursos computacionales y puede econtrarse documentación de él fácilmente en internet.

Datos

Como ya se ha mencionado, los datos se almacenan de forma distribuida con el servicio HPSS. los directorios para los datos de ANTARES Y KM3NeT son:

  • /hpss/in2p3.fr/group/antares/
  • /hpss/in2p3.fr/group/km3net/

Para saber exactamente dónde se encuentran los datos que necesitamos, podemos navegar por esos drectorios.

Datos y software de ANTARES

Los datos de ANTARES se encuentran dod formatos: i3 y AntDST. El formato i3 viene de una colaboración con IceCube, de modo que para visualizar y extrar información de estos ficheros necesitamos todo el software desarrollado por esat colaboración, principalmente la librería SeaTray derivada de IceTray. Los ficheros AntDST son propios de ANTARES, aunque basados en el software ROOT del CERN. Estos ficheros se generan después de los i3 en el flujo normal de trabajo de ANTARES. Mientras los ficheros i3 contienen absolutamenete toda la información que se genera en un evento o en una simulación MC, los ficheros AntDST están más destinados a los usuarios finales que desean hacer estudios físicos con esos datos.

Todo lo necesario para tratar y crear los datos se encuentra en un contenedor de Singularity. En una sección posterior se explica lo que es este software. Por el momento basta decir que dicho contenedor es un entorno virtual que permite tener acceso a un software específico. Dentro de este contener es donde se realiza el flujo habitual de datos en ANTARES. Sin embargo, se presentan dos grndes problemas en relación a esto:

  • El contenedor lleva años sin mantenimiento y su código está desactualizado. Esto hace que sea muy difícil, si no imposible, introducir nuevas características al flujo de tratamiento de datos, tal como nuestro método por DCN's para eventos single-line.

  • Por otro lado, todo lo necesario para extraer datos de los ficheros se encuentra en el contenedor. Se podría tratar de instalar el software necesario para leer los archivos i3 en otro sitio, pero todo el software está muy repartido por la web y con muy poco mantenimiento en general. Alguna parte del código podría incluso no estar publicada de manera general. De modo que debemos trabajar dentro del contenedor para extarer los datos.

Así, lo solución elegida por el momento consiste en extraer los datos de los ficheros dentro del contenedor, para después tratarlos en nuestro lugar de trabajo habitual (Gecko), y finalmente introdcir tan sólo los resultados en ficheros i3 y AntDST nuevos. Hay un alumno de máster del IFIC que tiene una nueva herramiento para estudiar los datos y también quiere meter los resultados en los ficheros. Deberíamos ponernos de acuerdo para hacerlo.

El contenedor con el software se encuentra en CCLyon, y es el siguiente: /sps/km3net/SeaTray/singularity/images/antares_seatray_18-07-00_km3pipe_8.23.4.simg. En una sección posterior veremos cómo nos conectamos a Singularity. En lo que sigue de esta sección supondremos que ya estamos dentro del contenedor.

Uno de los programas más útiles que tenemos dentro del contenedor es uno que nos permite visualizar en la terminal los ficheros i3. Si ponemos en la terminal dataio-shovel <path/to/file/file-name>.i3, se nor abrirá el fichero en la terminal. Aquí podemos ver cómo está organizada la información.

Visión de un fichero i3

Los datos se almacenan en frames, que pueden ser de distintos tipos. Para movernos a través de los frames podemos usar las teclas derecha e izquierda del teclado. Dentro de cada frame puede haber una o más variables, de las que se muestra su nombre, su tipo y su tamaño. Para movernos a través de las variables usamos las teclas arriba y abajo del teclado. Para visualizar el contenido de una variable pulsamos la tecla X. Se nos mostrará el contenido de la variable en formato XML. Para volver a la pantalla anterior usamos la tecla Q. Para salir de este programa, pulsamos otra vez la tecla Q.

Con esto ya tenemos una idea de cómo funcionan los ficheros i3. Ahora podemos diseñar un script de python para extraer la información. Podemos abrir los ficheros en python gracias a la librería de IceTray. Para leer los datos, debemos hacer un bucle a través de los frames y extraer de cada frame lo que nos interese. La documentación está anticuada y es dificil de encontrar, de modo que de momento tan solo parto de los scripts que ya tienen escritos otros miembros de la colaboración, como Thomas. En teoría la documentación está aquí, aunque, por ejemplo, enseña la instalación de los paquetes de un repositorio en GitHub que ya no existe.

(Notas sobre los datos: La orientación de los módulos ópticos se guarda en formato de cuaterniones, aunque las funciones para obtener la dirección que vienen en SeaTray hacen los cálculos necesarios para que no nos preocupemos por esto. En los datos MonteCarlo sólo hay un frame de geometría, pero en los datos reales se recalcula todo cada dos minutos, teniendo más ficheros de geometría que hay que tener en cuenta en el tiempo. Hay mucha información sobre el ruido de fondo en el telescopio que, por ejemplo, BBFit no tiene en cuenta para coger los hits. Los datos MonteCarlo no tienen en cuenta flashes de luces de animales ni cosas así, aunque los distintos trigger deberían elinarlos.)

Datos y software de KM3Net

Aún no hay consenso en cómo será el formato final de los datos. De momento creo que usan ficheros JPP y ROOT. También se usa el framework kmepipe. De momento ninguna de esas herramientas nos conviene, aunque nos adaptaremos al formato definitivo cuando lo haya. Además, todo lo de ANTARES se adaptará también.

Singularity

Singularity es una plataforma de contenedores Permite crear y ejecutar contenedores que empaqietan trozos de software de modo que son portables y reproducibles. Su documentación aquí.

Usando Singularity para nuestro container, podemos hacer dos cosas: iniciar una sesión interactiva dentro de él o simplemente ejecutar un script dentro de él. Vamos a escribir los comandos necesarios para cada caso:

  • Sesión interactiva. Podemos iniciarla con el siguiente comando, situándonos en el directorio en el que queremos trabajar:singularity exec --bind /pbs:/pbs --bind /sps/:/sps --bind $TMPDIR/:/mnt /sps/km3net/SeaTray/singularity/images/antares_seatray_18-07-00_km3pipe_8.23.4.simg bash --login. Ahora estaremos dentro del container, con todo el software que contiene disponible. Para salir usamos el comando exit dos veces (una para salir del contenedor y otra para salir del programa Singularity).

  • Para correr un script dentro del contenedor, podemos usar el siguiente script:

    function _SIrunit()
    {
            echo "$1"
            export MY_SCRIPTNAME="$1"
            singularity run --bind <directorio/de/trabajo>:/mnt /sps/km3net/SeaTray/singularity/images/antares_seatray_18-07-00_km3pipe_8.23.4_moresilent_batch.simg
    
    } #When running this Singularity image, it always run MY_SCRIPTNAME variable.
    
    _SIrunit "<script/to/run>"
    

Con esto, seremos capaces de escribir un código que nos permita extarer información de los ficheros i3.

⚠️ **GitHub.com Fallback** ⚠️