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
9. Examples (Beginning 11.2-009).
9.1. ReadNSCLDAQFiles - analyze NSCLDAQ data (released 11.2-009)
II. simple-setups
10. A Simple VMUSBReadout Experiment Tutorial
10.1. Introduction
10.2. Setting up the Electronics
10.3. The Configuration Files
10.4. Running VMUSBReadout
10.5. Understanding the Output
10.6. Developing a Tailored SpecTcl
10.7. The VMUSBSpecTcl Alternative
10.8. Using SpecTcl
10.9. Conclusion
11. Simple V775 readout
11.1. Introduction
11.2. Setting up the Electronics.
11.3. Creating the Readout program
11.4. Creating the tailored SpecTcl
11.5. Running the system.
11.6. Taking the example further.
11.7. The full readout program.
11.8. The full SpecTcl program.
12. Using NSCLDAQ with a CAEN V785 Peak-Sensing ADC and CAEN V262 IO Register
12.2. The electronics
12.3. Setting up the software
12.4. The dumper program
12.5. Running the Readout Program
12.6. Interpreting the dumper output
III. device-support
13. Mesytec MCFD-16 Controls
13.1. Overview
13.2. Starting the GUI for USB communication
13.3. Starting the GUI for the RC-bus through an MxDC device
13.4. Configuration menu
13.5. Saving and restoring state
14. Mesytec MSCF-16 Controls
14.1. Overview
14.2. Synchronization Paradigm
14.3. Starting the GUI for USB communication
14.4. Saving and restoring state
15. Wiener MDGG-16 Controls
15.1. Overview
15.2. How to use the MDGG16Control GUI
15.3. Saving and Restoring The State of the GUI Between Sessions
16. XLM72 Gate Delay Control GUI
16.1. Introduction
16.2. Setting up an XLM72 as a gate delay generator for remote control
16.3. Launching the XLM72GateDelayControl
16.4. Overview of Functionality
16.5. The Saved File
17. ULM Trigger GUI
17.1. Configuring CCUSBReadout for Remote Communication
17.2. Launching the ULMTriggerGUI
17.3. Overview of Basic Operation
IV. commands
18. Command line access to CAMAC via the SBS interface
V. utilities
19. Ring piping utilities
20. The dumper program
20.1. Item dump formats and examples
21. The Event log program
22. The tcl server application
22.1. Tcl server package
23. CAEN V812 Constant Fraction Discriminator
24. N568B CAENnet shaping amplifier
25. VHS-40xxx SBS support.
26. cratelocator
27. Tcl access to the VME via the SBS interface
27.1. Incorporating Vme Tcl in your scripts
27.2. Sample programs that use the package
28. VM/CCUSB Firmware loaders
29. xlmload firmware loader for XLM modules via VM-USB controllers.
30. Sequencing runs
30.1. Configuring the sequencer.
30.2. Using the sequencer.
31. The ringselector application
32. Compatibility utilities
32.1. Format conversion with compatibilitybuffer
32.2. Writing event files with compatibilitylogger
32.3. Converting NSCLDAQ-V10.x data to NSCLDAQ-11.x data
32.4. Convenience scripts
32.5. BufferToRing
33. Providing EPICS channel information to Tcl Servers
34. The epics display utility
35. Epics Channel logging
VI. servers
36. The RingMaster server
36.1. The RingMaster Protocol
37. Service Port Manager.
VII. libraries
38. Ring master class library.
39. Networked ring buffer access
40. Ring Buffer Primitives
40.1. Incorporating ring buffer software
40.2. Overview and Examples of ring buffers in action.
41. The Tcl ring package
42. Data Format Support Software
42.1. The basic data formats
42.2. Selecting Data From a Ring Buffer
42.3. Incorporating the headers and libraries into your applications.
42.4. Generic ring data sinks
42.5. Creating ring items
43. Event builder client API
43.1. C++ Client API
43.2. Incorporating the event builder client library
43.3. Connecting to the event builder.
43.4. Disconnecting from the event builder.
43.5. Sending data to the event builder.
43.6. The Event orderer/event builder API
43.7. Callbacks
44. TclRingBuffer Tcl package.
44.1. What is it?
44.2. How do I use it?
44.3. Using TclRingBuffer in event driven software
45. The ccusbcamac tcl package
45.1. Overview
45.2. A simple example
46. SBS VME Module level device support software
47. Tcl CAENet package
48. The CES CBD 8210 Tcl CAMAC Package
48.1. Incorporating camac into your scripts
48.2. An overview of the use of the camac package
49. The Wienercamac Tcl package
49.1. Incorporating wienercamac in your scripts.
49.2. Using wienercamac
50. Integer byte order conversion library
50.1. Using the conversion library in your code
50.2. Byte order signatures and conversion blocks
50.3. Data conversion
51. NSCL DAQ Thread Library
51.1. The thread and synchronization model
51.2. Incorporating the library into an application.
51.3. Using CGaurdedObject to implement synchronized methods
51.4. Thread safe queues (CBufferQueue).
51.5. Pointers to the reference material
52. Access control and security
52.1. Incorporting the software into your code
52.2. Authenticators
52.3. Interactors
53. Parsing and URIs
54. Shared memory
54.1. Overview of the API, and using it from within your C++ software
54.2. Compiling/Linking your software with the shared memory API
55. The Os class
56. io
57. Plotchart
58. TCPIP classes
58.1. Library concepts
58.2. Incorporating the socket library
59. C++ encapsulation of a Tcl API subset
60. The NSCL Exception class library
60.1. Incorporating the library in your programs
60.2. Exception classes
VIII. frameworks
61. Injecting variables into the USB data taking frameworks
62. Event orderer and its user interface
62.1. Event orderer design philosophy.
62.2. Using the standard event orderer startup script
62.3. Writing an event orderer startup script
62.4. Event orderer packages
63. Event builder client framework
63.1. Application specific code for the event builder
63.2. Building event builder clients.
63.3. Running event builder clients
63.4. ringFragmentSource - a prepackaged client for ringbuffer data sources
64. Event builder Readout Callouts
64.1. Introduction
64.2. API layer
64.3. EVBC state manager callback bundle.
64.4. EZBuilder
65. The SBS Readout framework
65.1. SBS Readout concepts
65.2. Obtaining and building the skeleton application
65.3. Modifying the skeleton application to meet your needs
65.4. Readout commands
65.5. Embedded Tcl server
65.6. Running a readout application
66. Filter framework
66.1. Overview
66.2. Getting Started
66.3. Defining a primitive filter
66.4. Building a composite filter
66.5. The main function
66.6. Building the filter program
67. The actions library
67.1. Introduction
67.2. How does it work?
67.3. Run Control and Command Execution
67.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.
compatibilitybuffer -- Pipe stdin to a ring buffer.
ReadoutShell -- Shell wrapper for readout programs.
ReadoutGUIOutputClient -- Readout gui output monitor client.
evbwizard -- Set up readout GUI and event builder.
frag2ring -- Filter flattened fragments to ring items.
ScalerDisplay  -- Display counts and rates in scalers.
dumper -- Produce a formatted dump of event data.
eventlog -- Record Event Data to Disk.
xlmload -- Load firmware into XLM modules.
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.
offlinereglom -- Offline event rebuilder.
timecheck -- Check for out of order timestamps in event files
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
FragmentIndex -- Iterator for event built data.
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::registerRingSource -- Register a ring fragment source to the RingSourceMgr.
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
RingSourceMgr -- A callout bundle that spawns ringFragmentSource processes.
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
ReadoutGUIAppLauncher -- Simplify the process of adding application launcher buttons to a ReadoutGUI
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
sis3300 -- Simplified sis3300 support.
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
VMUSB VME access -- Provide Tcl VME access via VMUSB or control server
controlscript -- Virtual slow controls module to execute TCL scripts
readoutscript -- Virtual driver to execute TCL scripts
XV. 3tcl
TCL Ring package. -- 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.
wait -- Wait/reap for subprocess completion
Pipe -- Make a unix pipe
ppid -- Get parent process id.
Orphan -- Run script when the process is orphaned
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 default.
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
49-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
10-1. Block diagram of the V775 and V785 wiring
10-2. Block diagram of SIS3820 scaler wiring
11-1. V775 Simple setup electronics block diagram.
12-1. A simple electronics setup for the CAEN V785
12-2. Pulser Output Signal
12-3. Amplifer Output Signal
12-4. Amplified Signal with Logic Pulser
12-5. Amplified Signal and Gate
13-1. The MCFD16Control Graphical User Interface for USB
13-2. MCFD16Control Graphical User Interface for MxDC-RCbus
13-3. Channel Enable/Disable Configuration Dialog
13-4. OR Pattern Configuration Dialog
14-1. The MSCF16Control Graphical User Interface for USB
15-1. MDGG16Control Graphical User Interface
16-1. Screenshot of XLM72GateDelayControl
17-1. Screenshot of ULMTriggerGUI
1. S800 Trigger GUI
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
11-1. V775 Event Segment (V775EventSegment.h).
11-2. v775 Event Segment (V775EventSegment.cpp) - file heading
11-3. v775 Event Segment (V775EventSegment.cpp) - Constructor
11-4. v775 Event Segment (V775EventSegment.cpp) - Initialization
11-5. v775 Event Segment (V775EventSegment.cpp) - reading data
11-6. V775 data ready trigger header (MyTrigger.h)
11-7. V775 data ready trigger implementation (MyTrigger.cpp)
11-8. Copying in the SpecTcl-v3.4 skeleton
11-9. Raw TDC unpacker (RawUnpacker.h)
11-10. v775 raw unpacker implementation includes and defs (RawUnpacker.cpp)
11-11. V775 raw unpacker - getLong utility (RawUnpacker.cpp)
11-12. V775 raw unpacker object constructor/destructor (RawUnpacker.cpp)
11-13. v75 raw unpacker unpacking events (RawUnpacker.cpp)
11-14. Defining raw Time spectra the hard way.
11-15. Header for time difference event processor (Tdiff.h)
11-16. CTdiff implementation (Tdiff.cpp)
11-17. Setting up ssh for password-less login
11-18. Creating an event area for a small amount of data
11-19. Makefile
11-20. Skeleton.cpp
11-21. V775EventSegment.h
11-22. V775EventSegment.cpp
11-23. MyTrigger.h
11-24. MyTrigger.cpp
11-25. RawUnpacker.h
11-26. RawUnpacker.cpp
11-27. spectra.tcl
11-28. SpecTclRC.tcl
11-29. Tdiff.h
11-30. Tdiff.cpp
12-1. Header for MyEventSegment
12-2. Impementation of CMyEventSegment
12-3. The Packet Data
20-1. Dumping data from the ring buffer named 0400x on spdaq22
20-2. Dumping data from the event file segment /user/0400x/complete/run-1234-00.evt
20-3. State Transition items
20-4. Text List items
20-5. Incremental Scalers dump
20-6. Event count items
20-7. Physics Event items
20-8. Unknown item types
21-1. Taking data from a remote ring
22-1. Using serverauth to authorize a node
27-1. Appending the NSCLDAQ Tcl Package repository to Tcl's search path
27-2. Appending NSLCDAQ's TclPackage repository to Tcl's search path
27-3. Requesting the VME Tcl package be loaded.
27-4. Using VME Tcl to locate all 2530 modules
30-1. Loading the sequencer package
31-1. Dumping state changes and sampled event data with od
31-2. Dumping all but packet types
31-3. Attaching SpecTcl
32-1. Converting a ring buffer event file with compatibilitybuffer
32-2. Converting ring buffer data to a 8Kword (16Kbyte) old style event file
32-3. Using compatibilitylogger to convert event files
32-4. convert10to11 - converting event files
32-5. Attaching SpecTcl to ring buffers in compatibility mode
36-1. The CONNECT message format
36-2. Format of the DISCONNECT message
36-3. Format of the LIST command
36-4. Format of the REGISTER command
36-5. Format of the UNREGISTER message
36-6. Format of the REMOTE message
38-1. Including the header
38-2. Compiling code
38-3. Linking code to the library
39-1. A sample ring specification in URI form
39-2. Substituting local host for the hostname in URI's
39-3. Including the header
39-4. Compiling code that uses CRingAccess
39-5. Linking code that uses CRingAccess
40-1. Compilation line for ring buffer primitives
40-2. Including the ring buffer primitives header
40-3. Linking to the ring buffer primitives
40-4. Sample ring buffer consumer
40-5. A sample Ring Buffer producer program
41-1. Incorporating the ring package in your scripts
42-1. Including a ring item class
42-2. Telling the compiler where to find Ring Item headers
42-3. Linking the ring item format libraries
43-1. Connecting to the event builder as a data source.
43-2. Closing an event builder connection
43-3. Starting the event builder
43-4. Establishing the connection callback
43-5. Setting up the disconnect callback
44-1. Processing ring items in Tcl.
44-2. The Scaler Display ring buffer thread
49-1. Enabling a module Lam with wienercamac
50-1. Including the cvt header
50-2. Compiling a C or C++ source file that includes cvt.h
50-3. A makefile rule that builds a C++ program using the cvt package
50-4. Creating a DaqConversion
51-1. The life of a thread
51-2. Why synchonization is needed
51-3. Using SyncGuard to implement a monitor
51-4. Compiling and linking NSCLDAQ threaded software
51-5. Using CGaurdedObject
51-6. Sending data to a CBufferQueue
51-7. Consumer of data from a CBufferQueue
52-1. Compilation switches for the security includes
52-2. Link switches for the security library
52-3. Boilerplate DAQ Authorization code
53-1. Sample URI library program
53-2. Building urltst.cpp
54-1. Shared memory library example
54-2. Compiling a C++ source that includes daqshm.h
54-3. Linking C++ object files that use the daqshm library
60-1. Catching CException and exiting
61-1. The watch command.
62-1. The standard startup script explained
63-1. CEVBClientApp definition
63-2. The CEVBRingClientApp class definition.
63-3. The CEVBRingClientApp initialize and shutdown methods.
63-4. The CEVBRingClientApp dataReady method.
63-5. The EVBRingClientApp getEvents implementation.
63-6. Configuring the event builder client framework
63-7. S800 timestamp extractor (s800timestamp.c
64-1. Using the EVBC state manager callback bundle
65-1. Passing the ring buffer to the construction of an Event segment.
65-2. Creating Events
65-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. Simple usage of the ReadoutGUIAppLauncher package
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. An example usage in VMUSBReadout
1. An example usage in VMUSBReadout
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