DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
wibapp_gen.py
Go to the documentation of this file.
1# This module facilitates the generation of WIB modules within WIB apps
2
3# Set moo schema search path
4from dunedaq.env import get_moo_model_path
5import moo.io
6moo.io.default_load_path = get_moo_model_path()
7
8# Load configuration types
9import moo.otypes
10
11moo.otypes.load_types('wibmod/wibconfigurator.jsonnet')
12moo.otypes.load_types('wibmod/protowibconfigurator.jsonnet')
13
14# Import new types
15import dunedaq.wibmod.wibconfigurator as wib
16import dunedaq.wibmod.protowibconfigurator as protowib
17
18
19from daqconf.core.app import App, ModuleGraph
20from daqconf.core.daqmodule import DAQModule
21
22#===============================================================================
23def get_wib_app(nickname,
24 endpoint,
25 version, gain, gain_match, shaping_time, baseline, pulse_dac, pulser, buf, detector_type,
26 coldadc_conf, line_driver, pulse_channels,
27 wib_pulser_en, wib_pulser_dac, wib_pulser_period, wib_pulser_phase, wib_pulser_duration,
28 host="localhost"):
29 '''
30 Here an entire application consisting only of one (Proto)WIBModule module is generated.
31 '''
32
33 # Define modules
34
35 modules = []
36
37 if version == 1:
38 modules += [DAQModule(name = nickname,
39 plugin = 'ProtoWIBConfigurator',
40 conf = protowib.WIBConf(wib_addr = endpoint,
41 settings = protowib.WIBSettings(
42 femb1 = protowib.FEMBSettings(),
43 femb2 = protowib.FEMBSettings(),
44 femb3 = protowib.FEMBSettings(),
45 femb4 = protowib.FEMBSettings()
46 )
47 )
48 )]
49 else:
50 coldadc_inputs = dict()
51 coldadc_regs = ['reg_0', 'reg_4', 'reg_24', 'reg_25', 'reg_26', 'reg_27', 'reg_29', 'reg_30']
52 for idx, val in enumerate(coldadc_conf):
53 coldadc_inputs[coldadc_regs[idx]] = val
54 print(coldadc_inputs)
55 modules += [DAQModule(name = nickname,
56 plugin = 'WIBModule',
57 conf = wib.WIBConf(wib_addr = endpoint,
58 settings = wib.WIBSettings(
59 pulser = pulser,
60 detector_type = detector_type,
61 femb0 = wib.FEMBSettings(gain=gain, gain_match=gain_match, peak_time=shaping_time, baseline=baseline, pulse_dac=pulse_dac, buffering=buf, test_cap=pulser, line_driver=line_driver, pulse_channels=pulse_channels),
62 femb1 = wib.FEMBSettings(gain=gain, gain_match=gain_match, peak_time=shaping_time, baseline=baseline, pulse_dac=pulse_dac, buffering=buf, test_cap=pulser, line_driver=line_driver, pulse_channels=pulse_channels),
63 femb2 = wib.FEMBSettings(gain=gain, gain_match=gain_match, peak_time=shaping_time, baseline=baseline, pulse_dac=pulse_dac, buffering=buf, test_cap=pulser, line_driver=line_driver, pulse_channels=pulse_channels),
64 femb3 = wib.FEMBSettings(gain=gain, gain_match=gain_match, peak_time=shaping_time, baseline=baseline, pulse_dac=pulse_dac, buffering=buf, test_cap=pulser, line_driver=line_driver, pulse_channels=pulse_channels),
65 coldadc_settings = wib.ColdADCSettings(coldadc_inputs),
66 wib_pulser = wib.WIBPulserSettings(enabled_0=wib_pulser_en, enabled_1=wib_pulser_en, enabled_2=wib_pulser_en, enabled_3=wib_pulser_en, pulse_dac=wib_pulser_dac, pulse_period=wib_pulser_period, pulse_phase=wib_pulser_phase, pulse_duration=wib_pulser_duration)
67 )
68 )
69 )]
70
71 mgraph = ModuleGraph(modules)
72 wib_app = App(modulegraph=mgraph, host=host, name=nickname)
73
74 return wib_app
get_wib_app(nickname, endpoint, version, gain, gain_match, shaping_time, baseline, pulse_dac, pulser, buf, detector_type, coldadc_conf, line_driver, pulse_channels, wib_pulser_en, wib_pulser_dac, wib_pulser_period, wib_pulser_phase, wib_pulser_duration, host="localhost")
Definition wibapp_gen.py:28