art-daq / artdaq

Other
0 stars 3 forks source link

Allow experiments to put certain Fragments on separate ROOT Branches #132

Closed eflumerf closed 2 years ago

eflumerf commented 2 years ago

This issue has been migrated from https://cdcvs.fnal.gov/redmine/issues/22145 (FNAL account required) Originally created by @eflumerf on 2019-03-15 15:02:39


Currently, protoDUNE is capable of creating events which are >2 GB in size, with several ~800 MB FELIX Fragments. For the sake of the memory footprint of protoDUNE offline jobs, it would be desirable to put these Fragments into different branches so that they can be retrieved independently of one another.

Currently, artdaq uses the EventBuilder process name (usually DAQ), module name "daq" and instance name based on the Fragment Type to label Fragments. (This occurs in SharedMemoryReader)

Modifying the process name is difficult to do from within artdaq. The Fragment type field is only 8 bits wide, which limits it for this use for extremely large systems (i.e. DUNE).

An additional complication is that all possible combinations for this labeling must be done at SharedMemoryReader construction time, with the "help.reconstitutes" call. Additionally, if a different module name is desired (for example, daq_ID), code has to be added to SharedMemoryEventReceiver to pull Fragments by type and ID (currently only pulled by type).