Diseño del software de
adquisición de datos para
          ANAIS

          Miguel Oliván
              GIFNA
     Univers...
Requisitos funcionales

   Hardware de adquisición intercambiable 
   Almacenamiento de los datos en formato ROOT
   In...
Requisitos no funcionales

   Estabilidad (Cuantificar)
   Maximizar tiempo vivo (Cuantificar)
          Rendimiento su...
Pautas de diseño

   Keep it Simple → KISS
          Fácil de entender, de modificar
   Don't repeat yourself → DRY
   ...
Un vistazo al diseño
Un vistazo al diseño

   Conceptos fundamentales:
          DAQSource → Fuente de datos, datos elementales
          DA...
Hardware intercambiable

   Polimorfismo: Elección de implementación en 
     tiempo de ejecución → virtual
   Requiere ...
Hardware intercambiable

   Controladores
          Derivan de la clase cuya funcionalidad implementa: 
            DAQB...
Almacenamiento de datos

   Ficheros ROOT
   Estructuras de datos sencillas con datos 
     elementales
          Legib...
Configuración

   Formato YAML
          Legible
          Editable manual y automáticamente
   Permite añadir y modif...
Ejemplo de adquisición
                     SOFT RESET



   SIGNALS                    IO
              LTD    OR
       ...
Ejemplo de configuración
- event: Group1                                       - source: pu0

 trigger: io_reg_0          ...
Ejemplo de captura
Detalles de implementación
   Bucle de adquisición:   DAQEvent.h
Detalles de implementación
   Controlador DAQBoard:   hw/Matacq.h
Detalles de implementación
   Instanciar controlador:   hw/DAQHardwareFactory.cxx
Detalles de implementación

   Buenas prácticas en C++:
          Uso de la librería estándar de C++
                  ...
Puesta en marcha

   Implementación buffering, datos opcionales
   Análisis de datos 
   Pruebas de rendimiento y estab...
Cuestiones abiertas - futuro

   Estructura de datos reordenada en fichero ROOT 
   Guardar datos opcionalmente. Condici...
Upcoming SlideShare
Loading in …5
×

Diseño del software de adquisición de datos para ANAIS

2,317 views

Published on

Diseño del software de adquisición de datos para ANAIS, un experimento de detección de materia oscura en el laboratorio de Canfranc.

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,317
On SlideShare
0
From Embeds
0
Number of Embeds
632
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Diseño del software de adquisición de datos para ANAIS

  1. 1. Diseño del software de adquisición de datos para ANAIS Miguel Oliván GIFNA Universidad de Zaragoza
  2. 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. 3. Requisitos no funcionales  Estabilidad (Cuantificar)  Maximizar tiempo vivo (Cuantificar)  Rendimiento suficiente en adquisición  Respuesta rápida a eventos  Registro de incidencias
  4. 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
  5. 5. Un vistazo al diseño
  6. 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. 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. 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. 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. 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. 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
  12. 12. Ejemplo de configuración - event: Group1 - source: pu0 trigger: io_reg_0 board: pu0 source: [matacq1_0,matacq1_1, qdc1_0, qdc1_1, pu0] - matacq: matacq1 post_acquire: [ matacq1, io_reg_0] baseaddr: 0x10000 - source: matacq1_0 channels: [0, 1, 2] board: matacq1 #... channel: 0 - xdc: qdc1 - source: matacq1_1 baseaddr: 0xA0000 board: matacq1 channel: [0, 1] channel: 1 - ltd814: ltd - source: qdc1_0 baseaddr: 0xC0000 board: qdc1 channel: [14 , 15] channel: 0 threshold: [20, 20] - source: qdc1_1 - io_register: io_reg_0 board: qdc1 baseaddr: 0xE0000 channel: 1 - pattern_unit_259: pu0 baseaddr: 0x60000
  13. 13. Ejemplo de captura
  14. 14. Detalles de implementación  Bucle de adquisición: DAQEvent.h
  15. 15. Detalles de implementación  Controlador DAQBoard: hw/Matacq.h
  16. 16. Detalles de implementación  Instanciar controlador: hw/DAQHardwareFactory.cxx
  17. 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. 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 → agosto­septiembre
  19. 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

×