weeks
play

weeks Philip Rodrigues Data selection meeting 22 March 2019 - PowerPoint PPT Presentation

Self-trigger work in DAQ weeks Philip Rodrigues Data selection meeting 22 March 2019 Overall plan reminder New components: Hit finding in FELIX BR (later, FPGA) Hit-finding board reader Software data selector Trigger at


  1. Self-trigger work in DAQ weeks Philip Rodrigues Data selection meeting 22 March 2019

  2. Overall plan reminder • New components: • Hit finding in FELIX BR (later, FPGA) • Hit-finding board reader • Software data selector “Trigger at timestamp X” • ptmp trigger primitive message library FELIX Not artdaq Timing board • Modifications to timing BR artdaq “Trigger at timestamp Y” Hit finding Timing FELIX Hits via PTMP frag gen frag gen frag gen One per link (ZeroMQ) BR BR BR Data Data Data Queue Queue Queue Board reader Board reader Board reader “Give me data for Y” Hits via PTMP Software data selector Rest of artdaq (Routing Master, Event builders) “Trigger at timestamp Y” (fragment)

  3. Hit finding in FELIX BR • Fixed a stupid but significant bug which caused times of hits to be slewed by varying amounts • Also, changed the way the code works to make things clearer. Used to process a ~ms window at a time. Now just process each netio message (12 ticks) as it comes. Finding hits continuously on all data; only write them out for triggered data • Plot is the raw ADC collection values in an event (run 7081 evt1) which I ran with just one FELIX link (1/10 APA)

  4. Hit finding in FELIX BR • Here’s that event with the hits overlaid in green • When asked for timestamp t , FELIX returns a window starting at t -500 ticks. My code that finds hits doesn’t apply the same offset, so I added 500 to my hit times for this plot

  5. Hit finding in FELIX BR • Another event, to convince you that the first wasn’t a fluke (run 7081, evt 2)

  6. Hit finding in FELIX BR • Same with hits

  7. Hit finding in FELIX BR • Here’s a plot of CPU usage (% of one core) vs time (in half -seconds) for each of the links in APA6 for a whole (short) run. Apologies for the quality • At the start of the run, something in the netio system gets behind, but the hit-finding catches up and settles at 60-70% per link • Not much difference between links, as expected: amount of calculation needed doesn’t depend much on # of hits • CPU usage includes unpacking the WIB format, pedestal finding, pedestal RMS finding, 7-tap FIR filter and hit finding, plus storing hits in ring buffer

  8. Hit-finding board reader progress • Rationales for hit-finding BR: • Present consistent interface to artdaq for CPU and FPGA hits • Send hits to data selector process “Trigger at timestamp X” • Provide hits for triggered data to artdaq as fragments (I’ve been doing this in a FELIX Not artdaq Timing board hacky non-maintainable way in the FELIX BR till now) artdaq • Brett’s trigger primitive message - passing library is available, and built “Trigger at timestamp Y” Hit finding Timing FELIX Hits via PTMP on the ProtoDUNE cluster: frag gen frag gen frag gen One per link • https://github.com/brettviren/ptmp (ZeroMQ) • Pierre has written the BR. During BR BR BR Data Data Data DAQ weeks, we: Queue Queue Queue • Added it to the DAQ backend and run control (thanks John, Enrico) Board reader Board reader Board reader • Added a DAQ configuration that uses it “Give me data for Y” • Added code to FELIX BR to send hits to Hits via PTMP Software HF BRs (red oval in diagram) data selector • Showed that hit-finding BR is seeing hits Rest of artdaq from FELIX BR (Routing Master, Event builders) “Trigger at timestamp Y” (fragment)

  9. Hit-finding board reader todo • Hits go out of HF BR in two ways. Need to test both: 1. ptmp to data selector (red oval) “Trigger at timestamp X” 2. artdaq to offline for triggered data (use timing system random triggers initially) FELIX Not artdaq Timing board • Item 2 needs a raw decoder written artdaq • Need to check we can get to full APA (tests on one link so far) “Trigger at timestamp Y” Hit finding Timing FELIX Hits via PTMP frag gen • Housekeeping: merge with other frag gen frag gen One per link (ZeroMQ) changes to DAQ system, test BR BR BR • Start to integrate with Giovanna and Data Data Data Queue Queue Queue Alessandro’s work on data selector • Add ptmp receiver code in data sel Board reader Board reader Board reader • Later, think about how to aggregate multiple links “Give me data for Y” Hits via PTMP Software data selector Rest of artdaq (Routing Master, Event builders) “Trigger at timestamp Y” (fragment)

  10. Link aggregation in data sel • ZeroMQ/ptmp combines streams for us: data sel will see all links’ data by magic, in some order decided by ZeroMQ • How does data sel decide when to t0 t1 t2 send a group of TPs “downstream” to processing algorithms? t0 t1 t2 t3 t0 t0 t1 t1 t0 t1 t2 t2 t3 • One option: take whatever’s available at some fixed time, pass variable-sized windows downstream t0 t1 • Another option: wait till some full window is available from all links, pass fixed-size windows downstream ZeroMQ/ptmp does this for us • Probably others • Significant overlap with the “escalator” protocol from Oxford

  11. Summary/next steps • Hit- finding BR for CPU hits mostly in place. More tests to do, which we’ll do in upcoming DAQ Fridays • More substantial work to integrate with data selector BR

Recommend


More recommend