To construct the data stream, also known as the data pipeline, there must be a separate process. In NSCLDAQ, that process is the ReadoutGUI. The ReadoutGUI can be considered the conductor of the entire system. Once it constructs the pipeline, it provides control over the run state of the system. By run state, we intend to mean, in the simplest sense, whether the data sources are producing data or not.
The ReadoutGUI is really the face of NSCLDAQ. It is a graphical user interface that user's interact with to run their experiment. Because of this, it aims to centralize controls over the entire experiment to give the experimenter a bit of a facade to the complexity of their system. A short list of its features are control over data recording, consolidation of output from the various processes in the pipeline, setting up the pipeline, monitoring the health of the data sources, and managing the directory of recorded data files (a.k.a. stagearea).
One other thing that the ReadoutGUI provides, is the ability to modularize the data flow at a higher level. Consider the scenario in which there are two DAQs that operate independently of one another that need to be operated by together through a single ReadoutGUI. The way to do this is by allowing the ReadoutGUIs of each individual DAQ to handle the setup of their component of the data pipeline. A master ReadoutGUI can then simply command those ReadoutGUIs remotely as though they were just like a Readout program.