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

19
Diseño del software de adquisición de datos para ANAIS Miguel Oliván GIFNA Universidad de Zaragoza

description

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

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

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

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

ANAIS

Miguel OlivánGIFNA

Universidad de Zaragoza

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

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)

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

Requisitos no funcionales

Estabilidad (Cuantificar) Maximizar tiempo vivo (Cuantificar)

Rendimiento suficiente en adquisición Respuesta rápida a eventos

Registro de incidencias

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

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

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

Un vistazo al diseño

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

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 ...

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

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

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

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

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

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

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

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]

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

Ejemplo de adquisición

LTD(VME)

Matacq(VME)

QDC(VME)

Pattern Unit(VME)

IORegister(VME)

Gate GeneratorOR

GATE

DELAYEDSIGNALS

SIGNALS

SOFT RESET

CHANNEL PER SIGNAL

GLOBAL

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

Ejemplo de configuración- event: Group1

trigger: io_reg_0

source: [matacq1_0,matacq1_1, qdc1_0, qdc1_1, pu0]

post_acquire: [ matacq1, io_reg_0]

- source: matacq1_0

board: matacq1

channel: 0

- source: matacq1_1

board: matacq1

channel: 1

- source: qdc1_0

board: qdc1

channel: 0

- source: qdc1_1

board: qdc1

channel: 1

- source: pu0

board: pu0

- matacq: matacq1

baseaddr: 0x10000

channels: [0, 1, 2]

#...

- xdc: qdc1

baseaddr: 0xA0000

channel: [0, 1]

- ltd814: ltd

baseaddr: 0xC0000

channel: [14 , 15]

threshold: [20, 20]

- io_register: io_reg_0

baseaddr: 0xE0000

- pattern_unit_259: pu0

baseaddr: 0x60000

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

Ejemplo de captura

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

Detalles de implementación

Bucle de adquisición: DAQEvent.h

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

Detalles de implementación

Controlador DAQBoard: hw/Matacq.h

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

Detalles de implementación

Instanciar controlador: hw/DAQHardwareFactory.cxx

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

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

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

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→

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

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