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
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. ReadoutGUI & ReadoutShell
7.1. Principles of operation
7.2. Operating the user interface
7.2.1. The Menu bar
7.2.2. The Run Management segment
7.2.3. The Output Log window
7.2.4. The Status Bar
7.3. The event logger and ReadoutShell
7.4. Customizing the ReadoutShell
7.4.1. Environment variables
7.4.2. ReadoutCallouts.tcl
7.4.3. Integrating Tcl scripts
7.4.4. Libraries and Data source providers
7.4.5. Using the ReadoutGUI in your own container script
7.4.6. ReadoutGUI API packages
7.5. Remote control package
8. Event Builder
8.1. Introduction
8.2. Using the event builder
8.3. More detail on when the fragments are ouptutted
8.4. Fragments and Data Format
8.4.1. Anatomy of a fragment
8.4.2. Output Format
8.5. Using the Event Builder With The Manager
9. EVBLite - light event building
9.1. What is EVBLite
9.2. evbtagger - making event builder fragments from ring items.
9.3. The evblite Tcl package.
10. ScalerDisplay
10.1. What is the ScalerDisplay?
10.2. Why does it exist?
10.3. What does it do?
10.4. How to set up the ScalerDisplay
10.4.1. Single Readout Experiment Example
10.4.2. Two Readout Program Example
10.4.3. Run Summary Output of ScalerDisplay
11. Examples (Beginning 11.2-009).
11.1. ReadNSCLDAQFiles - analyze NSCLDAQ data (released 11.2-009)
11.1.1. A framework for analyzing fragments from and event
11.1.2. Sample handlers for fragment types.
11.1.3. A simple program that uses the framework.
11.1.4. Suggestions for embedding the framework in SpecTcl or Root