UITF Mott CODA Summary
Mott DAQ Host:
name => opsmdaq0 ip => 220.127.116.11
Mott DAQ SBC:
name => sbcmdaq0 ip => 18.104.22.168
Mott DAQ sbcmdaq0
Upgraded from MVME6100/VxWorks to Intel/Linux VME SBC. For more information, please see: 
MVME 6100 was replaced with a Concurrent Technologies VX915.
Local Operating System (CentOS 5.10) is installed on a Compact Flash (4GB) that is mounted on the module.
All DAQ software resides on NFS mounted directories from opsmdaq0.
From the idaq home directory, softlinks were made to /opt/coda/sbcmdaq0/linuxvme (contains an up to date version of the JLab module software drivers) /opt/coda/sbcmdaq0/rol (CODA readout lists for Mott)
Non-DAQ group software drivers were also ported to Linux to minimize software changes to be done on the analysis and monitoring side. These include:
- scalers (SIS3801, SIS3801.no_ring, intlib, scaser)
To support the scaler library framework, a new library was written to facilitate the movement of data between different processes (scaler server, scaler producer, CODA ROC): crateSharedMem
All of these new libraries are located (and used) in: /opt/coda/sbcmdaq0/linuxvme/
The Scaler server and sisProducer are launched after boot via boot scripts in (sbcmdaq0) /home/idaq/boot_scripts/ via entries in /etc/inittab
CODA Readout Lists used in the 6100 were updated into the newer "C" readout list framework. No more using makelist or writing .crl files.
Scaler libraries were then optimized to support DMA.
All Mott CODA configurations are now ready to go:
The source is available here: /opt/coda/sbcmdaq0/rol
To compile, must be on sbcmdaq0. Use the Makefile.
To access the Mott DAQ VME SBC:
idaq@opsmdaq0 > ssh sbcmdaq0
Mott DAQ iocmdaq1
There are two ways to access the Mott DAQ ioc:
- From an accelerator machine: telnet iocmdaq1
- From an accelerator machine: ioc_concole iocmdaq1. Here you need to enter a password to this cannot be done with the idaq account.
The startup file: idaq@opsmdaq0:/cs/op/iocs/iocmdaq1/startup
# IOC: iocmdaq1 # Location: shellPromptSet("vxwrks@iocmdaq1 -> "); # Add the DAQ Host hostAdd "opsmdaq0","22.214.171.124" # Mount the CODA Distribution nfsMount "opsmdaq0","/opt","/opt" # Load CODA software and Drivers for Mott system cd "/opt" < /opt/coda/boot/mott_roc1.boot
The CODA boot file: idaq@opsmdaq0:/opt/coda/boot/mott_roc1.boot
# Boot file for CODA ROC 2.6.2 # PowerPC version # Add Multicast Routes for cMsg support mRouteAdd("126.96.36.199","188.8.131.52",0xf0000000,0,0) # Load host table hostAdd("opsmdaq0.acc.jlab.org","184.108.40.206") # Setup environment to load coda_roc putenv "MSQL_TCP_HOST=opsmdaq0" putenv "EXPID=inj" putenv "TCL_LIBRARY=/opt/coda/2.6.2/common/lib/tcl7.4" putenv "ITCL_LIBRARY=/opt/coda/2.6.2/common/lib/itcl2.0" putenv "DP_LIBRARY=/opt/coda/2.6.2/common/lib/dp" putenv "SESSION=injuser" # Load Tempe DMA Library ld< /opt/coda/2.6.2/extensions/tempeDma/usrTempeDma.o usrVmeDmaConfig(2,3,0) # Load JLAB FADC library ld < /opt/coda/2.6.2/extensions/fadcV2/v2.0/fadcLib.o # Load cMsg Stuff cd "/opt/coda/2.6.2/cMsg/vxworks-ppc" ld< lib/libcmsgRegex.o ld< lib/libcmsg.o # New TI library ld < /opt/idaq/crl/tid/tidLib.o # Load the CODA Readout controller cd "/opt/coda/2.6.2/VXWORKSPPC/bin" ld < coda_roc_rc3.6 ld < /opt/idaq/lib/v895/v895.o ld < /opt/idaq/lib/v775/v775.o ld < /opt/idaq/lib/JLabdiscr/vmeDSClib.o ld < /opt/idaq/lib/JLabdiscr/GUIDiscrim/vmetcpserver.o # Initialize the event counter ncnt = 0 # global variable, needed for out-of-time scalers to inform CODA they're ready scaRunReady = 0 scaNbError=0 # global to control printouts of SIS3801 scaDebug = 0 # global variable, needed to tell scalers ROC is active rocActivate = 0 # Helicity timing board globals vxhelclock=0 vxheltsettle=0 vxheltstable=0 vxhelpattern=1 vxheldelay=0 vxhelfreq=0 # Scaler libraries (on idaq) ld < /opt/idaq/scaler/intlib/5.5/scalIntLib.o ld < /opt/idaq/scaler/SIS3801/SIS3800.o ld < /opt/idaq/scaler/SIS3801/SIS3801.o ld < /opt/idaq/scaler/SIS3801.no_ring/SIS3801_noring.o sis3801Init(1); ld < /opt/idaq/scaler/scaser/scaser.o taskSpawn "scalServ",125,spTaskOptions,10000,bobServer initSIS() initISR_SIS() end_run_flag=0 taskSpawn "SISProd",95,spTaskOptions,10000,SISProducer runStartClrSIS() # Helicity info gathering ld < /opt/idaq/helicity/sgethel.o taskSpawn "helinfoServ",127,spTaskOptions,10000,helServer # Spawn tasks taskSpawn ("ROC",200,8,250000,coda_roc,"","-s","inj","-objects","ROC1 ROC") sp main
CODA crl files are in: idaq@opsmdaq0: /opt/idaq/crl Scalers.crl Mott_Sample.crl Mott_SemiInt.crl PEPPo_Int.crl To compile: makelist Mott_Sample.crl ppc
CODA scripts files are in: idaq@opsmdaq0: /opt/idaq/scripts
Summary of CODA Configurations
|Scalers||Scaler S1 (helicity gated), S2 (un-gated)||/data/mott/Scalers_%d.dat||Delayed nT_Settle|
|Mott_Sample||Mott FADC (Mode 1), S1, S2, TDC||/data/mott/Mott_Sample_%d.dat||Mott Detector|
|Mott_SemiInt||Mott FADC (Mode 7), S1, S2, TDC||/data/mott/Mott_SemiInt_%d.dat||Mott Detector|
|PEPPo_Int||INT FADC, S1, S2||/data/compton/PEPPo_Int_%d.dat||nT_Settle|
Backup Data Files to SILO
Cron scripts are installed on the idaq account on opsmdaq0 to back up data and delete it from /data and /data1:
Do not attempted to copy, delete, move, or rename files. Never !
The scripts assume that data appears in /data*/DIR where DIR = "annihilation" or "compton" or "mott" Files must have the keywords "PEPPo" or "Scalers" or at least "dat". This avoids writing scratch files like root output. Do not start putting data in some new place or with new names. It won't be backed up to MSS if you do that.
The data are deleted from local disks if they have been written in duplicate with correct byte count to the MSS tape silo. The data stay on disk for an amount of time that is related to the amount of disk space is available. If lots of disk available, the data stay forever. If not much disk, the data are deleted aggressively.
The data is copied to: /mss/accel/peppo/raw
The copying of data was disabled on January 3rd, 2014. - To list: crontab -l - To remove: crontab -r - Check again: crontab -l - To load: crontab cron_opsmdaq0 (in /opt/idaq/cron)
const FADC_ADDR = 0x680000 # 12 bit fADC MOTT - Slot 7 const FADCMODE = 1 (Mott_Sample) const FADCMODE = 7 (Mott_SemiInt) const FADCSLOT_Mott = 7 const TRSPLIT = 0xeb13 # Address of fADC Signal Distribution Module
CH1 - E LEFT Range - 0.5 V DAC_offset = 3300 CH2 - E RIGHT - 0.5 V DAC_offset = 3300 CH3 - E UP - 0.5 V DAC_offset = 3300 CH4 - E DOWN - 0.5 V DAC_offset = 3300 CH5 - dE LEFT - 0.5 V DAC_offset = 3300 CH6 - dE RIGHT - 0.5 V DAC_offset = 3300 CH7 - dE UP - 0.5 V DAC_offset = 3300 CH8 - dE DOWN - 0.5 V DAC_offset = 3300 CH9 - BFM - 1.0 V DAC_offset = 3300 CH10 - Empty - 1.0 V DAC_offset = 3300 CH11 - Mott Trigger - 1.0 V DAC_offset = 3300 CH12 - Empty - 1.0 V DAC_offset = 3300 CH13 - Delayed Hel - 1.0 V DAC_offset = 3300 CH14 - T_Settle - 1.0 V DAC_offset = 3300 CH15 - Pat Sync - 1.0 V DAC_offset = 3300 CH16 - Pair Sync - 1.0 V DAC_offset = 3300
- Reference: JLab Module Manuals 
- Reference: Media:FADC250_V2_ADC_FPGA_V5.pdf
- Reference: Media:Programming_FADCV2_3.pdf
- Summary of FADC250 Operating Modes (2/18/14): Media:FADC250_modes_2.pdf
- Changed Mott_SemiInt to the FADC Mode 7 from Mode 3 -- Done on April 29, 2014. This mode provides:
- Pulse integral (sum of all 4ns samples over set threshold, up to 3 pulses per window)
- Pulse time (62.5 ps resolution)
- Pedestal average of 4 samples at beginning of window.
FADC Programmed Thresholds:
- Mott_Sample: Threshold = 0
CH1 - E LEFT Threshold = 600 CH2 - E RIGHT Threshold = 600 CH3 - E UP Threshold = 600 CH4 - E DOWN Threshold = 600 CH5 - dE LEFT Threshold = 600 CH6 - dE RIGHT Threshold = 600 CH7 - dE UP Threshold = 600 CH8 - dE DOWN Threshold = 600 CH9 - BFM Threshold = 1750 CH10 - Empty Threshold = 100 CH11 - Mott Trigger Threshold = 1000 CH12 - Empty Threshold = 100 CH13 - Delayed Hel Threshold = 10 CH14 - T_Settle Threshold = 10 CH15 - Pat Sync Threshold = 10 CH16 - Pair Sync Threshold = 10
Mott_Sample Settings: FADC_BLOCK_MODE = 1 MODE = 1 PL = 80 - Programmable Latency (100 ns to 8 µs) PTW = 50 - Programmable Trigger Window (100 ns to 2 µs)
Mott_SemiInt Settings: FADC_BLOCK_MODE = 1 MODE = 7 PL = 80 PTW = 50 NSB = 5 - Number of Samples before the threshold crossing sample (TC) included in the pulse data set (integral) NSA = 28 - Number of Samples after the threshold crossing sample (TC) included in the pulse data set (integral) NP = 1 - Number of pulses to search for in PTW
const FADC_ADDR = 0xed0000 # 12 bit fADC Int - Slot 10 const FADCMODE = 3 (Int_Int, special) const FADCSLOT_PEPPo3 = 10 const TRSPLIT = 0xea13 # Address of fADC Signal Distribution Module
Range - 2.0 V DAC_offset = 3300
All the relevant files are at: M:\FE\PEPPo. These files also copied to opsmdaq0 at: /opt/idaq/HaiDong_PEPPo.
CAEN v775 const int V775_ADD = 0x1190
From Coda file: Full Scale (ns) = v775_getFSR() = 134 ns Bin Resolution (ps) = (v775_getLSB()*1000.) = 34 ps/channel
vxwrks@iocmdaq1 -> v775_printScaleInfo() v775 => fullscale register =255 (0xff), LSB=0.034902 ns/chan, full scale=134.023529 ns, sliding Gate=1
The TDC is operated in Common Start Mode: v775_setupCommonStart()
S1 and S2
S1: SIS3801 at addr 0xa40000 S2: SIS3801 at addr 0xa50000
A24 Address for TID Module (0x100000 for VME Slot 2) const TRIG_ADDR = 0x100000
The input trigger can be prescaled by editing the crl file: /* Front panel trigger prescale: 2^<arg> */ tidSetPrescale(0);
The event dump utility (cefdmp) can display, in a readable ASCII format, events from the data files.
% cefdmp [filename] [-o object] [-t tag] [-u uniquetag] [-s start] [-e end] [-d dictionary] [-x] % xcefdmp [same]
o specify the source object name (CODA component name) t select specified tag number or name (full path in event structure) u select specified unique tag, independent of location in the event s number of first record in file to dump e number of last record in file to dump d specify dictionary for obtaining tag names and titles x hex dump of integers (default is decimal)
cedit and dbedit
Use cedit and/or dbedit to modify CODA database.
Issues and FAQ
- RunNumber: if the run number in msql is different from the one in CODA cool database, coda doesn't work. Open dbedit => localhost => sessions and change the RunNumber to match the one in CODA cool database.