Data Acquisition and Online Analysis at the NSCL

Ron Fox


Table of Contents
Preface and how to use this book
I. Tutorial and Presentation
1. Orientation
1.1. Model for the NSCL system
1.2. What the NSCL DAQ System Provides
1.3. What must be done to create an experiment
1.4. Resources
2. Sources of data
2.1. What is a data source
2.2. The high performance production readout framework
2.3. A worked example
2.4. Event packets and larger systems.
2.5. Periodically read scalers
2.6. Other resources
3. Viewing data online and offline
3.1. Introduction to NSCLSpecTcl
3.2. An Event Processor for our packetized Readout
3.3. Running SpecTcl
3.4. Using Tree Parameter
3.5. Other Resources
4. DAQ system integration
4.1. Introduction
4.2. Writing Scripts
4.3. Customization suggestions
4.4. Directory structures.
4.5. The ReadoutGUI
4.6. Integrating SpecTcl in your experiment
4.7. Desktops and quick launch shortcuts
4.8. Other resources
5. Best Practices for Building Software
5.1. Introduction
5.2. Goals and Basic Principles
5.3. How to Isolate and Manage Change
5.4. Developing in a Maintainable and Sustainable Way
5.5. Deploying Software to an Experiment
5.6. Writing to be a Cog in a Larger Machine
5.7. Miscellaneous Topic, Tricks and Techniques
5.8. Additional Resources
II. The SpecTcl sorting program
6. NSCLSpecTcl Introduction
7. Getting Started With SpecTcl
7.1. What is SpecTcl?
7.2. Customizing SpecTcl to analyze your data
7.3. SpecTcl at Run-time
7.4. Introduction to treeparameter
8. Scripting SpecTcl
8.1. An introduction to scripting with Tcl/Tk
8.2. Incorporating scripts into SpecTcl
8.3. SpecTcl global variables
8.4. SpecTcl Command categories
8.5. Tailoring the SpecTcl main window
8.6. Tailoring the Folder GUI
8.7. SpecTcl scripting cookbook
9. Programming SpecTcl
10. SpecTcl Command Reference
10.1. SpecTcl Primitive Commands
10.2. SpecTcl public proc commands.
11. SpecTcl Programming Reference
12. Xamine Reference
13. SpecTcl Plugins.
14. Scripted SpecTcl
15. Getting and installing SpecTcl
III. Reference material
16. Introduction to reference material
I. The NSCL Exception class library
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.
II. VME interface software
CVMEInterface -- Interface independent access to the VME bus for C++
CSBSBit3VmeInterface -- Support for SBS/Bit3 specific functions.
WienerVMEInterface -- Wiener PCI/DA-VC32 support software.
WienerUSBVMEInterface -- "Dumb" support for the VM-USB
Vme --  Provide access to the VME from Tcl and Tk scripts.
III. Module level device support software
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
IV. Low Level CAMAC support
cesmacros -- Low level support for the CES CBD 8210 VME Camac Branch Highway Driver
weinermacros -- CAMAC macros for the VC32/CC32 camac controller.
camactcl --  Provide Tcl support for access to CAMAC crates via the CES CBD 8210 VME branch highway driver.
V. The Classic Readout Skeleton.
Readout Classic Skeleton -- User provided software for Readout Classic
DAQWordBufferPtr - pointer to spectrodaq buffers -- Access to spectrodaq buffers
VI. Threaded application framework
CObjectRegistry -- Registry for named objects.
CClassifiedObjectRegistry -- A collection of named object registries.
CNamedObject -- Base class for objects that have names and type information
CRegisteredObject -- Base class for objects to be registered in a CClassifiedObjectRegistry
CApplicationRegistry -- A singleton CClassifiedObjectRegistry
CDuplicateNameException -- Exception thrown for object name clashes
CNoSuchObjectException -- Exception thrown on registry search failures.
CRefptr -- Provide referenced counted pointers/garbage collection
CThreadRecursiveMutex" -- Provide a mutex that can do balanced lock/unlocks.
CApplicationSerializer" -- Singleton object providing an application global recursive mutex.
CEvent -- Base class for event monitors
CEventMonitor" -- Detect the presence of an event.
CReactor" -- Base class encapsulating code responding to an event
CTimerMonitor -- Event monitoring for timers.
CTimerEvent -- Base class for an all-in-1 timer.
CBufferMonitor -- Provides an event monitor for spectrodaq buffer arrival.
CBufferReactor -- React to buffer events from CBufferMonitor
CBufferEvent -- Package spectrodaq buffer processing in a single class.
CFdMonitor -- Monitor events on a file descriptor.
CFdReactor -- Provides an abstract base class that reacts to file events.
CFileEvent -- An easy to use bundle for adding application coe to file events.
CLocationEvent -- Perform application specific code in response to changes in memory.
CLocationMonitor -- Monitor locations in memory for specific types of changes.
CLocationReactor -- Abstract base class to react to location monitors
CPointerPredicate -- Abstract Base Class for location monitor predicates
CChangedPredicate" -- Pre-written CPointerPredicate testing for changes.
CMaskedValuePredicate -- Pointer predicate that does bit field operations
CSocket -- Wrap TCP/IP sockets
CServerConnectionEvent -- Event for server CSocket connections
CServerInstance -- Encapsulate a TCP/IP server instance
CInterpreterStartup -- Common code for starting Tcl interpreters event loops.
CTCLInterpreterStartup -- Start a Tcl interpreter in a guest event loop.
CTKInterpreterStartup -- Start a Tk interpreter (wish)
CTCLSynchronizeCommand -- sync Tcl command class.
CDAQTCLProcessor -- Tcl command that is synchronized with applications
CIncompatibleMonitor -- Exception to report incompatible monitor/reactor pairs.
CLinkFailedException -- Report spectrodaq link failures.
CTCPBadSocketState -- Exception to report usage errors of CSocket
CTCPConnectionFailed -- Report connection failures for CSocket
CTCPConnectionLost -- Report loss of connection with a peer.
CTCPNoSuchHost -- Report failures to resolve hostnames.
CTCPNoSuchService -- Report failure to resolve a service name.
CDuplicateSingleton -- Report creation of a second singleton
CNoSuchLinkException -- Report a nonexistent or failed link to the data service
VII. The production Readout Skeleton.
CReadoutMain -- Production Readout Configuration Class
CExperiment -- The production readout experiment object/class.
CRunState -- Encapsulates the run state and allowed transition knowledge
CEventSegment -- Base class for event segments.
CInterpreterCore -- TCL Interpreter core extensions
CTclAuthorizer -- Authorizes or rejects Tcl server connections.
CInterpreterShell -- Bridge base calss between Interpreter startup and Interpreter core classes
CTimer -- Schedule objects for periodic execution
CRunVariable -- Encapsulates varying items that are periocally logged during a run.
CStateVariable -- TCL Variable that is constant during a run.
CStateVariableCommand -- Manipulate State variables via command or C++
CRunVariableCommand -- Class that contains code to manipulate run variables.
CScalerBank -- Container for scalers.
CDocumentedPacket -- Support for event packets that are documented in documentation buffers.
CCompoundEventSegment -- Compound Event segment.
CScalerTrigger -- Abstract base class for scaler readout triggers
CBadTransitionException -- Exception class for invalid run state transitions
CBeginCommand -- Attempts to start a run via command.
CPauseCommand -- Processes the pause command
CEndCommand -- Process the end command.
CResumeCommand -- Responds to the resume command
CConstVariableCommand -- Process the const Tcl command extension.
CTagBaseCommand -- Alter default buffer tagging.
CExitCommand -- Replacement exit command.
CConstVariable -- Extends CTCLVariable for consts.
CTimedEvent -- Encapsulates operations to be scheduled periodically.
CInvalidPacketStateException -- Exception that reports an invalid use of CDocumentedPacket
VIII. Production Readout command referenced
const --  Create and maniuplate script constants.
runvar --  Create and manipulate variables that may change at get logged in a run
statevar --  Create and manipulate run state variables
tagbase --  Latent support to relocate the spectrodaq buffer tagging base.
IX. C++ encapsulation of a Tcl API subset
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.
X. NSCL Event logging program
eventlog --  Create event files from data submitted to a system's Spectrodaq buffer manager.
XI. bcnaf
bcnaf -- Execute CAMAC operations as shell commands.
XII. EPICS Support
chanlog -- Write a set of channels to file
controlpush -- Periodically push epics channels to a TclServer.
epicsdisplay -- Display epics channels
XIII. daqstart
daqstart -- Monitor essential programs
17. NSCL Graphical buffer dumper
17.1. bufdump quickstart guide
17.2. Introduction to bufdump concepts
17.3. Commands on the File menu
17.4. Commands on the Filter menu
17.5. Commands on the Help menu
17.6. Extending bufdump
XIV. Service Port Manager.
DaqPortManager -- Manage TCP/IP service ports and advertise their allocations
CPortManager -- Provide a C++ interface to the server port manager daemon.
CPortManagerException -- Report errors conditions in port manager transactions
portAllocator -- Tcl API for the DaqPortManager daemon.
XV. VME crate monitoring
powerdetect -- Show status of a VME crate
cratemonitor -- Notify users when a crate goes offline
cratelocator -- Determine which VME crate is which.
XVI. Scaler Display Software.
sclclient -- Maintain scaler state in a tclserver
ScalerDisplay -- Live Scaler Displays
XVII. sequencer.
sequencer --  Provide a ReadoutGui plugin for nscldaq 8.1 and later that can automate several data taking runs.
XVIII. Slow controls.
CFD812 -- Control package for CAEN V812 VME constant fraction modules.
CFDState -- Remember the state of a CAEN V812.
caenv812gui -- CAENV812 control widget
caenv812control -- Gui to control CAEN V812 CFDs
loadcfd -- Load a CAEN V812 constant fraction via command line.
caen812configfile -- Format of configuration files for CAEN V812 software
vhq -- TCL Package to control ISEG VHQ202x power supplies.
vhqControl -- Control program for vhq 2xx
vhqPanel -- VHQ 2xx control panel widget
vhqconfig -- Configure VHQ applications
n568b -- Control package for CAEN N568B shaping amplifier
n568Panel -- Megawidget that controls an N568 shaping amplifier.
n568Control -- GUI control panel for CAEN N568 shaping amplifiers.
loadshaper -- command line utility to load N568b shaper modules.
n568configfile -- Configuration file for loadshaper(1tcl) and n568control(1tcl)
XIX. spectclonline
spectcldaq -- Adapt between NSCL DAQ and non NSCL DAQ aware clients.
18. NSCL DAQ Readout GUI
18.1. Running and configuring the Readout GUI
18.2. Operating the Readout GUI
18.3. Extending the Readout GUI
18.4. File directory structure enforced by ReadoutGUI
19. The tcl server application
19.1. The TclServer protection model.
19.2. TclServer reference page.
XX. spectrodaq Status and widgets
spdaqstat -- Package of spectrodaq status functions.
spdaqwidgets::freepagesgraph -- Graphical display of spectrodaq free buffer level
spdaqwidgets::bufferusage -- Display the set of nodes and processes using spectrodaq buffers
IV. Appendices
A. Important C++ concepts
B. Full source of the examples
C. VME Address modifiers
D. Application notes
E. Installation instructions
List of Tables
1-1. Application frameworks at the NSCL
1-2. Existing complete systems and their maintainers.
2-1. High Performance Production Readout Skeleton file manifest
2-2. CAEN 32 channel compatible modules
4-1. Environment variables existing and suggested
8-1. SpecTcl processing and limit variables
8-2. SpecTcl performance/statistics variables.
8-3. Spectrum Display commands
8-4. Event Source Commands
8-5. Parameter Commands
8-6. Spectrum Commands
8-7. Spectrum Commands
8-8. Save/Restore Commands
8-9. Miscellaneous Commands
18-1. Data Acquisition configuration parameters
18-2. Directory root configuration parameters
18-3. State parameters
List of Figures
1-1. A Generic Data Acquisition System
1-2. Model of the NSCL DAQ system.
1-3. Programming with libraries
1-4. Programming with application frameworks
2-1. Electronics for the CAEN V775 test setup.
2-2. Bufdump after it is just started.
2-3. CDocumentedPacket key interfaces.
3-1. SpecTcl's analysis pipeline
3-2. The TkCon window
3-3. Our SpecTcl GUI.
3-4. The Xamine window
3-5. SpecTcl-3.0 Tree parameter GUI
3-6. Tree Gui for SpecTcl-3.0 ready to create a spectrum array
3-7. Tree variable tab of the GUI.
4-1. Old Readout GUI
4-2. Readout GUI version 8.1 and later.
4-3. The SpecTcl button bars
4-4. The .tkcon window
4-5. 3.0 and earlier Tree Parameter GUI
4-6. SpecTcl 3.1 and later Tree Parameter GUI
5-1. Structure of a segment
7-1. Unpacking pEvent into rEvent
7-2. Cut button dialog
7-3. Folder GUI
7-4. Spectrum Context Menu
7-5. Folder GUI Parameter context menu
7-6. Initial Spectrum Definition Dialog
7-7. Spectrum editor for 1-d spectra
7-8. Spectrum definition dialog after expanding the parameter tree
7-9. The folder GUI with a 1-d spectrum expanded.
7-10. The generic gate definition dialog
7-11. The slice definition dialog (initial)
7-12. Or Gate Definition Dialog
7-13. Or gate dialog after the gate tree has been expanded.
7-14. The folder GUI after expanding the Gates folder
7-15. Gate application dialog
7-16. Filled in Gate Application dialog.
7-17. Save definition dialog
7-18. Attach online dialog
7-19. File data source dialog
7-20. Pipe data source dialog
7-21. Cluster File data source dialog
7-22. Sample weight setting GUI
7-23. Tree parameter classic GUI
7-24. Selecting the parameter
7-25. The variable setting page
7-26. Classic Tree Parameter GUI Parameter editing page
7-27. Classic tree parameter gate editor
1. cratemonitor main window
2. Crate Locator Power failure dialog
1. cratelocator main window
2. cratelocator's offline dialog
18-1. Readout GUI for NSCLDAQ 8.1 and later
18-2. Detailed buffer usage statistics.
List of Examples
2-1. The CEventSegment Abstract Base Class
2-2. Partial listing of the CAENcard header
2-3. Event Segment header for V775 TDC event segment.
2-4. CAEN V775 event segment implementation front matter
2-5. CAEN V775 TDC event segment constructor.
2-6. CAEN V775 event segment destructor.
2-7. CAEN V755 event segment Initialize implementation
2-8. The CAEN V775 Read member implementation
2-9. CAEN 775 event segment header that supresses zeroes.
2-10. CAEN 775 event segment zero supressing constructor
2-11. CAEN 775 event segment zero supressing initialization
2-12. Buffer dumps from zero supressed CAEN v775
2-13. Header for V755 event segment in a documented packet
2-14. CAEN V775 packetized readout event segment constructor
2-15. CAEN V775 packetized event segment destructor
2-16. CAEN V775 Event Segement with packetization
2-17. Key features of the CScaler ABC
2-18. Extract from the CSIS3820 header
2-19. Header for the CMyScaler class.
2-20. Constructors and destructors for a CMyScaler object
2-21. CMyScaler::Initialize implementation
2-22. CMyScaler::Read implementation
2-23. The CMyScaler::size implementation
3-1. Obtaining the SpecTcl Skeleton
3-2. CEventProcessor header file main features.
3-3. Event Processor Header
3-4. Event processor boilerplate
3-5. Implementing the event processor constructor
3-6. Event Processor boilerplate code
3-7. Event processor searching for the right packet.
3-8. Defining bits, masks and shift counts for data words
3-9. Unpacking data from the digitizer:
3-10. Full event unpacker function call operator implementation
3-11. Adding includes for MyEventProcessor.h
3-12. Registering the event processor
3-13. Parameter command
3-14. Creating the parameter definitions
3-15. Adding spectrum creation to the configuration file
3-16. Minimal gui for attaching online
3-17. Adding a status line to the SpecTcl GUI
3-18. Important Features of the CTreeParameter class definition.
3-19. CTreeParameterArray class interface
3-20. The CTreeVariable class definition
3-21. Event processor header using tree parameter
3-22. MyEventProcessor's constructor.
3-23. Changes to MyEventProcessoroperator() to use Tree parameter.
3-24. Constructing the event processor for Tree parameters
3-25. Creating an array of spectra with the TreeParam gui
3-26. Using the TreeParam gui to create a 2-d spectrum.
3-27. Using Tree Gui to save definitions to file
3-28. Loading a definition file
3-29. Making MyEventUnpacker's tree parameters public
3-30. First try at a weighted sum computer
3-31. First implementation of the weighted sum computer
3-32. Revised wsum header
3-33. Revised constructor for wsum
3-34. The OnAttach member of the modified wsum
4-1. Using chmod to allow execution
4-2. #! lines for bash and for tclsh
4-3. Locating tclsh in the path
4-4. Making symbolic links in ~/bin
4-5. Bulk event data directory tree
4-6. Run view of the experiment.
4-7. Associating configuration information with runs
4-8. run directory structure after associating configuration info
4-9. Starting the Readout GUI in NSCLDAQ-8.0 and earlier.
4-10. Starting the Readout GUI for NSCLDAQ-8.1 and later.
4-11. A Readout Gui startup script
4-12. Sample readout startup script
4-13. Putting a button on all of SpecTcl's windows
4-14. Desktop Shortcut Script for the ReadoutGui/Readout:
4-15. Passing parameters and switches to Readout
5-1. Shell script without any change isolation
5-2. Isolating the nodes
5-3. Abstracting Readout File name elements.
5-4. Abstracting the Readout GUI Shell Script
5-5. Factoring Definitions into expconfig.sh
5-6. Prompting for an Event File
5-7. Makeing a global configuration parameter
5-8. Using a configuration array:
5-9. Putting Tcl script common definitions into a configuration script:
5-10. Selecting number and base addresses of ADC's with code.
5-11. Configuring C/C++ with application specific data files
5-12. A C/C++ configuration file written in Tcl
5-13. Using a Tcl configuration script in C/C++
5-14. Using environment variables to configure C/C++ programs.
5-15. Configuration text file
5-16. Using ~/daconfig to check the existence of the hardware config file
5-17. Turning shell variable definition files to Tcl config arrays
5-18. CVS example files.
5-19. Placing our sources into a CVS repository
5-20. Checking out a working directory
5-21. Adding a new file to an existing project
5-22. Committing a file
5-23. Tagging a version
5-24. Checking out a tag
5-25. SpecTcl's skeleton Makefile
5-26. Creating an install target
5-27. CReadNSCLDevice header code fragments
5-28. Key parts of the CNSCLDeviceSegmentReader header
5-29. Implementation of CNSCLDeviceSegmentReader::Read
5-30. Key parts of the CExtendedSegment header.
5-31. CMyExperiment::SetupReadout for the extended supported device
5-32. CExtendedSegment::Read implemented to put data into the subpacket
5-33. CExtendedSegment::Read Implemented to put our data after the end of the subpacket
5-34. CNSCLDeviceSegmentReader using the chain of responsibility pattern
5-35. Running the chain of responsibility
7-1. Minimal SpecTcl Event Processor
7-2. Copying the SpecTcl Skeleton to a new directory named spectcl
7-3. Example Header for minimal SpecTcl Event processor
7-4. Implementation file for a minimal event processor
7-5. The top part of the SpecTcl Skeleton Makefile
7-6. The parameter command and examples
7-7. Sample uses of the parameter command; legal and illegal
7-8. Form of the spectrum command
7-9. Examples of the spectrum command.
7-10. The sbind command
7-11. Examples of the sbind command
7-12. General form of the gate command
7-13. Gating Si1.e between 100 and 200
7-14. The apply command
7-15. Applying the Si1.e.slice gate
7-16. Creating and applying an or (+) gate.
7-17. The Sample SpecTclRC.tcl script
7-18. Sample folder gui saved settings file
7-19. Creating Tree Parameter Structures.
7-20. Tree parameters in event processors
7-21. Creating tree variables
7-22. Gui to set the weights of the sum
7-23. Computing a weighted sum using treevariables and tree parameters.
8-1. A simple Tcl Command
8-2. Tcl command with double quote quoting
8-3. Quoting with braces:
8-4. Command substitution in Tcl:
8-5. Variable substitution
8-6. Backslash substitution
8-7. Comments and the # character.
8-8. Tcl only does one round of substitution:
8-9. Setting an array element
8-10. Substituion in expr
8-11. The incr command
8-12. The if command
8-13. Bad if constructions
8-14. while
8-15. for
8-16. Tcl proc commands
8-17. The Tcl source command
8-18. Computing the fraction of the data analyzed.
8-19. Clearing a list of spectra
8-20. Exiting with a prompt
8-21. Connecting the Exit proc to a button
8-22. Displaying analysis efficiency
8-23. Snit megawidget spectrum prompter
8-24. Clearing selected spectra
8-25. Sample GUI user interface elements and layout
8-26. Re-laying out the GUI:
8-27. Adding a menu to the folder GUI menubar
8-28. Extending an existing folder GUI menu
10-1. Applying a gate to some spectra
10-2. Processing the output of the apply -list command.
10-1. Attaching to a file
10-2. Attaching to the online system
10-3. Analyzing a group of event files
10-1. Integrating a region of a 1-d spectrum.
10-2. Subtracting a constant background from a 1-d spectrum.
10-1. Clearing all spectra
10-2. Clearing all spectra that match a pattern
10-1. Creating a Fit
10-2. Listing the centroids of all Gaussian fits to the console
10-3. Using fit proc
10-1. Apply a fold to several spectra
10-2. Removing folds for spectra named g*
10-1. Creating a filter
10-2. Associating a filter with an output file
10-3. Enabling the filter
10-1. Several sample gate creations
10-1. Defining a parameter
10-2. Listing some parameters
10-1. Creating a linear calibration
10-2. List pseudo names that depend on a parameter
10-1. Binding all spectra to Xamine
10-2. Binding a single spectrum to Xamine
10-3. Listing all display bindings
10-1. Reading a spectrum from a named file
10-2. Processing a multi-spectrum file with sread
10-3. sread from a command pipe:
10-1. Writing a single spectrum to file:
10-2. Writing spectra to a file created with the Tcl open command
10-3. Writing to a pipe to compress spectra
10-1. Creating a new tree parameter
10-2. Using treeparameter -list
10-3. Using treeparameter -check|-uncheck
10-1. Listing all tree variables
10-2. Using patterns to list selected vars
10-3. Modifying both value and units of a treevariable
10-4. Modifying only the units of a tree variable
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. Creating the custom location monitor class
2. Using the custom location event.
1. Writing a script to run the production readout software
1. Sample controlpush configuration file
1. Allocating a port with the port manager
2. Listing the port allocatiosn on a system.
1. Catching a CPortManagerException
1. Allocating a service port in Tcl
2. Listing allocated ports in Tcl
1. Starting sclclient
1. Action script example
2. Sequencer column configuration file
1. Sample CAEN V812 CFD configuration/settings file
1. vhq Configuration file
1. Sample N568 configuration file
1. Crude hex dump of all data from spdaq16:
2. Print the titles and other ASCII information in event data
18-1. An extension that logs
18-1. Staring a run using ReadoutGui::Begin
18-1. Adding a frame to the readout GUI:
18-2. Using file normalize to set the readout path
18-3. ReadougGUIPanel::setScalers and ReadougGUIPanel::getScalers
18-4. Starting a 1 minute timed run
19-1. Using serverauth to authorize a node