NSCL DAQ Software Documentation

Table of Contents
I. user-guide
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.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
4. VMUSBReadout
4.1. Introduction
4.2. Basic Tenets of VM-USB Operation
4.3. Writing the Configuration Script
4.4. The Slow-Controls Subsystem
4.5. Running the VMUSBReadout program
4.6. Understanding VMUSBReadout Output
4.7. Developing a Timestamp Extractor Library
4.8. Extending the Supported Readout Hardware
4.9. Extending the slow controls subsystem
4.10. Pushing external data into the event stream
5. CCUSBReadout
5.1. How the CCUSB readout framework works
5.2. Writing DAQ configuration files
5.3. Writing device support software
5.4. Tcl device driver support
5.5. The slow controls subsystem
5.6. Running CCUSBReadout
5.7. Writing C++ slow controls device drivers
5.8. Writing Tcl slow controls device drivers
5.9. The ccusbcamac Tcl package
6. ReadoutGUI & ReadoutShell
6.1. Principles of operation
6.2. Operating the user interface
6.3. The event logger and ReadoutShell
6.4. Customizing the ReadoutShell
6.5. Remote control package
7. Event Builder
7.1. Introduction
7.2. Using the event builder
7.3. More detail on when the fragments are ouptutted
7.4. Fragments and Data Format
8. ScalerDisplay
8.1. What is the ScalerDisplay?
8.2. Why does it exist?
8.3. What does it do?
8.4. How to set up the ScalerDisplay
II. simple-setups
9. A Simple VMUSBReadout Experiment Tutorial
9.1. Introduction
9.2. Setting up the Electronics
9.3. The Configuration Files
9.4. Running VMUSBReadout
9.5. Understanding the Output
9.6. Developing a Tailored SpecTcl
9.7. The VMUSBSpecTcl Alternative
9.8. Using SpecTcl
9.9. Conclusion
10. Simple V775 readout
10.1. Introduction
10.2. Setting up the Electronics.
10.3. Creating the Readout program
10.4. Creating the tailored SpecTcl
10.5. Running the system.
10.6. Taking the example further.
10.7. The full readout program.
10.8. The full SpecTcl program.
11. Using NSCLDAQ with a CAEN V785 Peak-Sensing ADC and CAEN V262 IO Register
11.2. The electronics
11.3. Setting up the software
11.4. The dumper program
11.5. Running the Readout Program
11.6. Interpreting the dumper output
III. device-support
12. Mesytec MCFD-16 Controls
12.1. Overview
12.2. Starting the GUI for USB communication
12.3. Starting the GUI for the RC-bus through an MxDC device
12.4. Configuration menu
12.5. Saving and restoring state
13. Mesytec MSCF-16 Controls
13.1. Overview
13.2. Synchronization Paradigm
13.3. Starting the GUI for USB communication
13.4. Saving and restoring state
14. Wiener MDGG-16 Controls
14.1. Overview
14.2. How to use the MDGG16Control GUI
14.3. Saving and Restoring The State of the GUI Between Sessions
15. XLM72 Gate Delay Control GUI
15.1. Introduction
15.2. Setting up an XLM72 as a gate delay generator for remote control
15.3. Launching the XLM72GateDelayControl
15.4. Overview of Functionality
15.5. The Saved File
16. ULM Trigger GUI
16.1. Configuring CCUSBReadout for Remote Communication
16.2. Launching the ULMTriggerGUI
16.3. Overview of Basic Operation
IV. commands
17. Command line access to CAMAC via the SBS interface
V. utilities
18. Ring piping utilities
19. The dumper program
19.1. Item dump formats and examples
20. The Event log program
21. The tcl server application
21.1. Tcl server package
22. CAEN V812 Constant Fraction Discriminator
23. N568B CAENnet shaping amplifier
24. VHS-40xxx SBS support.
25. cratelocator
26. Tcl access to the VME via the SBS interface
26.1. Incorporating Vme Tcl in your scripts
26.2. Sample programs that use the package
27. VM/CCUSB Firmware loaders
28. Sequencing runs
28.1. Configuring the sequencer.
28.2. Using the sequencer.
29. The ringselector application
30. Compatibility utilities
30.1. Format conversion with compatibilitybuffer
30.2. Writing event files with compatibilitylogger
30.3. Converting NSCLDAQ-V10.x data to NSCLDAQ-11.x data
30.4. Convenience scripts
30.5. BufferToRing
31. Providing EPICS channel information to Tcl Servers
32. The epics display utility
33. Epics Channel logging
VI. servers
34. The RingMaster server
34.1. The RingMaster Protocol
35. Service Port Manager.
VII. libraries
36. Ring master class library.
37. Networked ring buffer access
38. Ring Buffer Primitives
38.1. Incorporating ring buffer software
38.2. Overview and Examples of ring buffers in action.
39. The Tcl ring package
40. Data Format Support Software
40.1. The basic data formats
40.2. Selecting Data From a Ring Buffer
40.3. Incorporating the headers and libraries into your applications.
40.4. Generic ring data sinks
40.5. Creating ring items
41. Event builder client API
41.1. C++ Client API
41.2. Incorporating the event builder client library
41.3. Connecting to the event builder.
41.4. Disconnecting from the event builder.
41.5. Sending data to the event builder.
41.6. The Event orderer/event builder API
41.7. Callbacks
42. TclRingBuffer Tcl package.
42.1. What is it?
42.2. How do I use it?
42.3. Using TclRingBuffer in event driven software
43. The ccusbcamac tcl package
43.1. Overview
43.2. A simple example
44. SBS VME Module level device support software
45. Tcl CAENet package
46. The CES CBD 8210 Tcl CAMAC Package
46.1. Incorporating camac into your scripts
46.2. An overview of the use of the camac package
47. The Wienercamac Tcl package
47.1. Incorporating wienercamac in your scripts.
47.2. Using wienercamac
48. Integer byte order conversion library
48.1. Using the conversion library in your code
48.2. Byte order signatures and conversion blocks
48.3. Data conversion
49. NSCL DAQ Thread Library
49.1. The thread and synchronization model
49.2. Incorporating the library into an application.
49.3. Using CGaurdedObject to implement synchronized methods
49.4. Thread safe queues (CBufferQueue).
49.5. Pointers to the reference material
50. Access control and security
50.1. Incorporting the software into your code
50.2. Authenticators
50.3. Interactors
51. Parsing and URIs
52. Shared memory
52.1. Overview of the API, and using it from within your C++ software
52.2. Compiling/Linking your software with the shared memory API
53. The Os class
54. io
55. Plotchart
56. TCPIP classes
56.1. Library concepts
56.2. Incorporating the socket library
57. C++ encapsulation of a Tcl API subset
58. The NSCL Exception class library
58.1. Incorporating the library in your programs
58.2. Exception classes
VIII. frameworks
59. Injecting variables into the USB data taking frameworks
60. Event orderer and its user interface
60.1. Event orderer design philosophy.
60.2. Using the standard event orderer startup script
60.3. Writing an event orderer startup script
60.4. Event orderer packages
61. Event builder client framework
61.1. Application specific code for the event builder
61.2. Building event builder clients.
61.3. Running event builder clients
61.4. ringFragmentSource - a prepackaged client for ringbuffer data sources
62. Event builder Readout Callouts
62.1. API layer
62.2. EZBuilder
62.3. EVBC state manager callback bundle.
63. The SBS Readout framework
63.1. SBS Readout concepts
63.2. Obtaining and building the skeleton application
63.3. Modifying the skeleton application to meet your needs
63.4. Readout commands
63.5. Embedded Tcl server
63.6. Running a readout application
64. Filter framework
64.1. Overview
64.2. Getting Started
64.3. Defining a primitive filter
64.4. Building a composite filter
64.5. The main function
64.6. Building the filter program
65. The actions library
65.1. Introduction
65.2. How does it work?
65.3. Run Control and Command Execution
65.4. Exemplified Usage of the Actions package
IX. Reference Pages
I. 1compatibility
compatibilitybuffer -- Filter ring items to spectrodaq buffers
convert10to11 -- Filter converting NSCLDAQ10.x to NSCLDAQ11.x data.
compatibilitylogger -- Create spectrodaq formatted event log files.
eventlog-compat -- Provide event logger pipeline for use with ReadoutGUI.
spectcldaq -- Pipe data source for SpecTcl in spectrodaq buffer mode.
spectcldaq.server -- TCP/IP server of ring data in spectrodaq format.
BufferToRing -- Convert old buffered data to ring buffer format.
bufdump -- Dump NSCLDAQ event files earlier than version 10.0
II. 1daq
ringbuffer -- Manage ring buffers.
ringtostdout -- Transmit data from a ring buffer to stdout.
stdintoring -- Pipe stdin to a ring buffer.
ReadoutShell -- Shell wrapper for readout programs.
ReadoutGUIOutputClient -- Readout gui output monitor client.
frag2ring -- Filter flattened fragments to ring items.
Scaler Display program  -- Display counts and rates in scalers.
dumper -- Produce a formatted dump of event data.
eventlog -- Record Event Data to Disk.
ccusbloader -- CC-USB Firmware loader
vmusbloader -- VM-USB Firmware loader
ringselector -- Provide selected ring data to non NSCL DAQ aware clients
tkdumper -- GUI Dump of ring buffer items.
evttclsh -- Tcl interpreter that always runs an event loop
III. 1epics
controlpush --  Push epics data into a Tcl Server (e.g. production readout).
chanlog -- Write a set of channels to file
IV. 1evb
EVB::BarrierStats::incomplete -- Display incomplete barrier statistics
EVB::BarrierStats::queueBarriers -- Displays per queue barrier statistics
EVB::BarrierStats::Summary -- UI element to summarize barrier statistics.
EVB::CallbackManager -- Object that manages callback sets.
EVB::connectionList -- List event builder connections
EVB::GUI procs -- Standard monitor UI procs.
EVB::inputStatistics::statusDisplay -- Widget to display input statitics
EVB::inputStatistics::queueStats -- Per queue input statistics widget
::EVB::inputStatistics::queueDisplay -- Display input queue statistics
EVB::inputStatistics::summaryDisplay -- Summary of input statistics.
EVB::lateFragments -- Late fragment statistics
EVB::lateSummary -- Widget to display summar of data late fragments.
::EVB::outputStatistics -- Complete output statistics widget
::EVB::outputSummary -- Summarize output statistics
::EVB::utility::sortedPair -- Key value pair widget
::EVB::utility::sortedWidget -- General key/widget sorted list
EventBuilder -- Event builder utility procs
Observer -- Support the Observer pattern
EvbOrderer -- Event orderer compiled commands.
EVB::handleFragment -- Submit event fragments.
EVB::inputStats -- Event builder input statistics
EVB::outputStats -- Get orderer output statistics
EVB::dlatestats -- Get the late fragment statistics.
EVB::onDataLate -- Bind scripts to data late events.
EVB::barriertrace -- Supply a script to invoke on barrier events.
EVB::source -- Create event source queues.
EVB::deadsource -- Mark a data source dead.
EVB::reviveSocket -- Revive all dead data sources associated with a socket
EVB::flush -- Empty all input queues.
EVB::reset -- Reset timestamp clocks.
V. 1tcl
DaqPortManager -- Manage TCP/IP service ports and advertise their allocations
tclserver -- Start a Tcl Server.
serverauth -- Control tcl server authorization.
!ModuleName! -- Tabbed notebook for multiple GDG-8 controllers.
ledph7106.tcl -- PH7106 Control application for CCUSBReadout
canev812control -- GUI for controlling CAEN V812 CFD modules
loadcfd -- Load settings in to a CAEN V812 CFD module.
cesbcnaf -- CAMAC operation via a CES CAMAC interface
wienerbcnaf -- CAMAC operation via a Wiener VC32/CC32 board set
bcnaf -- bcnaf via SBS VME CAMAC interfaces
loadshaper -- Load setttings into an N568 shaper via SBS/V288.
n568Control -- GUI for the n568 shaper.
vhsPanel -- Canned VHS Control panel
vhqControl -- Control panel application for VHQ bias supply modules.
cratelocator -- locate specific SBS VME crate controllers.
SBS Vme Tcl package -- Provide access to VME crates to Tcl scripts.
epicsdisplay -- Display epics channels
VI. 1sbsReadout
Readout -- Start an event readout program.
VII. 1utilities
vmusbcaenupgrader -- CAEN cvUpgrade ported to VM-USB interface
VIII. 3daq
CRingMaster -- RingMaster access.
CRingAccess -- Remote Ring Access
CRingBuffer -- Low level ring buffer primitives
CRingItem -- Encapsulates an item in a ring buffer.
CRingScalerItem -- Encapsulate ring buffer scaler items.
CRingStateChangeItem -- Encapsulate a ring buffer state change item.
CRingTextItem -- Encapsulate ring items that are lists of text strings.
CPhysicsEventItem -- Response to trigger.
CRingPhysicsEventCountItem -- Provides statistics regarding the number of events produced.
CRingFragmentItem -- Encapsulate a EVB_FRAGMENT ring item
CUnknownFragment -- Event fragment likley not containing a ring item
CDataFomatItem -- Describe the format of a stream of ringitems.
CGlomParameters -- Reports event building parameters.
CAbnormaEndItem -- Abnormal end of run.
CRingSelectionPredicate -- Base class for predicates that select items from ring buffers.
CAllButPredicate -- Select all ring items except some.
CDesiredTypesPredicate -- Only accept specified ring item types.
DataFormat.h -- Format of ring items.
format Functions -- Functions to create ring items.
CDataSource -- Abstract base class of data source for ring items.
CRingDataSource -- Ringbuffer data source for ring items.
CFileDataSource -- Ring item data source from a file
CDataSourceFactory" -- Create data sources given a URI
CRingItemFactory -- Upcast ring items to specific ring item objects.
CDataSink -- Abstract base class for data sinks.
CFileDataSink -- Data sink to a disk file.
CRingDataSink -- Data sink that writes to a CRingBuffer
CDataSinkFactory -- Create an appropriate CDataSink object
CEvbClientApp -- Framework event builder client application.
CEVBClientFramework -- Event builder client framework.
CEventOrderClient -- Client of the event orderer
CPortManager -- Provide a C++ interface to the server port manager daemon.
CPortManagerException -- Report errors conditions in port manager transactions
CADC2530 -- Support the Hytec NADC 2530 Peak sensing ADC.
CAENcard -- Support for the CAEN 32 bit digitizers
CBD8210 -- CES CBD 8210 CAMAC branch highway driver (obsolete)
CCAENV1x90 -- Support for the CAEN V1190 and V1290 multihit, complicated TDC.
CCAENV560 -- Support the CCAENV560 non-latching scaler.
CCAENV830 -- Support driver for the CAEN V820/V830 latching scaler module.
CCAENV977 -- Software support for the CAEN V977 I/O register.
CCAMACScalerLRS2551 -- Support software for the LeCroy LRS 2551 12 channel CAMAC scaler
CCAMACScalerLRS4434 -- High level support software for the 32 channel LeCroy LRS 4434 CAMAC scaler module
CCAMACStatusModule -- Provide computer busy status support for the BiRA CAMAC NIM out module.
CCAMACTrigger -- Trigger module for the CES CBD 8210 VME CAMAC Parallel Branch Highway Driver
CCamac -- Manages CAMAC memory maps.
CCamacModule -- Provide support for a generic CAMAC module.
CCamacNimout -- Provides low level support for the BiRa CAMAC Nim output module.
CCrateController -- Encapsulation of a BiRa 1302 CAMAC controller via CES CBS8210.
CSIS3600 -- Support for the SIS 3600 VME latch module.
CSIS3820 -- Low level support for SIS 3820 32 channel latching scaler module
CScaler -- Abstract base class for reading scalers into a vector
CStatusModule -- Abstract base class for status modules.
CTrigger -- Abstract base class for triggers
CVME -- Pointer like object for accessing the VME
CVMEScalerLRS1151 -- High level support for the LeCroy LRS 1151 VME scaler.
CVMEStatusModule -- Implement a status module using the CAEN V262 module.
CVMETrigger -- VME trigger class based on the CAEN V262 I/O module.
CVMEptr -- 
CaenIO -- Support for the CAEN V262 I/O register module.
CMmapError -- Exception that can be thrown in the event of memory mapping errors.
CNimout -- Low level support for the BiRa VME nim output module
CVmeModule -- Convenience base class for implementing VME module support
CSIS3300 -- Low Level support for the SIS 3300 Flash ADC module
CFilter -- Base class for primitive filters
CCompositeFilter -- A composite filter composed of primitive filters
cvt -- Integer byte order conversions
Thread -- Abstract base class for thread objects.
CSynchronizedThread -- Thread with synchronized initialization
Synchronizable -- Wait queue for threads
SyncGuard -- Provide Critical Regions, Monitors
CMutex -- C++ encapsulation of pthread mutexes.
CriticalSection -- Simple, safe critical section
CCondition -- Encapsulate POSIX condition variables.
CGaurdedObject -- Provide entry/exit guards for object critical regions.
CBufferQueue -- Templated class for safe inter-thread messaging.
CAuthenticator -- Abstract base authenticator class.
CPasswordCheck -- Authenticate against a stored password.
CUnixUserCheck -- Authenticate against a unix user name and password.
CTclAccessListCheck -- Authenticate against a Tcl List.
CAccessListCheck -- Authenticate against a list of allowed credentials.
CHostListCheck -- Authenticate from a list of TCP/IP hosts
CInteractor -- Base class for security interactions.
CStringInteractor -- Provide an interactor that processes strings.
CFdInteractor -- Interact with file descriptor
CIOInteractor -- Separate prompt and input interactors.
URL -- Parse Uniform Resource Identifiers (URI)
CopyrightNotice -- Generate license/author credits.
io -- Binary I/O operations.
Os -- Operating system interfaces.
CDAQShm -- class description
CSocket -- Encapsulation of a socket file descriptor.
CTCPBadSocketState -- class description
CTCPConnectionFailed -- Exception thrown for TCP/IP connection failures.
CTCPConnectionLost -- Exception thrown when connection to peer is lost
CTCPNoSuchHost -- CTCPNoSuchHost
CTCPNoSuchService -- Exception thrown if a nonexistent service is referenced
CTCLApplication 3 --  Base class for TCL/Tk applications.
CTCLException --  Class for reporting exceptional conditions in Tcl applications via the C++ try/catch mechanism.
CTCLInterpreter --  Encapsulate a Tcl interpreter.
CTCLInterpreterObject 3 --  Base class for objects that are associated with a Tcl Interpreter.
CTCLList --  Provide access to Tcl List parsing.
CTCLObject --  Encapsulate Tcl Dual ported objects.
CTCLObjectProcessor --  Abstract base class to encapsulate the Tcl object command interface exposed by Tcl_CreateObjCommand.
CTCLVariable --  Encapsulate Tcl interpreter variables.
CTCLProcessor --  Provide argc, argv extension commands to Tcl.
CTCLChannel --  Provide a C++ abstraction wrapper for Tcl Channels.
CTCLCommandPackage --  Group several related Tcl command extensions and common services they may require together.
CTCLCompatibiltyProcessor --  Adaptor between CTCLOjbectProcessor and CTCLProcessor.
CTCLFileHandler --  Base class for building object oriented Tcl File event handlers.
CTCLHashTable --  Object oriented interface to Tcl's hash table functions.
CTCLHashTableItem --  Encapsulation of an entry in a Tcl Hash table as encapsulated in CTCLHashTable
CTCLHashTableIterator --  Iterator for visiting all elements of a CTCLHashTable
CTCLIdleProcess --  Allows the establishment of an executable object that can be scheduled to be invoked when the Tcl/Tk intperpreter has no events that require processing.
CTCLPackagedCommand --  Base class for a command that lives in a CTCLCommandPackage
CTCLResult --  Provide an object oriented interace to the Tcl interpreter result.
CTCLString --  Provide a wrapper for the Tcl_DString data type and its API
CTCLTimer --  Abstract base class for C++ objects attached to timer events.
CTCLLiveEventLoop -- Run Tcl with event loop.
CTCLChannelCommander -- Accept commands on a Tcl channel from the event loop.
CTCLStdioCommander -- Event driven command input on stdin/stdout
CTCLServer -- Listener for a Tcl server.
CTCLTcpServerInstance -- Channel commander that is a server instance for CTCLServer
CTCLObjectPackage -- Provide common functionality for a set of related commands.
CTCLPackagedObjectProcessor -- Base class for commands living in a CTCLObjectPackage
CItemConfiguration -- Hold a configuration
CConfigurableObject -- Base class for objects tht have a configuration.
CException -- Abstract base class for the exception class hierarchy.
CErrnoException -- Exceptions that wrap the Unix errno
CRangeError -- Reports and exception for a value out of allowed range.
CStateException -- Exception for invalid state transitions.
CStreamIOError -- I/O error on a C++ stream.
CURIFormatException -- Report errors in universal resource identifiers (uri)s.
CMonitorException -- Exceptions for synchronization class abuse.
CInvalidArgumentException -- Report invalid function arguments.
IX. 3ccusb
addtcldriver -- Register Tcl command ensemble as a device module
ad811 -- Support the Ortec AD811 ADC
c1205 -- Manage CAEN C1205 QDC modules.
c257 -- Manages the C257 scaler module
ccusb (command) -- Configure and read scalers from CC-USB module
lrs2228 -- Manages the LRS2228 TDC
lrs2249 -- Manage LeCroy 2249 QDC modules
lrs2551 -- Manage LRS 2551 modules
marker -- Create/manipulate marker instances
ph7xxx -- Define Phillips ADC/TDC/QDC modules
stack -- Create and configure CC-USB stacks.
Module -- Create and manipulate slow control device instances
CamacCrate -- group modules into a crate
LeCroy4300B -- control a LeCroy 4300B FERA
LeCroy4434 -- control a LeCroy 4434 Scaler
LeCroy2551 -- control a LeCroy 2551 Scaler
ULMTrigger -- control a LeCroy 2637 ULM running trigger firmware
Slow controls protocol -- TCP/IP slow control protocol
CCCUSB -- Provide access to a CC-USB device.
CCCUSBusb -- Provide access to a connected CC-USB device.
CCCUSBRemote -- Provide remote access to a CC-USB device through CCUSBReadout's slow-controls server.
CCCUSBReadoutList -- Create lists of CAMAC commands for CC-USB controllers.
CConfigurableObject -- base class for devices that have a configuration
cccusb -- Swig wrapping of the CCCUSB C++ class.
cccusbreadoutlist -- Tcl wrapping of CCCUSBReadoutList
CModuleFactory -- Creates specific slow control drivers
CModuleCreator -- Object creational ABC for CModuleFactory
CControlHardware -- Base class (ABC) of a slow controls driver
CControlModule -- Configuration and wrapper for CControlHardware
CCCUSBControl -- A slow-controls driver for receiving and executing remote commands
ccusbcamac -- Tcl Script CAMAC access CCUSBReadout slow-controls server
ph7106Widget -- Control panel for Ph7106 LED
X. 3evb
EVBC::start -- Start the event builder pipeline.
EVBC::stop -- Stop the event builder pipeline.
EVBC::reset -- Reset timestamp history
EVBC::flush -- Flush event builder event queues.
EVBC::startRingSource -- Start a ring fragment source for the event builder.
EVBC::startS800Source -- Start S800 data source
EVBC::initialize -- Initialize the EZBuilder layer.
EVBC::onBegin -- EZBuilder begin run actions
EVBC::onEnd -- EZBuilder end run actions.
Eventbuilder callback bundle -- Event builder callback bundle.
Event builder client framework -- Event builder cilent framework
XI. 3rdogui
Introduction -- ReadoutGUI API introduction
bells -- Provide audible alarm bells.
Configuration -- Configuration variable management
DAQParameters -- Cluster of configuration parameters for data acquisition
DataSourceManager -- Data source manager and its API
DataSourceUI -- Data source parameter user interface
Diagnostics -- Provide error warning and message dialogs
ExpFileSystemConfig -- Configuration cluster for event directory tree
ReadoutGui -- ReadoutGui elements.
ReadoutGUIPanel -- ReadoutGUI Convenience commands
RunStateMachine -- Run control state machine
StateManager -- Save restore program state variables.
ui -- ReadoutGUI graphical user interface elements.
OutputWindowSettings -- Prompter for OutputWindow settings.
StatusArea -- Status area megawidget
XII. 3provider
Introduction -- Data source providers
parameters -- Describe data source parameterization
start -- Start a data source
check -- Check Data Source Liveness
stop -- Stop data sources
begin -- Start data taking in a data source
pause -- Pause a data taking run (optional)
resume -- Resume a Paused Run
end -- End a Data Taking Run
init -- On-demand initialize procedure
capabilities -- Get Provider Capabilities Dict
SSHPipe -- SSHPipe data source provider.
s800 -- s800 data source provider.
Delay -- Inserts a delay between data provider begins
XIII. 3python
PortManager -- Python bindings to port manager
XIV. 3vmusb
adc -- Create/configure CAEN V775, V785, V792, V862 modules.
caenchain -- Aggregate adc modules into CBLT readout chains.
vmusb -- Control VM-USB resources and read internal scalers
sis330x -- Driver for SIS3300/1 FADC
sis3820 -- Create and configure SIS 3820 scaler modules
v830 -- Create and configure CAEN V830 32 channel scalers.
v977 -- Create and configure CAEN V977 Input registers
sis3804 -- Create and configure SIS 3804 scalers
hira -- Pair up to 2 XLMs and FADC for HiRA
hytec -- Support the Hytec NADC 2530 adc module.
tcl driver support -- tcl driver support functions.
madc -- Acquire events from Mesytec MADC32 ADC.
mtdc -- Mesytec 32/34 channel TDC
mqdc -- Support Mesytec MQDC-32 modules
madcchain -- Support CBLT chains of Mesytec MxDC32 family of modules.
madcscaler -- Support dead-time counters in MADC32 as scalers.
mase -- Support for XLM with MASE firmware.
tdc1x90 -- Provide support for the CAEN V1x90 TDC family.
v1729a -- CAENV1729a waveform digitizer.
stack -- Compose and configure VM-USB readout stacks.
CVMUSB -- Interface with VM-USB controller.
CVMUSBReadoutList -- Construct VM-USB stacks
CVMUSBRemote -- Execute lists remotely on VMUSBReadout
CConfigurableObject -- Configuration database
CControlHardware -- Base class for slow controls drivers
cvmusb -- SWIG Tcl wrapping of CVMUSB
cvmusbreadoutlist -- SWIG wrappers for CVMUSBReadoutList
Module -- control config command: create/configure modules.
watch -- Watch variables (slow controls)
delay -- Insert a stack delay.
CBDCamacBranch -- run a CAMAC branch through a CES CBD8210 bridge
CBDCamacCrate -- group CBD8210 compatible modules into a crate
CBDLeCroy4300B -- control a LeCroy 4300B FERA on a CAMAC branch
CBDLeCroy4434 -- control a LeCroy 4434 Scaler on a CAMAC branch
CBDLeCroy2551 -- control a LeCroy 2551 Scaler on a CAMAC branch
CBDULMTrigger -- control a LeCroy 2637 ULM running trigger firmware on a CAMAC branch
XLMTimestamp -- control an XLM running 64-bit latching scaler firmware
marker -- Insert a constant into the VMUSB data stream
XLMFERA -- control an XLM72V running firmware to readout FERA via ECL ports
AXLM72ScalerControl -- slow-controls driver for controlling an XLM72 running 32-ch scaler firmware
XLM72ScalerGUI -- Diagnostics GUI for controlling an XLM72 running 32 ch scaler firmware
AXLM72 -- TCL base class for JTech XLM72 family of devices
AXLM72Scaler -- Driver for an XLM72 running 32-channel scaler firmware
v1495sc -- CAEN V1495 with Scaler firmware
controlClient -- Object to interact with VM/CCusb control server
USB Control operations -- connect, controlOp, listUSBControlServers
slowControlsPrompter -- Prompt for slow controls server host and port
gdgcontrol -- Slow control client of Wiener/JTec MGGD8
gdgwidget -- Widget to control/display GDG-8.
V6533Driver -- Driver for CAEN V6533 HV modules
XV. 3tcl
TCL Ring package. Ron Fox NSCLDAQ  -- Access Rings from tcl.
TclRingBuffer -- Tcl ring buffer consumer package
portAllocator -- Tcl API for the DaqPortManager daemon.
TclServer -- Embeddable Tcl Server script object
CFD812 -- low level control of the CAEN V812 CFD
caenv812gui -- Megawidget control panel for the CAEN V812 CFD
n568b -- Support package for the CAEN N568B shaper.
n568Panel -- Control panel megawidget for N568 shaping amplifier
iSegVhs -- SBS support for VHS 404 modules.
VhsWidgets -- User interface components for VHS 404 power supplies.
vhq -- Low level Tcl access to iSEG VHQ2xxx units.
vhqPanel -- Control widget for iSeg vhq2xx VME bias supply.
caennet -- Access CAENnet from Tcl scripts.
camac -- Provide access to CES CBD8210 CAMAC to Tcl scripts
wienercamac -- Tcl Script CAMAC access via VC32/CC32 boardset.
sequencer --  Provide a ReadoutGui plugin for nscldaq 8.1 and later that can automate several data taking runs.
plotcontainer -- Plotchart XY plot wrapper
marker -- Manage markers on a plotchart plot.
Process -- Simplified asynchronous pipeline handling
TclSourceFilter -- Extract blocs mathing a regexp from a script
Utils -- Tcl namespace with useful utility procs.
FrameManager -- Make one of a set of widgets visible.
FrameSequencer -- Manages a sequence of widgets (like a wizard e.g.).
RingStatus -- Widget that shows ring status.
ScaleControl -- Megawidget intended for axis scale control
TransientLabel -- Label widget that transforms to defau.
XVI. 3sbsReadout
CBusy -- Abstract base class for Busy module management.
CCAENV262Busy -- Concrete busy class for the CAEN V262 input module.
CCAENV262Triger -- Trigger module with CAEN V262
CCompoundEventSegment -- Container for other event segments
CDocumentedPacket -- Encapsulate event data in a packet that is documented.
CEventPacket -- Encapsulate an event segment in a documented packet.
CEventSegment -- Base class for all event segments.
CEventTrigger -- Abstract base class for triggers.
CExperiment -- Encapsulate the experiment.
CInvalidPacketStateException -- Exception thrown by documented packets.
CNullTrigger -- A trigger that never fires.
CReadoutException -- Base class for readout specific exceptions
CScalerBank -- Container for individual Scaler objects.
CTimedTrigger -- CEventTrigger that fires periodically
CV977Busy -- Concrete busy class using the CAEN V977 module
CV977Trigger -- Concrete Trigger class using CAEN V977 module.
RunState -- Encapsulate important state of the software.
CScaler -- Base class for scaler readout classes
XVII. 5daq
eventorderer -- Event orderer protocol
XVIII. 5tcl
caen812configfile -- Format of configuration files for CAENV 812 software.
n568configfile -- N568 shaper configuration file
vhqconfig --  Config file for
XIX. 5vmusb
VMUSB slow controls protocol -- VMUSB Slow controls protocol
List of Tables
3-1. Ring Item Top-Level Memory Layout
3-2. Body Header
3-3. Ring Item With Body Header
3-4. Ring Item Without Body Header
3-5. Ring Item Types
3-6. Predefined State Change Body Layout
3-7. Predefined Text Item Body Layout
3-8. Predefined Scaler Item Body Layout
3-9. Predefined Physics Event Count Body Layout
3-10. Predefined Data Format Body Layout
3-11. Predefined Glom Information Body Layout
6-1. Event logger environment variables
6-2. Experiment file systems environment variables
6-3. SSHPipe prompter environment variables
7-1. Fragment header
7-2. Body of Built PHYSICS_EVENT
47-1. Wiener CC32 addressing convention
1. Readmode and Read and clear implications
List of Figures
6-1. ReadoutShell's state diagram
6-2. ReadoutShell's GUI
6-3. The Eventlog settings dialog
6-4. Readout GUI Directory tree
9-1. Block diagram of the V775 and V785 wiring
9-2. Block diagram of SIS3820 scaler wiring
10-1. V775 Simple setup electronics block diagram.
11-1. A simple electronics setup for the CAEN V785
11-2. Pulser Output Signal
11-3. Amplifer Output Signal
11-4. Amplified Signal with Logic Pulser
11-5. Amplified Signal and Gate
12-1. The MCFD16Control Graphical User Interface for USB
12-2. MCFD16Control Graphical User Interface for MxDC-RCbus
12-3. Channel Enable/Disable Configuration Dialog
12-4. OR Pattern Configuration Dialog
13-1. The MSCF16Control Graphical User Interface for USB
14-1. MDGG16Control Graphical User Interface
15-1. Screenshot of XLM72GateDelayControl
16-1. Screenshot of ULMTriggerGUI
List of Examples
4-1. Creating and configuring devices
4-2. A Sample Controls Configuration
4-3. A sample getEventTimestamp() implementation
4-4. Defining a null getScalerTimestamp()
4-5. Adding an offset to the timestamp
4-6. Obtaning the VM-USB device driver development kit
4-7. Using a user written VMUSB driver
4-8. The template driver Initialize method
4-9. Template Driver addReadoutList method
4-10. The VMUSB driver Xxxx_Init function.
4-11. Itcl VM-USB device driver
4-12. A Snit VM-USB driver.
4-13. USing a Tcl VM-USB driver.
4-14. Control driver headers
4-15. Control driver class definition
4-16. Control driver constructor
4-17. Control driver onAttach method
4-18. Control driver Update
4-19. Control driver Set method.
4-20. Control driver Get method
4-21. Control driver clone method
4-22. Control driver creator
4-23. Control driver initialization
4-24. Control drivers - structure of a Tcl driver
4-25. Tcl control driver Initialize method
4-26. Tcl control driver Update method
4-27. Tcl control driver Set method
4-28. Tcl control driver Get method
4-29. Tcl control drer addMonitorList method
4-30. Tcl control driver processMonitorList method
4-31. Tcl control driver getMonitoredData method
4-32. Tcl control driver validation
4-33. Specifying VM-USB monitored variables
5-1. Creating and configuring devices
5-2. Configuring an event stack
5-3. Setting up a scaler stack
5-4. Obtaining the ccusb driver development kit
5-5. Using a user written CCUSB driver
5-6. A snit CCUSB device driver module
5-7. CCUSB device support example writtin in Incr Tcl
5-8. DAQ config script fragment with tcl drivers.
5-9. Obtaining the sample CCUSB slow controls driver
5-10. Headers for the CCUSB sample slow controls driver
5-11. CCUSB Slow control driver class definition
5-12. The constructor and destructor
5-13. CCUSB Slow controls driver OnAttach
5-14. CCUSB Slow controls driver initialize method
5-15. CCUSB Slow controls driver Update
5-16. CCUSB Slow controls driver Set method
5-17. CCUSB slow controls Get method
5-18. CCUSB Slow controls clone method
5-19. Module creator for the CCUSB Sample slow controls driver
5-20. CCUSB Slow control driver initialization function
5-21. CCUSB Slow controls driver Skeleton Makefile
5-22. CCUSB Tcl slow controls driver skeleton
5-23. CCUSB Tcl slow controls driver construction
5-24. CCUSB Tcl slow controls initialization
5-25. CCUSB Tcl Slow Controls Update
5-26. CCUSB Tcl Slow controls driver Set
5-27. CCUSB Tcl Slow Control driver Get
5-28. CCUSB Slow controls Tcl driver option validation
5-29. Using the Tcl sample driver in a configuration script.
5-30. Enabling a module Lam with ccusbcamac
6-1. Custom ReadoutGUI startup script
10-1. V775 Event Segment (V775EventSegment.h).
10-2. v775 Event Segment (V775EventSegment.cpp) - file heading
10-3. v775 Event Segment (V775EventSegment.cpp) - Constructor
10-4. v775 Event Segment (V775EventSegment.cpp) - Initialization
10-5. v775 Event Segment (V775EventSegment.cpp) - reading data
10-6. V775 data ready trigger header (MyTrigger.h)
10-7. V775 data ready trigger implementation (MyTrigger.cpp)
10-8. Copying in the SpecTcl-v3.4 skeleton
10-9. Raw TDC unpacker (RawUnpacker.h)
10-10. v775 raw unpacker implementation includes and defs (RawUnpacker.cpp)
10-11. V775 raw unpacker - getLong utility (RawUnpacker.cpp)
10-12. V775 raw unpacker object constructor/destructor (RawUnpacker.cpp)
10-13. v75 raw unpacker unpacking events (RawUnpacker.cpp)
10-14. Defining raw Time spectra the hard way.
10-15. Header for time difference event processor (Tdiff.h)
10-16. CTdiff implementation (Tdiff.cpp)
10-17. Setting up ssh for password-less login
10-18. Creating an event area for a small amount of data
10-19. Makefile
10-20. Skeleton.cpp
10-21. V775EventSegment.h
10-22. V775EventSegment.cpp
10-23. MyTrigger.h
10-24. MyTrigger.cpp
10-25. RawUnpacker.h
10-26. RawUnpacker.cpp
10-27. spectra.tcl
10-28. SpecTclRC.tcl
10-29. Tdiff.h
10-30. Tdiff.cpp
11-1. Header for MyEventSegment
11-2. Impementation of CMyEventSegment
11-3. The Packet Data
19-1. Dumping data from the ring buffer named 0400x on spdaq22
19-2. Dumping data from the event file segment /user/0400x/complete/run-1234-00.evt
19-3. State Transition items
19-4. Text List items
19-5. Incremental Scalers dump
19-6. Event count items
19-7. Physics Event items
19-8. Unknown item types
20-1. Taking data from a remote ring
21-1. Using serverauth to authorize a node
26-1. Appending the NSCLDAQ Tcl Package repository to Tcl's search path
26-2. Appending NSLCDAQ's TclPackage repository to Tcl's search path
26-3. Requesting the VME Tcl package be loaded.
26-4. Using VME Tcl to locate all 2530 modules
28-1. Loading the sequencer package
29-1. Dumping state changes and sampled event data with od
29-2. Dumping all but packet types
29-3. Attaching SpecTcl
30-1. Converting a ring buffer event file with compatibilitybuffer
30-2. Converting ring buffer data to a 8Kword (16Kbyte) old style event file
30-3. Using compatibilitylogger to convert event files
30-4. convert10to11 - converting event files
30-5. Attaching SpecTcl to ring buffers in compatibility mode
34-1. The CONNECT message format
34-2. Format of the DISCONNECT message
34-3. Format of the LIST command
34-4. Format of the REGISTER command
34-5. Format of the UNREGISTER message
34-6. Format of the REMOTE message
36-1. Including the header
36-2. Compiling code
36-3. Linking code to the library
37-1. A sample ring specification in URI form
37-2. Substituting local host for the hostname in URI's
37-3. Including the header
37-4. Compiling code that uses CRingAccess
37-5. Linking code that uses CRingAccess
38-1. Compilation line for ring buffer primitives
38-2. Including the ring buffer primitives header
38-3. Linking to the ring buffer primitives
38-4. Sample ring buffer consumer
38-5. A sample Ring Buffer producer program
39-1. Incorporating the ring package in your scripts
40-1. Including a ring item class
40-2. Telling the compiler where to find Ring Item headers
40-3. Linking the ring item format libraries
41-1. Connecting to the event builder as a data source.
41-2. Closing an event builder connection
41-3. Starting the event builder
41-4. Establishing the connection callback
41-5. Setting up the disconnect callback
42-1. Processing ring items in Tcl.
42-2. The Scaler Display ring buffer thread
47-1. Enabling a module Lam with wienercamac
48-1. Including the cvt header
48-2. Compiling a C or C++ source file that includes cvt.h
48-3. A makefile rule that builds a C++ program using the cvt package
48-4. Creating a DaqConversion
49-1. The life of a thread
49-2. Why synchonization is needed
49-3. Using SyncGuard to implement a monitor
49-4. Compiling and linking NSCLDAQ threaded software
49-5. Using CGaurdedObject
49-6. Sending data to a CBufferQueue
49-7. Consumer of data from a CBufferQueue
50-1. Compilation switches for the security includes
50-2. Link switches for the security library
50-3. Boilerplate DAQ Authorization code
51-1. Sample URI library program
51-2. Building urltst.cpp
52-1. Shared memory library example
52-2. Compiling a C++ source that includes daqshm.h
52-3. Linking C++ object files that use the daqshm library
58-1. Catching CException and exiting
59-1. The watch command.
60-1. The standard startup script explained
61-1. CEVBClientApp definition
61-2. The CEVBRingClientApp class definition.
61-3. The CEVBRingClientApp initialize and shutdown methods.
61-4. The CEVBRingClientApp dataReady method.
61-5. The EVBRingClientApp getEvents implementation.
61-6. Configuring the event builder client framework
61-7. S800 timestamp extractor (s800timestamp.c
62-1. Using the EVBC state manager callback bundle
63-1. Passing the ring buffer to the construction of an Event segment.
63-2. Creating Events
63-3. Obtaining the SBS readout skeleton
1. Uncompressing NSCLDAQ-10.x data and converting it to NSCLDAQ-11 format
1. Attaching SpecTcl to a ring buffer in compatibility mode
1. Running spectcldaq.server
2. Connecting to spectcldaq.server
1. Dumping all data from an old style event file
2. Dumping all data but event data from an old style event file
3. Dumping all but physics data from several event files
1. Sample output from ringbuffer status
1. making hex dumps of data from a ring buffer.
1. Using stdintoring
1. Dumping state changes and sampled event data with od
2. Dumping all but packet types
3. Attaching SpecTcl
1. Viewing a set of channel values interactively
2. Writing a set of channels to a file
3. Appending a set of channels to a file
4. Piping a set of channels to a program for processing
1. Supporting an observer in a snit type or widget
2. Supporting multiple observers in a snit type or widget
1. Using CRingAccess to connect to a local ring.
2. Using CRingAccess to connect to a remote ring
1. Message filter predicate
1. Selecting sampled event from a ring.
1. Constructing a scaler item from an item gotten from a ring
1. Creating a begin run state transition item
1. Allocating a port with the port manager
2. Listing the port allocatiosn on a system.
1. Catching a CPortManagerException
1. Creating a CAENcard geographically
2. Setting a TDC to common stop mode
3. Reading out a CAEN 785 e.g.
1. Initializing branch 0
1. Using the LRS 1151 in the production readout framework.
1. Creating a device driver via private derivation
2. Creating a device driver via inclusion
1. Calling CStringInteractor specific members
1. Creating a coypright notice on stderr
2. Creating an author credit on stderr
1. evttclsh
1. AD811 configuration file example
1. LRS2228 creation example
1. The lrs2551 command
1. Using the list command to construct pedestals
2. Sample ph7xxx commands
1. Example of the stack command.
1. A simple crate setup containing a single scaler
1. A simple setup of one FERA
1. A simple setup of one scaler
1. A simple setup of a single scaler
1. A simple setup of a single ULM
1. Listing CC-USB Serial numbers (Tcl).
2. Creating a CCCUSB object by serial number (Tcl).
1. bell example
1. Sample use of the DialogWrapper
1. A do nothing RunstateMachine callout bundle
1. Getters and setters for StateManager
1. Sample ADC commands
1. Using the caenchain command.
1. Configuring an SIS3820 scaler module
1. Configuring a CAEN V830 scaler
1. Configuring the SIS 3804 scaler
1. Sample Hytec 2530 configuration
1. Sample use of madc command
1. Sample use of mqdc command for timestamping with external oscillator
2. Sample configuration of mqdc for event counting and interrupt readout
1. Sample usage
1. Building Stacks
1. A simple delay example
1. Sample setup of two camac crates on branch 0
1. Sample setup of a single LeCroy 2551
1. Sample setup of a few FERAs
1. Sample setup of a single scaler
1. Simple setup of a single scaler
1. Setup of a single ULM trigger module
1. Simple setup of a single timestamp module
1. Simple setup of a single timestamp module
1. Simple setup of the AXLM72ScalerControl
1. Example ctlconfig.tcl entry
1. Allocating a service port in Tcl
2. Listing allocated ports in Tcl
1. Hooking update methods to recurring timer
1. Action script example
2. Sequencer column configuration file
1. Creating and registering a V262 as a busy:
1. Deep iteration of CCompondEventSegment elements
2. Deep visitation of CCompoundEventSegment elements
1. Using the CDocumentedPacket class
1. Catching readout specific examples
1. Deep visitation in CScalerBank containers
1. Outputting the state of the run
1. Sample configuration file
1. Sample configuration file
1. Sample configuration file