DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
add_daphne_conf.py
Go to the documentation of this file.
1#!/usr/bin/env python3
2
3import conffwk
4import os
5import json
6import sys
7
8
9def add_daphne_conf(oksfile:str, object_name:str, json_file:str, timeout_ms:int = 1500):
10 """Script to add a new DaphneConf object from a given json file"""
11
12 print( "Adding file", json_file, "to object", object_name)
13
14 db = conffwk.Configuration("oksconflibs:" + oksfile)
15
16 with open(json_file, 'r') as file:
17 data = json.load(file)
18
19 print(data)
20
21 schemafile='schema/appmodel/PDS.schema.xml'
22 dal = conffwk.dal.module('dal', schemafile)
23
24
25
26
27 def_channel = dal.DaphneV2Channel( "daphne-v2-default-channel",
28 channel_id=100,
29 gain=1,
30 offset=2200,
31 trim=0 )
32 db.update_dal(def_channel)
33
34
35 def_adc = dal.DaphneV2ADC( "daphne-v2-default-adc",
36 low_resolution=False,
37 output_offset_binary=True,
38 MSB_first=True)
39 db.update_dal(def_adc)
40
41 def_pga = dal.DaphneV2PGA( "daphne-v2-default-pga",
42 lpf_cut_frequency=4,
43 integrator_disable=True,
44 gain=False)
45 db.update_dal(def_pga)
46
47 def_lna = dal.DaphneV2LNA( "daphne-v2-default-lna",
48 clamp=0,
49 integrator_disable=True,
50 gain=2)
51 db.update_dal(def_lna)
52
53 def_afe = dal.DaphneV2AFE( "daphne-v2-default-afe",
54 afe_id=100,
55 attenuator=2666,
56 v_bias=0,
57 adc=def_adc,
58 pga=def_pga,
59 lna=def_lna)
60 db.update_dal(def_afe)
61
62 def_board = dal.DaphneV2BoardConf( "daphne-v2-default-board",
63 bias_ctrl=0,
64 self_trigger_threshold=0,
65 default_channel=def_channel,
66 default_afe=def_afe )
67 db.update_dal(def_board)
68
69 maps=[]
70
71
72 for key, value in data.items() :
73 channels = []
74 afes = []
75
76
77 raw_channels = value["channel_analog_conf"]
78 raw_ids = raw_channels["ids"]
79 raw_gains = raw_channels["gains"]
80 raw_offsets = raw_channels["offsets"]
81 raw_trims = raw_channels["trims"]
82 for i, idx in enumerate(raw_ids):
83 c=dal.DaphneV2Channel( f"{object_name}-daphne-{key}-channel-{idx}",
84 channel_id=idx,
85 gain=raw_gains[i],
86 offset=raw_offsets[i],
87 trim=raw_trims[i] )
88 db.update_dal(c)
89 channels.append(c)
90
91
92 raw_afes = value["afes"]
93 raw_afe_ids = raw_afes["ids"]
94 raw_afe_attenuators = raw_afes["attenuators"]
95 raw_afe_biases = raw_afes["v_biases"]
96 raw_adcs = raw_afes["adcs"]
97 raw_adc_res = raw_adcs["resolution"]
98 raw_adc_format = raw_adcs["output_format"]
99 raw_adc_SB = raw_adcs["SB_first"]
100 raw_lnas = raw_afes["lnas"]
101 raw_lna_clamps = raw_lnas["clamp"]
102 raw_lna_gains = raw_lnas["gain"]
103 raw_lna_integrators = raw_lnas["integrator_disable"]
104 raw_pgas = raw_afes["pgas"]
105 raw_pga_cuts = raw_pgas["lpf_cut_frequency"]
106 raw_pga_integrators = raw_pgas["integrator_disable"]
107 raw_pga_gains = raw_pgas["gain"]
108 for i, idx in enumerate(raw_afe_ids):
109 adc = dal.DaphneV2ADC( f"{object_name}-daphne-{key}-adc-{idx}",
110 low_resolution = raw_adc_res[i],
111 output_offset_binary = raw_adc_format[i],
112 MSB_first=raw_adc_SB[i] )
113 db.update_dal(adc)
114
115 lna = dal.DaphneV2LNA(f"{object_name}-daphne-{key}-lna-{idx}",
116 clamp=raw_lna_clamps[i],
117 gain=raw_lna_gains[i],
118 integrator_disable=raw_lna_integrators[i] )
119 db.update_dal(lna)
120
121 pga = dal.DaphneV2PGA(f"{object_name}-daphne-{key}-pga-{idx}",
122 lpf_cut_frequency=raw_pga_cuts[i],
123 gain=raw_pga_gains[i],
124 integrator_disable=raw_pga_integrators[i] )
125 db.update_dal(pga)
126
127 afe = dal.DaphneV2AFE( f"{object_name}-daphne-{key}-afe-{idx}",
128 afe_id=idx,
129 attenuator=raw_afe_attenuators[i],
130 v_bias=raw_afe_biases[i],
131 adc=adc,
132 lna=lna,
133 pga=pga )
134 db.update_dal(afe)
135 afes.append(afe)
136
137
138 name = f"{object_name}-daphne-{key}-conf"
139 detector = value["detector_id"]
140 crate = value["crate_id"]
141 slot = value["slot_id"]
142 board = dal.DaphneV2BoardConf( name,
143 bias_ctrl=value["bias_ctrl"],
144 self_trigger_threshold=value["self_trigger_threshold"],
145 full_stream_channels=value["full_stream_channels"],
146 self_trigger_xcorr=value["self_trigger_xcorr"],
147 tp_conf=value["tp_conf"],
148 compensator=value["compensator"],
149 inverter=value["inverter"],
150 active_channels=channels,
151 active_afes=afes,
152 address=value["ip"],
153 detector_id=detector,
154 crate_id=crate,
155 slot_id=slot,
156 default_channel=def_channel,
157 default_afe=def_afe )
158 db.update_dal(board)
159
160 link=dal.DaphneMapEntry(name,
161 key=f"{detector}.{crate}.{slot}",
162 conf=board)
163 db.update_dal(link)
164
165 maps.append(link)
166
167
168
169
170
171 new_conf = dal.DaphneConf(object_name,
172 timeout_ms=timeout_ms,
173 boards=maps,
174 default_v2_settings=def_board,
175 default_v3_settings=def_board )
176
177 db.update_dal(new_conf)
178
179 db.commit()
180
181
module(name, schema, other_dals=[], backend='oksconflibs', db=None)
Definition dal.py:673