I. user-guide

Table of Contents
1. NSCLDAQ In a Nut Shell
1.1. Basics of Data Flow in NSCLDAQ
1.2. Pipeline Building, Run Control, and DAQ Modularization
1.3. Built-in Diagnostics
1.4. Extensibility and Openness
2. The Ring Buffer
2.1. Overview
2.2. Data Transfer and Flow Control
2.3. Proxy Rings, Ring Masters, and Network Transparency
2.3.1. Proxy Rings
2.3.2. The RingMaster server
2.4. Ring buffer utilities
3. NSCLDAQ Data Format : The Ring Item
3.1. Generic Ring Item Traits
3.2. The Body Header
3.3. The Ring Item Types
3.3.1. State Change Items
3.3.2. Text Items
3.3.3. Scaler Items
3.3.4. Event Data Items
3.3.5. Event count items
3.3.6. Data format
3.3.7. Event Builder Fragment
3.3.8. Event Builder Parameter
4. NSCLDAQ Manager subsystem (new in 12.0)
4.1. Introduction
4.2. Managed Objects and Configuration
4.2.1. Creating a New Configuration Database.
4.2.2. Singularity Containers and the Manager
4.2.3. Program Definitions
4.2.4. State Machine, Sequences, Sequence Triggers, and Steps
4.2.5. Event Logging and the Manager
4.2.6. The Key Value Store
4.2.7. User and Roles
4.3. Running an Experiment With The Manager
4.3.1. Starting and Stopping the Manager
4.3.2. The Output Monitor
4.3.3. The Run Control Panel
4.3.4. Event Builder Statistics Panel.
4.4. Running Readout Software With the Manager
4.4.1. Starting Readout with REST at BOOT
4.4.2. Controlling Readout From the Manager
4.5. Using the NSCLDAQ Event Builder With the Manager
4.6. Composing experiment configurations from existing pieces
5. VMUSBReadout
5.1. Introduction
5.2. Basic Tenets of VM-USB Operation
5.3. Writing the Configuration Script
5.4. The Slow-Controls Subsystem
5.4.1. Using Remote Procedure Calls To Execute Stacks
5.5. Running the VMUSBReadout program
5.6. Understanding VMUSBReadout Output
5.7. Developing a Timestamp Extractor Library
5.7.1. Implementing a getEventTimestamp() function
5.7.2. Implementing the getScalerTimestamp() function
5.7.3. Implementing an onBeginRun() function
5.8. Extending the Supported Readout Hardware
5.8.1. Writing C++ device support software
5.8.2. Writing device support software in Tcl
5.9. Extending the slow controls subsystem
5.9.1. Writing slow control drivers in C++
5.9.2. Writing slow control drivers in Tcl
5.10. Pushing external data into the event stream
5.10.1. Specifying variables to be monitored.
6. CCUSBReadout
6.1. How the CCUSB readout framework works
6.2. Writing DAQ configuration files
6.3. Writing device support software
6.3.1. The driver onAttach method
6.3.2. The driver Initialize method
6.3.3. The driver addReadoutList method
6.3.4. Initializing the driver with the framework.
6.4. Tcl device driver support
6.4.1. Conceptual background
6.4.2. A sample snit Tcl CCUSB framework driver
6.4.3. A sample Incr-Tcl Tcl CCUSB framework driver
6.4.4. Using Tcl drivers in the DAQ configuration file.
6.5. The slow controls subsystem
6.6. Running CCUSBReadout
6.7. Writing C++ slow controls device drivers
6.7.1. Obtaining the sample driver and its Makefile
6.7.2. Modifying the sample driver and Makefile.
6.8. Writing Tcl slow controls device drivers
6.9. The ccusbcamac Tcl package
6.9.1. Incorporating ccusbcamac in your scripts.
6.9.2. Using ccusbcamac
7. Non stack VMUSB Readout framwork $DAQBIN/VMUSBnostackReadout
7.1. Running the VMUSB no stack readout program
VMUSBnostackReadout -- Use VMUSB in non-atonomous mode in readout
7.2. Supported Event Modules
7.2.1. SIS3820 scaler as a timestamp module
7.3. Supported Scaler modules
8. ReadoutGUI & ReadoutShell
8.1. Principles of operation
8.2. Operating the user interface
8.2.1. The Menu bar
8.2.2. The Run Management segment
8.2.3. The Output Log window
8.2.4. The Status Bar
8.3. The event logger and ReadoutShell
8.4. Customizing the ReadoutShell
8.4.1. Environment variables
8.4.2. ReadoutCallouts.tcl
8.4.3. Integrating Tcl scripts
8.4.4. Libraries and Data source providers
8.4.5. Using the ReadoutGUI in your own container script
8.4.6. ReadoutGUI API packages
8.5. Remote control package
9. Event Builder
9.1. Introduction
9.2. Using the event builder
9.3. More detail on when the fragments are ouptutted
9.4. Fragments and Data Format
9.4.1. Anatomy of a fragment
9.4.2. Output Format
9.5. Using the Event Builder With The Manager
10. EVBLite - light event building
10.1. What is EVBLite
10.2. evbtagger - making event builder fragments from ring items.
10.3. The evblite Tcl package.
11. ScalerDisplay
11.1. What is the ScalerDisplay?
11.2. Why does it exist?
11.3. What does it do?
11.4. How to set up the ScalerDisplay
11.4.1. Single Readout Experiment Example
11.4.2. Two Readout Program Example
11.4.3. Run Summary Output of ScalerDisplay
12. Examples (Beginning 11.2-009).
12.1. ReadNSCLDAQFiles - analyze NSCLDAQ data (released 11.2-009)
12.1.1. A framework for analyzing fragments from and event
12.1.2. Sample handlers for fragment types.
12.1.3. A simple program that uses the framework.
12.1.4. Suggestions for embedding the framework in SpecTcl or Root
13. mvlcgenerate and using the Mesytec MVLC VME controller
13.1. Preparing your experiment to use the MVLC.
13.2. Reference manual for fribdaq-readout
fribdaq-readout -- Read data from a Mesytec MVLC interface to a FRIB/NSCLDAQ ringbuffer
13.3. RING ITEMS PRODUCED
13.4. BUILDING mesytec-mvlc WITH THE OPTIONAL fribdaq-readout PROGRAM
13.5. Extending the generator with loadable C++ generators
13.5.1. Some differences to keep in mind
13.5.2. Structure of a driver.
13.5.3. The Driver command
13.5.4. Initialization code
13.5.5. Building the C++ extension and using it.
13.6. Tcl Drivers
13.6.1. Sample Tcl Driver
13.6.2. Support facilities for Tcl drivers.
13.7. XLM-72 based modlues