BNMR: Experimental Setup
Introduction
This page describes the experimental setup of the bnmr and bnqr experiments, which are based on the MIDAS DAQ system.
MIDAS Host
The MIDAS Host for the bnmr and bnqr experiments is currently isdaq01, located in the ISAC1 counting room. Another desktop (isdaq06) is located nearby. isdaq06 is normally used as a terminal by the bnmr and bnqr experimenters, but also serves as the secondary MIDAS Host, in case of failure of isdaq01 (see #Changing the Midas host).
NIS ISAC Cluster
Both these desktops run NIS and are part of the ISAC cluster. The "master" computer is isdaq00 (located in the Computing Services server room). isdaq00 is the main file server and hosts the home directories for the cluster. The VMIC CPUs (lxbnqr,lxbnmr) and the CAMP VxWorks CPUs (bnmrvw,polvw) also mount home directories served by isdaq00. These machines (isdaq00, isdaq01, isdaq06) are on UPS.
- Note
- Unless isdaq00 is up and running, and the network is working, it will be impossible to run the experiments.
Experimental setup
Two accounts with usernames bnmr and bnqr have been set up to run the bnmr and bnqr experiments. These accounts run the bash shell, and the files /home/<beamline>/.bashrc contain the required setup for the experiments (see #File .bahrc). The ~/.login file (executed when logging in interactively) contains required EPICS fonts (see #File .login). Users may add more definitions to these files, but should not change any of the DAQ definitions or their experiments may fail to run properly.
Physica
Scripts to run physica are in directory /home/<beamline>/bin This directory also contains links to run bnmrfit, campvarlog and lcrplot. This directory is included in the PATH (hence no alias is defined). A local copy of the physica package is used (NOT the one in /triumfcs/linux/physica , which does not work for SL6).
Environment variables required for physica defined in .bashrc are shown in Table 3 below.
Environment Variables
There are a number of important Environment variables that must be correctly defined for the DAQ to run successfully. These are defined in .bashrc. This file is executed at login.
Some of the environment variables needed for data acquisition are:
- DAQ setup (Table 1)
- MIDAS setup (Table 2)
- EPICS setup (Table 3)
- Physica (Table 4)
| Name | Purpose | Value for expt: | |
|---|---|---|---|
| bnmr | bnqr | ||
| DAQ_HOST | defines the name of the MIDAS Host | isdaq01 | |
| BEAMLINE | defines the beamline | bnmr | bnqr |
| VMIC_HOST | defines the name of the MIDAS Frontend host (VMIC) | lxbnmr | lxbnqr |
| MUSR_DIR | defines the path of MUSR libraries and required software | /home/musrdaq/musr | |
| CAMP_HOST | name of CAMP host (mvme162) running VxWorks | bnmrvw | polvw |
| MSERVER_PORT | defines the port to be used by environment variable MIDAS_SERVER_HOST | 1176 | 1177 |
The MIDAS Environment variables required are shown in Table 2.
| Name | Purpose | Value for expt: | |
|---|---|---|---|
| bnmr | bnqr | ||
| MIDASSYS | Path of local copy of the MIDAS software package | /home/bnmr/packages/midas | /home/bnqr/packages/midas |
| MIDAS_EXPTAB | Path of the experimental directory | /home/bnmr/online/ | /home/bnqr/online/ |
| MIDAS_SERVER_HOST | Must not be defined on MIDAS Host. Must be defined on VMIC | isdaq01:1176 | isdaq01:1177 |
| MIDAS_EXPT_NAME | MIDAS Experiment Name. Defined as BEAMLINE | bnmr | bnqr |
Environment variables defined for EPICS are shown in Table 3 below:
| Name | Purpose | Value |
|---|---|---|
| EPICS_BASE | path of EPICS package | /home/midas/packages/epics-base |
| EPICS_HOST_ARCH | host architecture | linux-x86_64 |
| EPICS_PATH | path of EPICS utilities | /home/midas/packages/epics-base/bin/linux-x86_64 |
| EPICS_CA_AUTO_ADDR_LIST | YES | |
| EPICS_CA_ADDR_LIST | 142.90.133.255 | |
| EPICS_CA_REPEATER_PORT | 9003 | |
| EPICS_CA_SERVER_PORT | 9004 | |
| EPICS_CA_AUTO_LIST | NO | |
| EPICS_CA_ADDR_PORT | 142.90.130.27 |
Environment variables defined for #Physica are shown in Table 4 below:
| Name | Purpose | Value |
|---|---|---|
| TRIUMF_TERMINAL_TYPE | TRIUMF default terminal type | x |
| TRIUMF_PLOTTER_TYPE | TRIUMF default plotter | hp |
| TRIUMF_FONTS | TRIUMF default fonts | ${HOME}/physica/fonts |
| PHYSICA_INIT | Initialization file | ${HOME}/physica/physica_macros/PHYSICA.INIT |
| PHYSICA_DIR | Path of physica package | ${HOME}/packages/physica |
Changing the Midas host
The MIDAS host is defined by the environment variable DAQ_HOST in the ~/.cshrc file. Only isdaq01 or alternatively isdaq06 can be the midas host, and successfully run the experiment, because these hosts have the required permission to write to the required EPICS variables. If isdaq01 fails, change the environment variable DAQ_HOST to isdaq06 and also remove or edit /home/<beamline>/vmic_online/$BEAMLINE/.SHM_HOST.TXT .
Aliases
A number of useful aliases that run various scripts or start programs are defined in .bashrc, e.g.
- start-all runs a script to start missing MIDAS clients
- kill-all runs a script to kill all MIDAS clients
- show-windows runs a script to show the client windows for clients frontend, mdarc and mheader
- camp runs the CAMP user interface
File .bashrc
The parts of the ~/.bashrc file relevent to DAQ is shown below:
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PS1='(bash) [\u@\h \W]\$ '
alias tnt2k1='rdesktop -f tnt2k.triumf.ca'
alias mycommd='sh cmds'
alias phys='/home/bnmr/packages/physica/physica &'
#Passwordless access for bnmrpc
alias gobnmrpc='vncviewer bnmrpc -passwd ~/.vnc/passwd'
unset SHELL
export HOST=`hostname`
export MIDAS_EXPT_NAME=bnmr
export MIDAS_EXPTAB=/home/bnmr/online/exptab
export DAQ_HOST=isdaq01
export VMIC_HOST=lxbnmr
export MIDASSYS=$HOME/cycling_dev/packages/midas_oct2020
export EPICS_BASE=/home/midas/packages/epics-base
export MUSR_DIR=/home/musrdaq/musr
# For python3
export PATH=$PATH:$HOME/.local/bin
export PYTHONPATH=$PYTHONPATH:~/cycling_dev/packages/benmr
alias autoruns=/home/bnmr/cycling_dev/packages/mui/autoruns.tcl
alias campvarlog=/home/bnmr/cycling_dev/packages/mui/bnmr_logger.tcl
alias muddiff="python3.6 ~/cycling_dev/packages/benmr/bnxr_common/tests/diff_mud_files.py"
alias muddump="python3.6 ~/cycling_dev/packages/benmr/bnxr_common/tests/dump_mud_file.py"
triumf=".triumf.ca"
export daq_host=$DAQ_HOST$triumf
export vmic_host=$VMIC_HOST$triumf
unset MIDAS_LINUX
if [ $HOST == $VMIC_HOST ] || [ $HOST == $vmic_host ]; then
# lxbnmr - talk to isdaq01 through mserver
#export MIDAS_SERVER_HOST=$DAQ_HOST":7072"
export MIDAS_SERVER_HOST=$DAQ_HOST":1195"
export PATH=$MIDASSYS/linux-m32/bin:/triumfcs/linux/bin:/home/bnmr/cycling_dev/packages/benmr/bin:$PATH
export EPICS_HOST_ARCH=linux-x86
export CAMP_DIR=$MUSR_DIR/camp/linux-m32
export EPICS_CA_AUTO_ADDR_LIST=YES
export EPICS_CA_ADDR_LIST=142.90.133.255
export EPICS_CA_REPEATER_PORT=9003
export EPICS_CA_SERVER_PORT=9004
export EPICS_CA_AUTO_LIST=NO
export EPICS_CA_ADDR_PORT=142.90.130.27
# export EPICS_CA_AUTO_ADDR_LIST=NO
# export EPICS_CA_ADDR_LIST=142.90.132.202
# export EPICS_CA_REPEATER_PORT=9093
# export EPICS_CA_SERVER_PORT=9094
fi
if [ $HOST == $DAQ_HOST ] || [ $HOST == $daq_host ]; then
# isdaq01 - main host
source scl_source enable devtoolset-8
source scl_source enable rh-python36
export PYTHONPATH=$MIDASSYS/python:$DAQ_DIR:$PYTHONPATH
export PATH=$MIDASSYS/bin:/home/bnmr/cycling_dev/packages/midas_tcl:/home/bnmr/cycling_dev/packages/benmr/bin:/home/bnmr/cycling_dev/packages/lcrp64:$PATH
unset MIDAS_SERVER_HOST
export EPICS_HOST_ARCH=linux-x86_64
export CAMP_DIR=$MUSR_DIR/camp/linux
export EPICS_CA_AUTO_ADDR_LIST=NO
export EPICS_CA_ADDR_LIST=142.90.132.202
export EPICS_CA_REPEATER_PORT=9093
export EPICS_CA_SERVER_PORT=9094
fi
export EPICS_PATH=$EPICS_BASE/bin/$EPICS_HOST_ARCH
export LD_LIBRARY_PATH=${EPICS_BASE}/lib/$EPICS_HOST_ARCH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/musrdaq/lib
export PATH=${PATH}:${EPICS_PATH}:${CAMP_DIR}:${HOME}/bin
export CAMP_HELP=$CAMP_DIR
export CAMP_HOST=bnmrvw.triumf.ca
alias camp_cmd=$CAMP_DIR/camp_cmd
alias camp=$CAMP_DIR/camp_cui
alias python3='python3.6'
alias pip='pip3.6'
alias bfit='python3.6 -m bfit'
alias bccd='python3.6 -m bccd'
export BNMR_ARCHIVE=/isdaq/data1/bnmr/dlog/
export BNQR_ARCHIVE=/isdaq/data1/bnqr/dlog/
File .login
The file ~/.login is shown below"
# The commands in this file are executed when a csh user first
# logs in. This file is processed after .cshrc.
#
# $Revision: 1.6 $
#
# EPICS fonts... put xset in .login rather than .cshrc
if ( "$?DISPLAY" ) then
if ( "$DISPLAY" =~ "*:0.*" ) then
if ( `xset -q` =~ "*/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/75dpi/*" ) then
#echo "Bitmap font paths already set"
else
#echo "Set bitmap font paths for display $DISPLAY"
xset +fp /usr/share/X11/fonts/100dpi/
xset +fp /usr/share/X11/fonts/75dpi/
endif
else
#echo "Display is not the console"
endif
else
#echo "There is no display"
endif