MATE Analysis Tool es una pequeña herramienta en C++ basada en ROOT que facilita el procesamiento y análisis de datos del Muon Andes Telescope (MATE).
El detector MATE cuenta con tres módulos de detección: M101, M102 y M103, cada uno compuesto por 2 planos ortogonales de barras centelladoras (planos A y B).
- Validación de fechas (m101/m102/m103): Detecta archivos faltantes, líneas corruptas y otros posibles errores para cada archivo con datos del detector, genera un informe y separa los datos inválidos en un directorio definido por el usuario.
- Conversión a ROOT: Luego de validar los archivos, el programa da la opción de seleccionar una lista o intervalo de fechas para procesar los datos limpios y crear un
TTreepara realizar el análisis con ROOT. El programa además da la opción de transformar los datos limpios en archivos CSV los cuales contienen la información de los 6 planos del detector, de esta manera se facilita un posterior análisis de los datos con herramientas externas. Los archivos resultantes .CSV y .ROOT poseen el siguiente formato en su columnas/branches:
| Columna / Branch | Descripción |
|---|---|
ts |
UNIX Timestamp (resolución de 1 s). Estampa temporal generada por el router al recibir el evento. |
A1, B1 |
Barras activadas en los planos A1 y B1 del módulo M101. |
A2, B2 |
Barras activadas en los planos A2 y B2 del módulo M102. |
A3, B3 |
Barras activadas en los planos A3 y B3 del módulo M103. |
nA1, nB1, nA2, nB2, nA3, nB3 |
Contadores de hits simultáneos por plano (útiles para filtros de multiplicidad). |
ts2_m101, ts2_m102, ts2_m103 |
eKit Local Timestamp (resolución de 100 ns) de cada módulo. Puede ser 0 debido a un bug. Se usan en el ajuste exponencial. |
evt |
Identificador del evento. |
| NOTA: Las columnas Ai y Bi en los archivos .csv corresponden a listas contenidas dentro de un paréntesis (), mientras que las branches del TTree corresponden a vectores de tamaño 12. Es importante mencionar que el método Scan de ROOT solo permite mostrar un único elemento de un vector, por defecto es el primer elemento (Ai[0] y Bi[0]) |
-
Concatenación de árboles: El programa permite unir una lista o intervalo de archivos ROOT usando la clase
TChaincon opción de exportar el archivo .root resultante.
-
Filtrado interactivo: permite aplicar expresiones ROOT para cortes en los datos de todo tipo, ya sea en memoria o creando un nuevo árbol filtrado.
-
Generación de histogramas 1D/2D: produce reportes en PDF con estilos predefinidos.

-
Ajuste exponencial del rate: procesa timestamps de los tres planos, calcula la distribución de tiempos entre eventos y ajusta un modelo exponencial, mostrando gráficas y parámetros.

- Compilador con soporte C++17
- ROOT 6 instalado (disponible como
root-config)
MATE-Analysis-Tool/
├── include/ # headers (.hpp)
├── src/ # implementaciones (.cpp)
└── README.md # este archivo
- Clona el repositorio:
git clone https://github.com/diegolmos/MATE-Analysis-Tool.git cd MATE-Analysis-Tool - Ejecuta:
g++ -std=c++17 -Iinclude \ src/PathConfig.cpp src/DataValidator.cpp src/DataProcessor.cpp \ src/DateSelector.cpp src/TreeLoader.cpp src/DataFilter.cpp \ src/HistogramMaker.cpp src/RateFitter.cpp src/main.cpp \ $(root-config --cflags --libs) -o MATE-Analysis-Tool
El binario MATE-Analysis-Tool quedará listo para su uso.
Antes de iniciar, prepare dos carpetas:
- data/: coloque los archivos de texto con datos del detector, nombrados como
YYYY_MM_DD_06h00_mate-m101.txt,YYYY_MM_DD_06h00_mate-m102.txtyYYYY_MM_DD_06h00_mate-m103.txt. - badData/: aquí se moverán las triadas m101/m102/m103 inválidas (faltantes o con errores de formato y escritura ).
Para ejecutar la herramienta, se pedirá especificar también el nombre archivo de reporte, este archivo de texto contiene la información de los datos inválidos, indicando la línea, nombre del archivo y el tipo de problema que presenta.
En este flujo:
- Validación: se comprueba cada fecha en
data/y se registra enreporte.txtcualquier triada incompleta o línea corrupta; las triadas erróneas se mueven abadData/. - Procesamiento: las triadas válidas generan un archivo
YYYYMMDD_combined_output.txty un árbol ROOTYYYYMMDD_output.rooten el directorio actual. - Menú interactivo: ofrece opciones para:
- Concatenar árboles ROOT y guardar el resultado.
- Aplicar filtros dinámicos.
- Generar histogramas 1D/2D en PDF.
- Ajustar la distribución de tiempos entre eventos con modelo exponencial.
- PathConfig: configura rutas de datos y reporte.
- DataValidator: inspecciona y reporta triadas de texto.
- DateSelector: maneja la selección de fechas.
- DataProcessor: convierte triadas en combinados y árboles ROOT.
- TreeLoader: concatena y explora árboles ROOT.
- DataFilter: construye filtros con expresiones ROOT.
- HistogramMaker: crea histogramas 1D/2D en PDF.
- RateFitter: implementa la limpieza de timestamps y el ajuste exponencial del rate.
- Validación y separación de datos malos.
- Procesamiento de triadas válidas.
- Carga/concatenación de ROOT.
- Filtrado interactivo.
- Generación de histogramas.
- Ajuste exponencial del rate.
- Incluir branch/columna de zenith para cada medición/fecha, necesaria para hacer el ajuste de rate vs. ángulo.
- permitir también concatenar archivos .csv
- Incluir branch de theta_x junto a theta_y
- Crear módulo que permita hacer el fitting de rate vs. ángulo
- Implementación en QT creator
- Optimizar validación de fechas

