ProtoDUNE DAQ evolution
Philip Rodrigues
(summarizing discussions with Kurt, Wes, Brett, David C, Josh)
15 Feb 2019
ProtoDUNE DAQ evolution Philip Rodrigues (summarizing discussions - - PowerPoint PPT Presentation
ProtoDUNE DAQ evolution Philip Rodrigues (summarizing discussions with Kurt, Wes, Brett, David C, Josh) 15 Feb 2019 Motivation/strategy Lots of new pieces to design/implement for DUNE DAQ relative to ProtoDUNE DAQ One part of the
Philip Rodrigues
(summarizing discussions with Kurt, Wes, Brett, David C, Josh)
15 Feb 2019
thought about overall dataflow in a self-triggering system.
with minimal changes to the existing system
Probably horizontal (multi-)cosmics
BR Data Queue
Board reader
Fragment generator
Electronics artdaq Not artdaq
BR Data Queue
Board reader
Fragment generator
Electronics
code for the given electronics
fragment generator in a loop to fill BR data queue
could be connected to anything, as long as it passes fragments to the queue
BR Data Queue
Board reader
Timing frag gen
Timing board artdaq Not artdaq
BR Data Queue
Board reader
Fragment generator
Electronics Rest of artdaq (Routing Master, Event builders)
BR Data Queue
Board reader
Fragment generator
Electronics “Trigger at timestamp X” “Trigger at timestamp X”
trigger commands on fibres, and to timing BR
immediately sends data to rest of artdaq
BR Data Queue
Board reader
Timing frag gen
Timing board artdaq Not artdaq
BR Data Queue
Board reader
Fragment generator
Electronics Rest of artdaq (Routing Master, Event builders)
BR Data Queue
Board reader
Fragment generator
Electronics “Trigger at timestamp X” “Trigger at timestamp X”
trigger commands on fibres, and to timing BR
immediately sends data to rest of artdaq
data for the given timestamp from the other BRs
“Give me data for X”
BR Data Queue
Board reader
Timing frag gen
Timing board artdaq Not artdaq
BR Data Queue
Board reader
FELIX frag gen
FELIX Rest of artdaq (Routing Master, Event builders)
BR Data Queue
Board reader
Fragment generator
Electronics “Trigger at timestamp X” “Trigger at timestamp X”
trigger commands on fibres, and to timing BR
immediately sends data to rest of artdaq
data for the given timestamp from the other BRs
trigger is passed to FELIX frag gen via ZeroMQ
“Give me data for X”
“Trigger at timestamp X”
BR Data Queue
Board reader
Timing frag gen
Timing board artdaq Not artdaq
BR Data Queue
Board reader
FELIX frag gen
FELIX Rest of artdaq (Routing Master, Event builders)
BR Data Queue
Board reader
Hit finding frag gen
“Trigger at timestamp X”
produces (CPU or FPGA) hits
that receives hits and “timestamps of interest” (from timing BR)
mode (no immediate send), with high rate of timing board triggers
identify which “timestamps
almost unchanged
“Give me data for Y”
“Trigger at timestamp X”
Software data selector
“Trigger at timestamp Y”
subscriber
message serialize write message serialize write SPSC Queue
trigger matcher
(ext) trigger request compress memcpy frames to fragments fetch data
BR/FragGen
getNext_() BR Data Queue
BR/FragGen
(ext) data request fetch data store to EB
Diagram adapted from Kurt, showing the FELIX board reader. Each vertical line is a thread. Fragment generator has its own internal queue of all data; compresses triggered data and hands it on to artdaq
subscriber
message serialize write message serialize write SPSC Queue
trigger matcher
(ext) trigger request compress memcpy frames and hits to fragments fetch data
BR/FragGen
getNext_() BR Data Queue
BR/FragGen
(ext) data request fetch data store to EB
hit finder thread
(pointers to) all data from SPSC queue find hits Hit Queue hits fetch hits
subscriber
message serialize write message serialize write SPSC Queue
trigger matcher
(ext) trigger request compress memcpy frames to fragments fetch data
BR/FragGen
getNext_() BR Data Queue
BR/FragGen
(ext) data request fetch data store to EB
hit finder thread
(pointers to) all data from SPSC queue find hits hits
BR/FragGen
getNext_() BR Data Queue
BR/FragGen
fetch all data store to artdaq hits from finder thread hits to BR
pass-through
subscriber
message serialize write message serialize write SPSC Queue
trigger matcher
(ext) trigger request compress memcpy frames to fragments fetch data
BR/FragGen
getNext_() BR Data Queue
BR/FragGen
(ext) data request fetch data store to EB
BR/FragGen
getNext_() BR Data Queue
BR/FragGen
fetch all data store to artdaq hits from PBM hits to BR
pass-through
subscriber to hit broadcasts
message write, if algo is passed message
Trigger Command Queue
trigger matcher
(ext) trigger request TriggerCommands that
trigger requests get sent out look for TC in queue
BR/FragGen
getNext_() fragment pushed to EB run sample DataSel algo run sample DataSel algo write, if algo is passed
Here’s an outline implementation of the data selector process implemented as an artdaq board reader, from Kurt:
self-triggers possible
Pierre writing hit-finding fragment generators
reader). Needs a bit more work
process; work out details of what changes in “rest of artdaq”