Utilisation de la DAQ LIROC-PICOTDC
Installation et configuration
Listes des machines utiles
Une seule machine en plus de celle de la DAQ doit être accessible:
- MongoDB ASIC/Configuration/Runs: lyoilcdaq01 (CC IN2P3 Proxmox)
Driver avec la carte KC705
Le driver et des scripts de validation et de calibration écrits par Loup se trouve à l'adresse suivante: https://gitlab.in2p3.fr/picmic/liroc-picotdc/liroc_picotdc_daq.git
Il est nécessaire d'installer sur le PC d'acquisition ce repository qui contient entre autre le driver python IPBUS développé par Loup.
Software de plus haut niveau et GUI
Le software de DAQ et les interfaces (graphique et ligne de commande) se trouve dans le repository pmdaq
Il est recommandé de l'installer sous /opt
Le code pour la carte Liroc/PicoTDC se trouve sous /opt/pmdaq/picmic
Environnement
Pour utiliser l'ensemble des softwares décrits cid-dessus il faut installer une certain nombre de paquets python sous pip:
pip3 install ttkbootstrap matplotlib numpy zstd zstandard pymongo pyvisa pyvisa_py requests termcolor transitions matplotlib
Sous Ubuntu il n'est pas possible d'utiliser pip directement , la solution la plus simple est donc de créer un espace virtuel de travail:
sudo apt install python3-venv
python3 -m venv myenv
#Activation
myenv/bin/activate
#and later to exit this python environnement
deactivate
Après activate le prompt bash change en (myenv) acqzzz@lyocmszz , on restore l'ancien environnment python avec deactivate
Enfin il faut déclarer un certain nombre de variable d'environnement pour accéder aux différents software et à la base de données:
export MGDBLOGIN=a...c/R...8@lyoilcdaq01:27017@PICMIC
export PYTHONPATH=${HOME}/liroc_picotdc_daq/software/:$PYTHONPATH
export PYTHONPATH=/opt/pmdaq/picmic/db/:/opt/pmdaq/picmic/bin/:/opt/pmdaq/picmic/share/:$PYTHONPATH
export PATH=/opt/pmdaq/picmic/db/:/opt/pmdaq/picmic/bin/:/opt/pmdaq/picmic/share/:$PATH
En résumé
Il faut:
-
avoir accés au driver de Loup
liroc_picotdc_daq -
avoir accés au software de DAQ dans
/opt/pmdaq/picmic -
avoir un compte dans la base MongoDB sur lyolicdaq01
-
avoir créer un environnement virtuel python et l'avoir activé
-
définir l'accés à la DB et les chemins vers les modules python et les scripts
Outils de base de donnée
La base de donnée MongoDB est utilisée à plusieurs niveaux:
-
Stockage des paramètres de chacun des 2 ASICs sous forme d'un fichier csv
-
Stockage des configurations d'acquisition pour la calibration et les prises données normales
-
Stockage des informations de run pour chaque prise de donnée
-
Stockage des résultats des tests de calibration.
Un seule module python /opt/pmdaq/picmic/db/picmic_register_access.py fournit l'ensemble des méthodes pour gérer ces différents aspects
Une interface à ce script en ligne de commande picdbtool permet un accés rapide aux informations:
(testtkenv) acqcmsmu@lyocmsmu06:~$ picdbtool --help
usage: picdbtool [-h]
[--states | --tests | --runs | --configurations | --asic-info | --upload | --acq-upload | --scurves | --download | --acq-download]
[--state STATE] [--version VERSION] [--board BOARD]
[--pico-file PICODEF] [--liroc-file LIROCDEF]
[--file CONFIG_FILE] [--comment COMMENT] [--param PARAM]
[--analysis ANALYSIS] [--asic ASIC] [--name NAME] [--out OUT]
options:
-h, --help show this help message and exit
--states List all the available states
--tests List all the available tests
--runs List all the available runs
--configurations List all the available acquisition configurations
--asic-info print picmic asic file for a given --state and
--version
--upload Upload a new state given --state and a given
--comment, with --board #id, --liroc-file and --pico-
file specified
--acq-upload Upload a new acquisition configuration, with a given
--comment and --config-file specified
--scurves Download the last SCURVE test for --state and
--version --board #id, --analysis (SCURVE_1 or
SCURVE_A) and --asic (LEFT_BOT..). Optionnaly --out
#jsonfile can be given
--download download the state specified in --state=state
--version=version
--acq-download download the acquisition specified in --name=state
--version=version
--state STATE DB State
--version VERSION DB state version
--board BOARD board ID
--pico-file PICODEF picotdc default file
--liroc-file LIROCDEF
liroc default file
--file CONFIG_FILE acquisition configuration file
--comment COMMENT Comment
--param PARAM Parameter name
--analysis ANALYSIS Analysis name
--asic ASIC Asic name
--name NAME Configuration name
--out OUT Output file name
L'outil permet essentiellement de stocker les configurations d'acquisition et dávoir un bookkeeping facilement accessible des différentes tables.
Description des ASICs
Deux fichiers de descriptions des paramètres de chaque ASIC se trouve dans:
-
/opt/pmdaq/picmic/etc/default_liroc.csv -
/opt/pmdaq/picmic/etc/default_pico.csv
Ils servent de base à la création d'un état pour une nouvelle carte.
Création d'un état pour la carte dans la base de donnée
import picmic_register_access as pr
s=pr.instance()
s.list_setups()
s.create_setup("PICMIC_BOARD2")
pr=pr.picmic_registers(f_id=2)
pr.load_defaults(fnp="/opt/pmdaq/picmic/etc/default_pico.csv",
fnl="/opt/pmdaq/picmic/etc/default_liroc.csv")
s.setup.add_picmic(pr)
s.upload_changes("un test de creation")
On peut également utiliser la méthode upload de picdbtool
Cet état sera ensuite modifié automatiquement par les processus de calibration.
Description des configurations d'acquisition
Création d'une configuration pour les calibrations
Un fichier typique pour la calibration est le suivant:
{
"comment":"Single channel Loop Board 10 version 9",
"calibration": "SCURVE_1",
"db": {
"board": 10,
"state": "PICMIC_TEST_JUNE",
"version": 9
},
"location": "EDAQLAB_NOV2025",
"thmin":450,
"thmax":580,
"thstep":1,
"dc_pa":0
"name": "PICMIC_NOV2025_CALIB",
"version": 1,
}
Les tags JSON sont:
-
comment: Le commentaire pour un upload des résultats dans la base de donnée. Si ce tag est absent les résultats de sont pas sauvegardés -
calibration: Trois type de calibration sont possibles, toutes liées à la détermination d'un seuil commun à tous les canaux. Les deux premières sont uniquement des mesures (scan du seuil commun et construction de S-Curves), la troisième est un alignement des canaux à l'aide du paramètre DAC_local -
SCURVE_1: Boucle sur tous les canaux et construit la S-Curve de chaque canal séparemment -
SCURVE_A: Construit la S-Curve de tous les canaux simultanément -
ALIGN: Aligenement de tous les canaux et mise à jour de la base de donnée:-
Boucle sur les canaux et détermination du point de basculement individuel
-
Calcul du seuil médian (cible)
-
Boucle sur les valeurs de DAC_local de chaque canal pour ajuster leur seuil au plus près du seuil cible
-
Sauvegarde dans la base de donnée d'une nouvelle version avec les nouvelles valeurs de DAC_local et le nouveau seuil
-
-
db: Configuration des paramètres initiaux -
board: Numéro du board -
state: Nom du state dans la base -
version: Numéro de version dustate -
location: Nom de l'expérience. Il détermine la séquence de numéro de run. Tous nouveau run réinitialise cette séquence à 1001 -
thmin: Seuil minimal des S-Curves -
thmax:Seuil maximal des S-Curves -
thstep:Pas des S-Curves -
dc_pa: Si différent de 0, valeur de DC_PA à appliquer à tous les canaux -
name:Nom de la configuration -
version:version de la configuration
Création d'une configuration pour les prises de données
Pour des prises de données standard, où les paramètres des ASICs ne sont pas modifiés lors du run la configuration est la suivante:
{
"name": "UN_TEST",
"version": 1,
"location": "EDAQLAB_NOV2025",
"storage": {
"directory": "/tmp/",
"type": "disk"
},
"configuration": "TIMELOOP_FINE_BOARD10",
"configuration_list": {
"NORMAL_FINE_BOARD10": {
"comment": "Normal run",
"type": "NORMAL",
"db": {
"state": "PICMIC_TEST_JUNE",
"version": 9,
"board": 10},
"mode": "fine",
"threshold": 525,
"channel_list": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],
"ctest_list": []
},
"TIMELOOP_FINE_BOARD10": {
"type": "TIMELOOP",
"comment": "Time resolution scan from 30 to 500 fC rise 1.5 ns",
"use_pulser": "/opt/pmdaq/picmic/etc/pulse_config15.json",
"db": {
"state": "PICMIC_TEST_JUNE",
"version": 9,
"board": 10},
"mode": "fine",
"threshold": 525,
"channel_list": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],
"ctest_list": [],
"rise": 1.5,
"delay": 130,
"vmin": 0.3,
"vmax": 5.0,
"nstep": 20,
"nacq": 600
}
}
}
Les tags JSON sont partiellement commun à la configuration de calibration:
-
name: Nom de la configuration -
version: Version de la configuration -
location: Nom de l'expérience. Il détermine la séquence de numéro de run. Tous nouveau run réinitialise cette séquence à 1001 -
storage: Type et emplacement du stockage -
type: disk/memory/dummy -
directory: Emplacement où les fichiers seront écrits (/tmp,/dev/shm/events....) -
configuration: Nom du jeu de paramètres à utiliser -
configuration_list: Liste des jeux de paramètres, pour chacun d'eux, on a: -
type: Le type de boucle, i.e NORMAL/TIME_LOOP -
db: Configuration des paramètres initiaux-
board: Numéro du board -
state: Nom du state dans la base -
version: Numéro de version dustate
-
-
comment: Le commentaire pour l'obtention d'un nouveau numéro de run et l'insertion dans la table des runs -
mode: Mode of the picotdc (fine/coarse). Optionnel. Par défaut la configuration de la base de donnée est utilisée -
threshold: Seuil absolu à appliquer -
channel_list: Liste des canaux (LIROC) à utiliser -
ctest_list: Liste des canaux d'injection (CTEST du LIROC) à utiliser
Dans le cas d'un jeu de TIME_LOOP on a les paramètres supplémentaires:
-
pulser: Fichier de configuration du générateure Agilent -
rise: temps de montée du pulse en ns -
delay: Retard du pulse en ns -
vmin: Valeur minimal de la tension injectée sur la capacité -
vmax: Valeur maximal de la tension injectée sur la capacité -
nstep: Nombre de pas entrevminetvmax -
nacq: Nombre d'évènements par pas
Injection
Ce mode TIME_LOOP permet de gérer l'injection à partir du génératuer AGILENT Keysight 81160A. On utilise les deux sorties Out 1vers un canal de LIROC, Out 2 vers l'entrée digitale 0 du PicoTDC. Le pulse est déclenchée par la carte KC705 sur l'entrée External in du générateur. Le fichier de configuration est du type:
{
"ip": "134.158.1xx.1xx",
"voltage_low": 0,
"voltage_high": 0.150,
"width": 1e-07,
"delay": 120.0e-9,
"polarity": "INV",
"rise_time": 1e-09,
"fall_time": 1e-06,
"trigger_mode": "EXT",
"trigger_slope": "POS",
"trigger_level": 0.7
}
Ce fichier est chargé par défaut puis modifié par les tags rise et delay. Dans le mode TIME_LOOP, on boucle sur voltage_high entre vmin et vmax sur nstep points. A chaque point, on stocke un run header avec les valeurs de tension et on acquiert nacq fenêtres.
Stockage des configurations
Le stockage des configurations se fait avec picdbtool. Le fichier JSON doit contenir le nomde la configuration (tag name) etle numéro de version est automatiquement incrémenté:
picdbtool --acq-upload --file ./maconf.json --comment "Version d'acquisition de janvier 2026"
On peut ensuite avoir lal iste des versions stockées avec
picdbtool --configurations
Tue Nov 25 11:29:43 2025 1 PICMIC_NOV2025 Configuration pour le premier board mode fine
Tue Nov 25 14:23:11 2025 2 PICMIC_NOV2025 Comment is missing
Fri Nov 28 11:40:35 2025 3 PICMIC_NOV2025 Configuration pour le premier board mode fine dans la DB
Tue Jan 20 11:57:19 2026 1 NORMAL_JAN2026 Acquisition standard e time loop , test de Janvier 2026
Tue Jan 20 11:58:23 2026 1 CALIB_JAN2026 Calibration (SCURVE_1) test de Janvier 2026
Et l'on peut récupérer une configuration avec:
picdbtool --acq-download --name CALIB_JAN2026 --version 1
Looking for CALIB_JAN2026 1
CALIB_JAN2026 1 Calibration (SCURVE_1) test de Janvier 2026
{'name': 'CALIB_JAN2026', 'version': 1, 'db': {'state': 'PICMIC_TEST_JUNE', 'version': 9, 'board': 10}, 'thmin': 460, 'thmax': 560, 'thstep': 1, 'location': 'EDAQLAB_NOV2025', 'dc_pa': 0, 'comment': 'Un test de la nouvelle version de docalib', 'calibration': 'SCURVE_1'}
La configuration est alors stockée dans /dev/shm/config/CALIB_JAN2026_1.json
Interface en ligne de commande
Deux scripts docalib et dorun permettent de lancer en ligne de commande des calibrations ou des runs statndards. Le plus simple est d'utiliser les fichiers de configurations précédemment décrits et de lancer les cripts avec l'option --file
Calibrations
usage: docalib [-h] [--allchan | --one] [--state STATE] [--version VERSION] [--feb FEB] [--min THMIN] [--max THMAX] [--step THSTEP]
[--dcpa DCPA] [--upload UPLOAD] [--location LOCATION] [--resolution RESMODE] [--file FILE]
options:
-h, --help show this help message and exit
--allchan Make Scurve allchannels on
--one Make Scurve one by one
--state STATE DB State
--version VERSION DB state version
--feb FEB FEB id
--min THMIN Minimal 10b dac
--max THMAX Maximal 10b dac
--step THSTEP Step 10b dac
--dcpa DCPA DC_PA common value
--upload UPLOAD Upload comment
--location LOCATION Experiment name
--resolution RESMODE Resolution mode
--file FILE Calibration configuration file
Run standards
usage: dorun [-h] [--file FILE]
options:
-h, --help show this help message and exit
--file FILE Daq configuration file