-
Notifications
You must be signed in to change notification settings - Fork 2
Run SRS FRIBDAQ
This document outlines how to run the FRIBDAQ for a default SRS system. The SRS system considered here consists of one crate with one FEC with one hybrid.
The considered FRIBDAQ version with the SRS readout is 12.1-001, in FRIB bullseye container, and requires to have the SRS slow control software with special features.
Here are different sections to help the reader configure the SRS FRIBDAQ:
- SRS Slow Control Installation
- Directory Structure with DAQ codes
- Settings and ReadoutCallouts
- SRS Configuration File
- Channels Map File
- Scripts
- Procedure to Run
The SRS control software is the interface to the electronics, it is used for configuration, sending control commands (start/stop) and performing calibrations. The original version was developed with the support of the RD51 collaboration at CERN. Modifications have been added to enable external trigger and the control of the slow control system by external software.
-
Clone the version compatible with FRIBDAQ (branch frib of the git repository https://github.com/FRIBDAQ/vmmsc.git):
git clone -b frib https://github.com/FRIBDAQ/vmmsc.git vmmsc
-
Follow the installation procedure described in the README of https://github.com/FRIBDAQ/vmmsc.git repository. About the requirements on FRIB servers (as of 6/7/24):
- Qt : the default version in fishtank and in buster container is 4.8.7 , but qt5 is available (/usr/lib/x86_64-linux-gnu/qt5). Qt 5.15.2 is the default version in bullseye container. In both cases qt5 is already available.
- Gcc : the default version in fishtank and in buster container is 8.3.0, in bullseye container the version is 10.2.1. In both cases the requirement is met.
In case vmmsc is built in fishtank or in buster container, instead of
qmake vmmdcs.pro
one should do/usr/lib/x86_64-linux-gnu/qt5/bin/qmake vmmdcs.pro
.
In the following, vmmsc is assumed to be installed under /user/eXXXXX/SRS.
Note: Although Wireshark is very useful for diagnostics, it is not required to run the FRIBDAQ SRS Readout.
In addition to the standard FRIBDAQ TCL files needed (.settings.tcl and ReadoutCallouts.tcl), bash scripts are used to run the Readout program in a singularity/apptainer shell with appropriate bindings. These scripts are named here bullseyecmd.sh and startrdo.sh. The configuration file to be used by the SRS slow control is named here myConfig.json. One can also provide the channels map file if needed, named here mapFile.txt.
As a suggestion, in a standard experiment account, the mentionned files can be organized like this:
/mnt/events/eXXXXX (eXXXXX stagearea) ├── current/ & experiment/ & complete/ └── .settings.tcl /user/eXXXXX(eXXXXX home) ├── SRS │ ├── ReadoutCallouts.tcl │ ├── mapFile.txt │ └── vmmsc │ ├── include/ & src/ & ... │ └── configs │ └── myConfig.json └── Scripts ├── startrdo.sh └── bullseyecmd.sh
The source provider for SRS Readout is SSHPipe. One should know three parameters specific to SRS Readout: configFile, daqPort and map. For standard usage only the configuration file to be used by the SRS slow control and the Readout should be provided with its absolute path. The daqPort is by default 6006 but can be set to another udp port, which can be useful e.g. for debugging. map parameter followed by absolute path to a channel map file will set the map with the specified file. The ring name and sourceid (--ring and --sourceid) should not be provided in parameters as the Readout will automatically assign names and sourceids for SRS, see details in How Work SRS FRIBDAQ. However, in the following example, the id for the ReadoutGUI sourceid 0
does not interfere with the SRS Readout and can be set to a desired value.
.settings.tcl
set EventLogger /usr/opt/nscldaq/12.1-001/bin/eventlog
set EventLoggerRing tcp://localhost/fecB
set EventLogUseNsrcsFlag 1
set EventLogAdditionalSources 0
set EventLogUseGUIRunNumber 1
set EventLogUseChecksumFlag 1
set EventLogRunFilePrefix run
set StageArea /user/eXXXXX/stagearea
set run 1
set title {my title}
set recording 0
set timedRun 0
set duration 30
set dataSources {{host spdaqXX parameters {configFile /user/eXXXXX/SRS/vmmsc/configs/myConfig.json} path /usr/opt/nscldaq/12.1-001/bin/SRSReadout provider SSHPipe sourceid 0 wdir /usr/opt/nscldaq/12.1-001/bin}}
set segmentsize 1000000
Although it is possible to run FRIBDAQ SRS Readout without the event builder (e.g. without using ReadoutCallouts.tcl file), it is not recommended for the following reasons. The event builder should be used when the system has more than one FEC, in that case the time ordering feature of the event builder sorts the hits from different FECs. Similarly when the SRS events need to be correlated with events from other sources. For more details refer to How Work SRS FRIBDAQ.
.ReadoutCallouts.tcl
lappend auto_path [file join /user eXXXXX SRS]
package require evbcallouts
package require ReadoutGuiRemoteControl
RemoteControlClient::initialize
EVBC::useEventBuilder
proc OnStart {} {
EVBC::initialize -gui true -restart true -glomdt 1 -glomid 1 -glombuild true -destring fecB
}
# last three args mean: do not expect body headers in data, oneshot mode enabled, timeout after 20 seconds
EVBC::registerRingSource tcp://spdaqXX/fec2 {} 12 "fec2" 1 1 20 0;
The SRS slow control configuration file provided as a parameter of the SRS Readout (.settings.tcl) needs to have the correct FEC id (field "fec":). For a stand alone usage of the slow control, the FEC id set in the configuration file may not matter, but it does when the configuration file is also used for the SRS Readout, more information at How Work SRS FRIBDAQ. Two other important parameters for the SRS Readout that cannot be set while taking data are the external clock/trigger modes (fields "ext_tsclk_on": and "trgin_on":). If modifications must be made to the parameters mentioned here, the ReadoutGUI must be restarted.
myConfig.json
{
"fecs": [
{
"debug_data_format": 0,
"description": "",
"dvm_i2c_port": 6601,
"ess_sc_port": 65535,
"ext_tsclk_on": 1,
"fec": 2,
"fec_port": 6007,
"fec_sys_port": 6023,
"fen": 0,
"hybrids": [
{
"TP_disable": 0,
"TP_pol": 0,
"TP_skew": 0,
"TP_width": 0,
"description": "",
"hybrid": 0,
"vmm0": {
"L0offset_i": 0,
"channel00": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel01": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel02": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel03": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel04": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel05": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel06": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel07": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel08": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel09": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel10": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel11": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel12": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel13": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel14": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel15": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel16": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel17": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel18": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel19": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel20": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel21": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel22": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel23": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel24": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel25": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel26": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel27": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel28": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel29": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel30": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel31": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel32": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel33": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel34": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel35": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel36": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel37": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel38": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel39": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel40": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel41": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel42": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel43": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel44": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel45": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel46": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel47": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel48": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel49": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel50": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel51": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel52": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel53": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel54": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel55": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel56": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel57": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel58": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel59": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel60": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel61": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel62": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel63": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"nskip_i": 0,
"nskipm_i": 0,
"offset_i": 0,
"reset1": 0,
"reset2": 0,
"rollover_i": 0,
"s10b": 1,
"s32": 0,
"s6b": 0,
"s8b": 1,
"sL0ckinv": 0,
"sL0cktest": 0,
"sL0dckinv": 0,
"sL0ena": 0,
"sL0enaV": 0,
"sbfm": 1,
"sbfp": 0,
"sbft": 0,
"sbip": 1,
"sbmx": 0,
"sc10b": 3,
"sc6b": 0,
"sc8b": 3,
"sdck6b": 0,
"sdcka": 0,
"sdcks": 1,
"sdp": 0,
"sdp10": 300,
"sdrv": 0,
"sdt": 300,
"sfa": 0,
"sfam": 0,
"sfm": 0,
"sfrst": 0,
"sg": 2,
"slg": 0,
"slh": 0,
"slvs": 0,
"slvs6b": 0,
"slvsart": 0,
"slvsbc": 0,
"slvsdt": 0,
"slvsena": 0,
"slvstk": 0,
"slvstki": 0,
"slvstp": 0,
"slxh": 0,
"sm5_sm0": 67,
"sng": 0,
"sp": 0,
"srat": 0,
"srec": 0,
"ssart": 0,
"ssh": 0,
"st": 0,
"stc": 0,
"stcr": 0,
"stgc": 0,
"stlc": 0,
"stot": 0,
"stpp": 0,
"sttt": 0,
"truncate_i": 0,
"vmm": 0,
"window_i": 0
},
"vmm1": {
"L0offset_i": 0,
"channel00": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel01": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel02": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel03": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel04": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel05": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel06": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel07": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel08": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel09": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel10": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel11": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel12": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel13": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel14": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel15": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel16": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel17": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel18": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel19": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel20": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel21": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel22": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel23": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel24": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel25": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel26": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel27": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel28": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel29": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel30": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel31": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel32": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel33": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel34": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel35": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel36": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel37": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel38": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel39": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel40": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel41": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel42": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel43": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel44": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel45": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel46": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel47": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel48": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel49": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel50": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel51": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel52": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel53": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel54": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel55": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel56": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel57": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel58": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel59": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel60": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel61": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel62": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"channel63": {
"sc": 0,
"sd": 0,
"sl": 0,
"sm": 0,
"smx": 0,
"st": 0,
"sth": 0,
"sz06b": 0,
"sz08b": 0,
"sz10b": 0
},
"nskip_i": 0,
"nskipm_i": 0,
"offset_i": 0,
"reset1": 0,
"reset2": 0,
"rollover_i": 0,
"s10b": 1,
"s32": 0,
"s6b": 0,
"s8b": 1,
"sL0ckinv": 0,
"sL0cktest": 0,
"sL0dckinv": 0,
"sL0ena": 0,
"sL0enaV": 0,
"sbfm": 1,
"sbfp": 0,
"sbft": 0,
"sbip": 1,
"sbmx": 0,
"sc10b": 3,
"sc6b": 0,
"sc8b": 3,
"sdck6b": 0,
"sdcka": 0,
"sdcks": 1,
"sdp": 0,
"sdp10": 300,
"sdrv": 0,
"sdt": 300,
"sfa": 0,
"sfam": 0,
"sfm": 0,
"sfrst": 0,
"sg": 2,
"slg": 0,
"slh": 0,
"slvs": 0,
"slvs6b": 0,
"slvsart": 0,
"slvsbc": 0,
"slvsdt": 0,
"slvsena": 0,
"slvstk": 0,
"slvstki": 0,
"slvstp": 0,
"slxh": 0,
"sm5_sm0": 67,
"sng": 0,
"sp": 0,
"srat": 0,
"srec": 0,
"ssart": 0,
"ssh": 0,
"st": 0,
"stc": 0,
"stcr": 0,
"stgc": 0,
"stlc": 0,
"stot": 0,
"stpp": 0,
"sttt": 0,
"truncate_i": 0,
"vmm": 1,
"window_i": 0
}
}
],
"i2c_port": 6604,
"ip_daq": "10.0.0.3",
"ip_fec": "10.0.0.2",
"l0offset_i": 0,
"latency_data_error": 8,
"latency_data_max": 4087,
"latency_reset": 47,
"nskip_i": 0,
"offset_i": 0,
"ring": 0,
"rollover_i": 0,
"s6_port": 6602,
"sL0cktest": 0,
"sL0ena": 0,
"sL0enaV": 0,
"tp_latency": 65,
"tp_number": 1,
"tp_offset": 1000,
"tp_offset_first": 100,
"trg_window_start": 0,
"trg_window_width": 30,
"trgin_delay": 30,
"trgin_invert": 0,
"trgin_on": 1,
"trgout_invert": 0,
"trgout_on": 0,
"trgout_time": 0,
"truncate_i": 0,
"vmmapp_port": 6600,
"vmmasic_port": 6603,
"window_i": 0
}
]
}
If necessary, one can pass the absolute path to a channels map file to the SRS Readout. The expected format of the map file is four columns: fecId vmmId channelRaw channelMapped. Note that for some applications (e.g. S800 drift chamber) the channels maps are already coded in the SRS Readout. Current hard coded maps:
- dc1S800 or dc2S800 : if use only S800 DC1 or S800 DC2
- dc12S800 : if use both S800 DC1 and DC2.
bullseyecmd.sh
#!/bin/bash
export USROPT=/usr/opt/opt-bullseye
COMMON_BINDPOINTS="--bind /etc/timezone,${USROPT}:/usr/opt,/scratch,/mnt/misc/sw/indep,/mnt/misc/sw/x86_64/all,/usr/lib/x86_64-linux-gnu/modulecmd.tcl"
case `hostname`
in
spdaq* | u*pc* | daqcompute*)
PERNETWORK_BINDPOINTS="--bind /mnt/events/${USER}"
;;
*)
PERNETWORK_BINDPOINTS=""
;;
esac
# The system needs to know how to reconstruct the local container on
# the other end of the SSH pipe when running the DAQ. We must:
# 1. Define the environment variable SING_IMAGE to be the full
# singularity image path (singularity provides environment
# variables that name the image but not its full path).
# 2. Store the critical bindings we're using, one per line in
# ~/.singularity_bindpoints.
#
export SING_IMAGE=/usr/opt/nscl-bullseye.img
echo ${USROPT}:/usr/opt > ~/.singularity_bindpoints
echo /mnt/events/${USER} >> ~/.singularity_bindpoints
# Execute arguments under the container:
if command -v apptainer &>/dev/null
then
export APPTAINER_SHELL=/bin/bash
# TZ=America/New_York apptainer exec $COMMON_BINDPOINTS $PERNETWORK_BINDPOINTS $SING_IMAGE $@
apptainer exec $COMMON_BINDPOINTS $PERNETWORK_BINDPOINTS $SING_IMAGE $@
else
export SINGULARITY_SHELL=/bin/bash
# TZ=America/New_York singularity exec $COMMON_BINDPOINTS $PERNETWORK_BINDPOINTS $SING_IMAGE $@
singularity exec $COMMON_BINDPOINTS $PERNETWORK_BINDPOINTS $SING_IMAGE $@
fi
startrdo.sh
#!/bin/bash
VERSION=12.1-pre1
echo The timezone is $TZ
echo Using FRIBDAQ $VERSION
source /usr/opt/nscldaq/$VERSION/daqsetup.bash -f
echo DAQBIN is $DAQBIN
export EVENTS=/user/${USER}/stagearea
echo Event space is $EVENTS
cd ~/SRS
$DAQBIN/ReadoutShell
Before starting close any SRS slow control software vmmsc already connected to the SRS crate to be readout.
- Open the SRS slow control. Go in the build directory where vmmsc is intalled, following the directory structure it should be /user/eXXXXX/SRS/vmmsc/build, and return
./vmmdcs
. Nothing has to be done with the slow control. It is not needed to load manualy a configuration file as this file would be provided by the SRS Readout, nor initialize. - Open the ReadoutGui. Go in the directory where the ReadoutCallouts.tcl is, following the directory structure it should be /user/eXXXXX/SRS, and return
./bullseyecmd.sh ./startrdo.sh
. - Check the source parameters correspond to what is defined in the desired .settings.tcl file, check the event logger is parameterized as desired.
- Start the ReadoutGui, check that no error is prompted and that the SRS slow control is initialized and that the status of all FEC/VMM is ready.
- Begin a run.