NSCL Ring buffer DAQ tutorial

Ron Fox

Table of Contents
1. Introduction
2. Creating a Readout program from scratch
2.1. Obtaining the readout skeleton
2.2. Creating an event segment
2.3. Creating scaler banks and scaler modules
2.4. Tying the pieces together
2.4.1. Specifying the event trigger.
2.4.2. Specifying what is read out by an event trigger
2.4.3. Specifying the scaler readout
2.5. Editing and using the Makefile
3. Creating a Readout program from a spectrodaq production readout program
3.1. Obtaining a copy of the RingDaq readout skeleton
3.2. Porting existing event segments to RingDaq
3.3. Registering event segments with Skeleton.cpp
3.4. Porting scaler readout to RingDaq
3.5. Modifying the Makefile
4. Creating a Readout program from a spectrodaq classic readout program
4.1. Obtaining the RingDaq skeleton.
4.2. Modifications to skeleton.cpp
4.3. Writing the adaptors.
4.3.1. Wrapping skeleton.cpp in a CEventSegment
4.3.2. Wrapping skeleton.cpp in a CScaler
4.4. Modifications to Skeleton.cpp
4.5. Modifying the Makefile
5. Analyzing ring buffer data with SpecTcl
5.1. Event processor modifications
5.2. Attaching to a ring buffer data source
5.2.1. RingDaq event files
A. Format of Ring bufffer DAQ event files
B. User written triggers
C. Compatibility mode utilities
List of Examples
2-1. Getting the skeleton
2-2. Simple Event Segment Header
2-3. Event segment front matter
2-4. Event segment constructor and destructor
2-5. Event segment initialize implementation
2-6. Event segment clear implementation
2-7. Event segment read method implementation
2-8. Using a compound event segment
2-9. Using CEventPacket
2-10. CScaler header
2-11. CSIS3820Scaler implementation includes section
2-12. CSIS3820Scaler constructor/destructor
2-13. CSIS3820Scaler initialize/clear methods
2-14. CSIS3820Scaler read
2-15. Creating a scaler bank
2-16. Sepcifying the trigger/busy
2-17. Adding event segments to the experiment
2-18. Setting up scaler readout
2-19. Makefile modifications
3-1. Getting the skeleton
3-2. SPDAQ Production readout event segment header
3-3. SPDAQ production readout event segment implementation
3-4. Porting the event segment to RingDaq
3-5. Porting the Event segment to RingDaq II
3-6. Porting the Event segment to RingDaq II
3-7. Setting up triggers and registering an event segment
3-8. Production readout scaler class (header)
3-9. Production readout scaler class (implementation)
3-10. SPDAQ Scaler to Ring Buffer (I)
3-11. SPDAQ Scaler to Ring Buffer (II)
3-12. Registering scaler objects with RingDaq
4-1. Getting the skeleton
4-2. Adding existing readout files:
4-3. A readout classic readevt
4-4. skeleton.cpp modified for RingDaq
4-5. Classic readout using CopyIn
4-6. Converting Classic readout with local buffers to RingDaq
4-7. Header for event segment adapator to readout classic
4-8. Implementation for the event segment adaptor to readout classic
4-9. Scaler adapter header
4-10. Trival methods of the scaler adapter
4-11. Adapting the scaler readout
4-12. Sepcifying the trigger/busy
4-13. Registering a CTraditionalEventSegment
4-14. Registering the scaler adapter with readout
5-1. SpecTcl event processor boilerplate
5-2. SpecTcl event processor boilerplate for RingDAQ
5-3. Proc to connect SpecTcl to a ring buffer data source
A-1. Item type codes
B-1. CAEN data ready trigger header
B-2. CAEN data ready trigger implementation
C-1. Writing event data in SPDAQ format
C-2. Piping SPDAQ formatted event data to SpecTcl
C-3. Running spectcldaq.server in an Spdaq system.
C-4. SpecTcl pipe data source using spectcldaq.server