66 LATENCY_BUFFER_SIZE=100000,
67 DATA_REQUEST_TIMEOUT=1000,
70 Here an entire application controlling one CTB board is generated.
74 HOST=ctb_hsi.host_ctb_hsi
75 HLT_LIST=ctb_hsi.hlt_triggers
76 BEAM_LLT_LIST=ctb_hsi.beam_llt_triggers
77 CRT_LLT_LIST=ctb_hsi.crt_llt_triggers
78 PDS_LLT_LIST=ctb_hsi.pds_llt_triggers
79 FAKE_TRIG_1=ctb_hsi.fake_trig_1
80 FAKE_TRIG_2=ctb_hsi.fake_trig_2
81 BEAM_RESHAPES = ctb_hsi.beam_reshape_lengths
82 CRT_RESHAPES = ctb_hsi.crt_reshape_lengths
83 PDS_RESHAPES = ctb_hsi.pds_reshape_lengths
84 BEAM_DELAYS = ctb_hsi.beam_delays
85 CRT_DELAYS = ctb_hsi.crt_delays
86 PDS_DELAYS = ctb_hsi.pds_delays
95 console.log(
'generating DAQ module')
98 hlt_conf = ctb.Hlt().pod()
99 beam_conf = ctb.Beam().pod()
100 crt_conf = ctb.Crt().pod()
101 pds_conf = ctb.Pds().pod()
102 fake_triggers = ctb.Misc().pod()
105 updated_hlt_triggers =
update_triggers(updated_triggers=HLT_LIST, default_trigger_conf=hlt_conf[
"trigger"])
106 updated_beam_triggers =
update_triggers(updated_triggers=BEAM_LLT_LIST, default_trigger_conf=beam_conf[
"triggers"])
107 updated_crt_triggers =
update_triggers(updated_triggers=CRT_LLT_LIST, default_trigger_conf=crt_conf[
"triggers"])
108 updated_pds_triggers =
update_triggers(updated_triggers=PDS_LLT_LIST, default_trigger_conf=pds_conf[
"triggers"])
111 fake_trig_1 = fake_triggers[
"randomtrigger_1"]
112 fake_trig_2 = fake_triggers[
"randomtrigger_2"]
113 if FAKE_TRIG_1
is not None:
114 fake_trig_1 = FAKE_TRIG_1
115 if FAKE_TRIG_2
is not None:
116 fake_trig_2 = FAKE_TRIG_2
122 updated_beam_delays =
update_array(BEAM_DELAYS, beam_conf[
"delays"])
123 updated_crt_delays =
update_array(CRT_DELAYS, crt_conf[
"delays"])
124 updated_pds_delays =
update_array(PDS_DELAYS, pds_conf[
"delays"])
126 updated_pds_conf = ctb.Pds(triggers=updated_pds_triggers,
127 delays=updated_pds_delays)
128 updated_crt_conf = ctb.Crt(triggers=updated_crt_triggers,
129 delays=updated_crt_delays)
130 updated_beam_conf = ctb.Beam(triggers=updated_beam_triggers,
131 delays=updated_beam_delays)
132 modules += [DAQModule(name = nickname,
133 plugin =
'CTBModule',
134 conf = ctb.Conf(board_config=ctb.Board_config(ctb=ctb.Ctb(misc=ctb.Misc(randomtrigger_1=fake_trig_1, randomtrigger_2=fake_trig_2),
135 HLT=ctb.Hlt(trigger=updated_hlt_triggers),
136 subsystems=ctb.Subsystems(pds=updated_pds_conf,
137 crt=updated_crt_conf,
138 beam=updated_beam_conf),
139 sockets=ctb.Sockets(receiver=ctb.Receiver(host=HOST))
144 modules += [DAQModule(name = f
"ctb_llt_datahandler",
145 plugin =
"HSIDataLinkHandler",
146 conf = rconf.Conf(readoutmodelconf = rconf.ReadoutModelConf(source_queue_timeout_ms = QUEUE_POP_WAIT_MS,
147 source_id=LLT_SOURCE_ID,
148 send_partial_fragment_if_available =
True),
149 latencybufferconf = rconf.LatencyBufferConf(latency_buffer_size = LATENCY_BUFFER_SIZE),
150 rawdataprocessorconf = rconf.RawDataProcessorConf(source_id=LLT_SOURCE_ID),
151 requesthandlerconf= rconf.RequestHandlerConf(latency_buffer_size = LATENCY_BUFFER_SIZE,
154 source_id=LLT_SOURCE_ID,
156 request_timeout_ms = DATA_REQUEST_TIMEOUT,
157 warn_about_empty_buffer =
False,
158 enable_raw_recording =
False)
161 modules += [DAQModule(name = f
"ctb_hlt_datahandler",
162 plugin =
"HSIDataLinkHandler",
163 conf = rconf.Conf(readoutmodelconf = rconf.ReadoutModelConf(source_queue_timeout_ms = QUEUE_POP_WAIT_MS,
164 source_id=HLT_SOURCE_ID,
165 send_partial_fragment_if_available =
True),
166 latencybufferconf = rconf.LatencyBufferConf(latency_buffer_size = LATENCY_BUFFER_SIZE),
167 rawdataprocessorconf = rconf.RawDataProcessorConf(source_id=HLT_SOURCE_ID),
168 requesthandlerconf= rconf.RequestHandlerConf(latency_buffer_size = LATENCY_BUFFER_SIZE,
171 source_id=HLT_SOURCE_ID,
173 request_timeout_ms = DATA_REQUEST_TIMEOUT,
174 warn_about_empty_buffer =
False,
175 enable_raw_recording =
False)
178 queues = [Queue(f
"{nickname}.llt_output",f
"ctb_llt_datahandler.raw_input",
"HSIFrame",f
'ctb_llt_link', 100000),Queue(f
"{nickname}.hlt_output",f
"ctb_hlt_datahandler.raw_input",
"HSIFrame",f
'ctb_hlt_link', 100000)]
180 mgraph = ModuleGraph(modules, queues=queues)
182 mgraph.add_fragment_producer(id = LLT_SOURCE_ID, subsystem =
"HW_Signals_Interface",
183 requests_in = f
"ctb_llt_datahandler.request_input",
184 fragments_out = f
"ctb_llt_datahandler.fragment_queue")
186 mgraph.add_fragment_producer(id = HLT_SOURCE_ID, subsystem =
"HW_Signals_Interface",
187 requests_in = f
"ctb_hlt_datahandler.request_input",
188 fragments_out = f
"ctb_hlt_datahandler.fragment_queue")
190 mgraph.add_endpoint(f
"timesync_ctb_llt", f
"ctb_llt_datahandler.timesync_output",
"TimeSync", Direction.OUT, is_pubsub=
True, toposort=
False)
191 mgraph.add_endpoint(f
"timesync_ctb_hlt", f
"ctb_hlt_datahandler.timesync_output",
"TimeSync", Direction.OUT, is_pubsub=
True, toposort=
False)
193 mgraph.add_endpoint(
"ctb_hsievents", f
"{nickname}.hsievents",
"HSIEvent", Direction.OUT)
196 mgraph.add_endpoint(
None,
None, data_type=
"TimeSync", inout=Direction.IN, is_pubsub=
True)
198 console.log(
'generated DAQ module')
199 ctb_app = App(modulegraph=mgraph, host=HOST, name=nickname)