Diseño del software de adquisición de datos para ANAIS
1. Diseño del software de
adquisición de datos para
ANAIS
Miguel Oliván
GIFNA
Universidad de Zaragoza
2. Requisitos funcionales
Hardware de adquisición intercambiable
Almacenamiento de los datos en formato ROOT
Incorporación de nuevos módulos, vías, fuentes de
datos, cristales, de modo sencillo
Almacenamiento de la configuración junto a los
datos de adquisición
Monitorización (ritmos de adquisición, otros)
3. Requisitos no funcionales
Estabilidad (Cuantificar)
Maximizar tiempo vivo (Cuantificar)
Rendimiento suficiente en adquisición
Respuesta rápida a eventos
Registro de incidencias
4. Pautas de diseño
Keep it Simple → KISS
Fácil de entender, de modificar
Don't repeat yourself → DRY
Fácil de mantener
Fail Fast
Salir rápido en caso de error, informando del motivo
Extensibilidad
6. Un vistazo al diseño
Conceptos fundamentales:
DAQSource → Fuente de datos, datos elementales
DAQEvent → Evento, conjunto de fuentes
asociadas a un trigger
DAQBoard → Dispositivo que puede esperar al
trigger, adquirir datos de fuentes, realizar acciones
al comienzo o después de cada adquisición
Matacq, LTD, XDC, PU, IORegister ...
7. Hardware intercambiable
Polimorfismo: Elección de implementación en
tiempo de ejecución → virtual
Requiere un interfaz común e identificar
funcionalidades:
Init, WaitForTrigger, Acquire,
DoPostAcquire
DAQHardwareFactory instancia las clases en
función de la configuración
8. Hardware intercambiable
Controladores
Derivan de la clase cuya funcionalidad implementa:
DAQBoard
Gestionan tiempos y estado del hardware
Gestionan la relación Fuente ↔ Dispositivo
Gestionan los buffers internamente
9. Almacenamiento de datos
Ficheros ROOT
Estructuras de datos sencillas con datos
elementales
Legibles en tiempo de ejecución y extensibles
Usando Branch(name, address, leaflist,
bufsize) y generando leaflist en tiempo de
ejecución (ver TData.h)
Con los nombres de las fuentes de la configuración
10. Configuración
Formato YAML
Legible
Editable manual y automáticamente
Permite añadir y modificar hardware
Esquema genérico:
- grupo: nombre
clave: valor
clave: [vector, de, valores]
11. Ejemplo de adquisición
SOFT RESET
SIGNALS IO
LTD OR
Register Gate Generator
(VME)
(VME)
GATE
DELAYED
SIGNALS
QDC Matacq Pattern Unit
(VME) (VME) (VME)
CHANNEL PER SIGNAL
GLOBAL
17. Detalles de implementación
Buenas prácticas en C++:
Uso de la librería estándar de C++
std::string
Uso de la STL (Standard Template Library)
RAII (Resource Acquisition Is Initialization)
Otras herramientas: Valgrind, gdb, subversion
18. Puesta en marcha
Implementación buffering, datos opcionales
Análisis de datos
Pruebas de rendimiento y estabilidad → junio
Instalación en Canfranc → ¿1º semana de julio?
Ajuste fino de parámetros → julio
Adquisición prolongada → agostoseptiembre
19. Cuestiones abiertas - futuro
Estructura de datos reordenada en fichero ROOT
Guardar datos opcionalmente. Condiciones
Test Interrupciones vs. Polling
Kernel realtime vs. Normal
Threading en la adquisición
Almacenamiento síncrono vs. Asíncrono
Configuración gráfica