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