This is TikiWiki 1.9.7 -Sirius- © 2002–2006 by the Tiki community Sat 28 of Jun, 2025 [12:58 UTC]
Menu [hide]
Toggle  Wiki
Toggle  Blogs
Toggle  Forums
Toggle  Charts
TikiWiki Assistant
Thank you for installing TikiWiki!
Click the :: options in the Menu for more options. Please, also see TikiMovies for more setup details.

History: GEnSpecialEvents

Preview of version: 1

How scripts are launched
Here is quote from Bob Michaels:
All the scripts except epicsRunEnd are launched at the start of a run
by ~a-onl/scripts/getruninfo (which in turn calls getruninfo_bgr, a
background process, done that way to avoid hanging up CODA). The
script epicsRunEnd is called at the end of a run. The scripts are
specified in the CODA database, and are called automatically (presumably
by a system call but I never checked this) by CODA during the afore-
mentioned transitions.

Tree of scripts/executables launched by CODA
  • ~a-onl/scripts/getruninfo
    • ~a-onl/scripts/getruninfo_bgr
      • ~a-onl/scripts/ThresGenLog — inserts thresholds as event type 135
      • ~a-onl/scripts/fileToEvent prescale.dat as event type 133
      • ~a-onl/scripts/HVgenlogger — inserts high Voltages readout from BigHand and BigBite inserts them as event type 134
        • ~a-onl/scripts/get_hvs — read information from particular detector
          • ~adev/slowc/scripts/hv_proc.com — script interface to the hvcli executable
            • ~adev/slowc/hvg/hvcli — executable to read data from LeCroy 1458 High Voltage mainframe
      • ~a-onl/scripts/epicsRunStart — inserts start of run information???
      • ~a-onl/scripts/getscaler — inserts scaler data as event type 140 every 8 seconds
      • ~a-onl/scripts/fastEpicsLogger — script to insert epics variables as event type 131 every 4 second
      • ~a-onl/scripts/epicsLogger — script to insert epics variables as event type 131 every 30 second
  • ~a-onl/scripts/epicsRunEnd — inserts end of run information
getruninfo
Start getruninfo_bgr as background process to avoid hang of CODA.
#!/bin/ksh
SCRIPT_DIR=/adaqfs/halla/a-onl/scripts

$SCRIPT_DIR/getruninfo_bgr &

exit 0

getruninfo_bgr
Script manager to clean up old run, set up new run and start taking specially inserted event types.
#!/bin/ksh
SCRIPT_DIR=/adaqfs/halla/a-onl/scripts
DETMAP_DIR=/adaqfs/halla/a-onl/detmap
PRESCALE_DIR=/adaqfs/halla/a-onl/prescale
EPICS_DIR=/adaqfs/halla/a-onl/epics
RUNNUMBER_FILE=/adaqfs/halla/a-onl/datafile/rcRunNumber
TRIGGER_FILE=/adaqfs/halla/atrig/trigger/trigger.setup
STRIP_CLEAR=/adaqfs/halla/adaq/$EXPERIMENT/scaler/clear.ctl
#
# Run number - needed by mss storage script
let num=$(eval /adaqfs/halla/a-onl/scripts/getrunnumber)
echo "$num" > $RUNNUMBER_FILE
#
if [ -e $STRIP_CLEAR ] ; then
  echo "1" > $STRIP_CLEAR
fi
#
$SCRIPT_DIR/linkassn > /dev/null 2> /dev/null &
#
# reenable scalers if last run died
$SCRIPT_DIR/clevclr_bb
#
# first clean up from previous run (if necessary)
$SCRIPT_DIR/end_clean
#
# This silly script may solve the end-run "hanging caget" problem
$SCRIPT_DIR/startLooper
#
# start ET server (unless already running)
$SCRIPT_DIR/startETserver
#
# Insert various files
#$SCRIPT_DIR/fileToEvent $DETMAP_DIR/detmap.config 135
# Write GEN thresholds to event 135
$SCRIPT_DIR/ThresGenLog > /dev/null 2> /dev/null &
#
$SCRIPT_DIR/fileToEvent $PRESCALE_DIR/prescale.dat 133
#
# write GEN HV to event 134
$SCRIPT_DIR/HVgenlogger > /dev/null 2> /dev/null &
#
# $SCRIPT_DIR/fileToEvent $TRIGGER_FILE 136
#
# Charge asymmetry feedback
# To enable/disable type "feedback on" or "feedback off".
# (COMMENT OUT FOR NOW)/adaqfs/home/adaq/qasy/feedback/start_feedback
#
# Start-of-Run EPICS info to /adaqfs/halla/a-onl/epics/runfiles/Start_of_Run_NNN.epics
$SCRIPT_DIR/epicsRunStart &
#
# Launch the scaler and EPICS loggers
$SCRIPT_DIR/getscaler &
$SCRIPT_DIR/epicsLogger &
$SCRIPT_DIR/fastEpicsLogger &
#
#
exit 0

ThresGenLog
This script will use ~a-onl/scripts/threshold-gen to obtain the threshold values of BigHand, BigBite Preshower and Shower detectors. And using ~a-onl/scripts/fileToEvent executable to insert obtained information into data stream as event type 135.
#!/bin/ksh
#
log() { # debug echo - send it to /dev/null when not needed
    echo $* >> $thresfile
    if [ ! -z "$PS1" ] ; then echo $* ; fi
}
#
thresfile=$HOME/epics/thres.dat
/bin/rm -f $thresfile
log "Neutron arm threshold: "`/adaqfs/home/a-onl/scripts/threshold-gen get 0 | gawk '{print $1}`
log "BigBite Preshower threshold: "`/adaqfs/home/a-onl/scripts/threshold-gen get 1 | gawk '{print $1}`
log "BigBite TotalShower threshold: "`/adaqfs/home/a-onl/scripts/threshold-gen get 2 | gawk '{print $1}`
$HOME/scripts/fileToEvent $thresfile 135

fileToEvent
This is executable which read file and inserts into data stream as event type specified on command line. Usage:
fileToEvent <filename> <evtype>

HVgenlogger
#!/bin/ksh
#
SCRIPTS=$HOME/scripts
EPICS_DIR=/adaqfs/halla/a-onl/epics
$SCRIPTS/get_hvs NA > $EPICS_DIR/gen_NA_hv.dat  2> /dev/null
$SCRIPTS/get_hvs BB > $EPICS_DIR/gen_BB_hv.dat  2> /dev/null
$SCRIPTS/fileToEvent $EPICS_DIR/gen_NA_hv.dat 134
$SCRIPTS/fileToEvent $EPICS_DIR/gen_BB_hv.dat 134

get_hvs
#!/bin/bash
#
#--- To be included in CODA start of run etc...
#-- Get the HV parameters from the "hvs" server
#

  PROG=`basename $0`
#  echo Start $PROG

  if [ $# -ne 1 ] ; then
    echo " ***" Error in $PROG: "one call parameter (NA,BB,...) is needed"
    help_dis
    exit 2
  fi

  HVG=/adaqfs/home/adev/bin/hv_proc.com
  if ! test -x $HVG ; then
    echo " ***" Error in $PROG: binary $HVG is not found
    help_dis
    exit 2
  fi

  det=XX
  tst=0
  hlp=0
  pid=$PPID

  declare -a ftmp
  i=0 ; while let $((i++)); [ $i -lt 3 ]; do
    ftmp[$i]=hv2coda.$i.$pid.tmp
  done

# ==========   Help routine start
 help_dis () {

  cat <<help_doc
 $PROG - a script to get HV parameters from the "hvs" server (in order to paste it into the CODA stream)

 Call parameters:
 $PROG detec
    where:
           detec - detector name ( BB, NA)
           -? or ? or -h  print this help                       default: none
 Example: $PROG NA
 Example: $PROG BB
help_doc
 }
# ==========   Help routine end
# ==========   Exit routine
 exit_proc () {
  i=0 ; while let $((i++)); [ $i -lt 3 ]; do
    fn=${ftmp[$i]}
    [ -f "$fn" ] && rm -f $fn
  done
 }
# ==========   Help routine end

  if [ "$1" = "?" -o "$1" = "-?" ]; then
    help_dis
    exit 2
  fi

#  set -- `getopt htP:D: $*`
#  if [ $? != 0 ] ; then
#    echo *** Error in getopt . Usage:
#    help_dis
#    exit 2
#  fi
#  for i in $* ; do
#     case $i in
#      -t)  tst=1 ; shift 1;;
#      -h)  hlp=1 ; shift 1;;
#      -c)  comm=$2 ; shift 2;;
#      -P)  hvpar=$2 ; shift 2;;
#      -D)  detec=$2 ; shift 2;;
#      --)  shift ; break;;
#     esac
#  done


 det=$1
 $HVG -D $det -c MAPS 1>${ftmp[1]} 2>${ftmp[2]}
 if [ $? -ne 0 ]; then
   cat ${ftmp[2]}
   exit_proc
   exit 2
 fi

 for map in `cat  ${ftmp[1]} | awk '{print $1}'`; do
   echo "# Map " $map " Measured Voltage"
   $HVG -D $map -c GET -P MV
   if [ $? -ne 0 ]; then
       echo " Error in information retrieval in $HVS -D $map -c GET -P MV"
   fi
   echo "# Map " $map " Measured Current"
   $HVG -D $map -c GET -P MC
   if [ $? -ne 0 ]; then
       echo " Error in information retrieval in $HVS -D $map -c GET -P MC"
   fi
 done

 exit_proc
 exit 0

hv_proc.com
#!/bin/bash
#
#-- Get the HV parameters from the "hvs" server
#

  PROG=`basename $0`
#  echo Start $PROG

  hostserv=XX
  hostsna=agen
  hostsbb=agen4
  port=5555
  detec=XX
  hvpar=DV
  chmap=XX
  tst=0
  hlp=0
  comm=GET
  setval=XX
  fnam=XX

  HVC=~/slowc/hvg/hvcli
  if ! test -x $HVC ; then
    HVC=/adaqfs/home/adev/slowc/hvg/hvcli
  fi
  if ! test -x $HVC ; then
    echo *** Error: binary $HVC is not found
    help_dis
    exit 2
  fi

  pid=$PPID
  declare -a ftmp
  i=0 ; while let $((i++)); [ $i -lt 6 ]; do
    ftmp[$i]=hv.$i.$pid.tmp
  done

# ==========   Help routine start
 help_dis () {
  cat <<help_doc
 $PROG - a script to get HV parameters from the "hvs" server
 Call parameters:
 $PROG -D detec [-c command] -m range [-c command] [-P parameter-to-get] [-H host] [-p port] ....
    where:
           -c command (GET or SET or MAPS)                      default: $comm
              MAPS: just prints the maps names
             (-D should be defined, the other parameters are ignored)
           -P parameter to use : DV, MV, MC, CE                 default: $hvpar
              for -c SET the valid parameters are DV, CE
           -D detector maps                                     default: none
              NA: NA_ND_L / NA_ND_R / NA_VT_L / NA_VT_R
              BB: BB_SH / BB_PS_L / BB_PS_R /BB_SC_L / BB_SC_R
              MO: MO_ALL (Moller)
           -m colums,rows range, ex: 3,17 or 2:13,7:9           default: none
              (if not defined - the max size will be taken)
           -v  value to SET (used if no -f declared)            default: none
           -f  file name containing lines with "ix iy value"    default: none
           -t  test only                                        default: none
           -H host name where the server is running             default: none
              if not set - tries to find the server by looking the lockfile:
               a) local home directory, say ~/slowc/HV_??, where ?? is the map name
               b) ~adev/slowc/HV_??
           -p port number                                       default: $port
           -b client program                                    default: $HVC
           -? or ? or -h  print this help                       default: none
 Example: $PROG -c GET -P MV -D NA_ND_L -m 1:4,2:26
 Example: $PROG -c GET -P MC -D BB_SH -m 1:7,1:27
 Example: $PROG -c MAPS -P MC -D NA_VT_L -m 1:7,1:27
 Example: $PROG -c SET -P DV -v -1200 -D NA_ND_L -m 1:7,1:27
 Example: $PROG -c SET -P CE -v 1 -D NA_ND_L -m 1:7,1:27
help_doc
 }
# ==========   Help routine end
# ==========   Exit routine
 exit_proc () {
  i=0 ; while let $((i++)); [ $i -lt 6 ]; do
    fn=${ftmp[$i]}
    [ -f "$fn" ] && rm -f $fn
  done
 }
# ==========   Help routine end

  if [ "$1" = "?" -o "$1" = "-?" ]; then
    help_dis
    exit 1
  fi

  set -- `getopt htP:D:c:v:m:f:H:p: $*`
  if [ $? != 0 ] ; then
    echo *** Error in getopt . Usage:
    help_dis
    exit 2
  fi
  for i in $* ; do
     case $i in
      -t)  tst=1 ; shift 1;;
      -h)  hlp=1 ; shift 1;;
      -c)  comm=$2 ; shift 2;;
      -P)  hvpar=$2 ; shift 2;;
      -D)  detec=$2 ; shift 2;;
      -m)  chmap=$2 ; shift 2;;
      -v)  setval=$2 ; shift 2;;
      -f)  fnam=$2 ; shift 2;;
      -H)  hostserv=$2  ; shift 2;;
      -p)  port=$2 ; shift 2;;
      -b)  HVC=$2 ; shift 2;;
      --)  shift ; break;;
     esac
  done

  if [ $hlp -gt 0 ]; then
    help_dis
    exit 1
  fi

  if [ ! -x  $HVC ]; then
    echo " *** Error - the HV client program is missing " $HVC
    exit 2
  fi

#  Get the server name

 if [ $hostserv == "XX" ]; then
   ok=0
   det=`echo $detec | cut -f1 -d\_`
#
# --  Try to find a lockfile and learn the server host name
#
   ddet=HV_$det
   lockf=.lock_hvs_$ddet

   declare -a lockname
   lockname[1]=~/slowc/$ddet/$lockf
   lockname[2]=~adev/slowc/$ddet/$lockf
   i=0 ; while let $((i++)); [ $ok -eq 0 ] && [ $i -lt 3 ]; do
     lockfile=${lockname[$i]}
     if test -f $lockfile ; then
        hostserv=`cat $lockfile | awk '{print $1}'`
        ok=1
     fi
   done

   if [ $ok -ne 0 ]; then
     echo " -- Found: server hostname " $hostserv " from the lockfile " $lockfile 1>&2
   else
     echo " *** Error - hostname for the server (-H) is not defined, and no local lockfile was found "
     i=0 ; while let $((i++)); [ $i -lt 3 ]; do
       echo " *** not found " ${lockname[$i]}
     done
     echo " *** Error - HV server host is unknown "
     help_dis
     exit 2
   fi
 fi


 ok=0
 for i in GET get SET set MAPS maps ; do
   [ $comm == $i ] && ok=1
 done
 if [ $ok -eq 0 ]; then
   echo " *** Error - server command -c "$comm " is unknown "
   help_dis
   exit 2
 fi

# Just print the maps

 if [ "$comm" == "MAPS" ]; then
    $HVC -h $hostserv -p $port -m 'get maplist' | sed s"/^C/ /"
    exit 0
 fi

#  Is the HV frame command valid?

 ok=0
 j=0
 for i in DV CE MV MC ; do
   let $((j++))
   if [ "$hvpar" == "$i" ]; then
     [ "$j" -le 2 ] || [ "$comm" == "GET" ] && ok=1
   fi
 done

 if [ $ok -eq 0 ]; then
   echo " *** Error - Wrong combination -c "$comm " and -P "$hvpar
   help_dis
   exit 2
 fi

 if [ "$comm" == "SET" ]; then
   if [ "$fnam" == "XX" ]; then
     if [ "$setval" == "XX" ]; then
       echo " *** Error - for the SET operation -c "$comm " the value -c ..., of file -f ... should be defined"
       help_dis
       exit 2
     fi
   else
     if [ ! -s "$fnam" ]; then
       echo " *** Error - for the SET operation -c "$comm " filename set -f "$fnam " is missing"
       help_dis
       exit 2
     fi
   fi
 fi

# echo $hvpar " " $detec " " $chmap " " $hostserv " " $port

 $HVC -h $hostserv -p $port -m 'get maplist' > ${ftmp[1]}
#  cp tmptmp ${ftmp[1]} # test
 head -1 ${ftmp[1]} | grep -i error >/dev/null ; ok=$?

 if [ $ok -eq 0 ]; then
   echo " *** Server at host " $hostserv " is not properly responding"
   exit_proc
   exit 2
 fi

 lin=`cat ${ftmp[1]} | sed s"/^C/ /" | awk -v t=$detec ' $1 ~ t {print $2" "$3" "$4" "$5}'`
 nw=`echo $lin | wc -w`
 if [ $nw -lt 4 ]; then
   echo " *** Map name "$detec " is missing or not properly set in the server list :"
   echo $lin
   cat ${ftmp[1]}
   exit_proc
   exit 2
 fi
# ---   Check the detector map

 if [ $chmap == "XX" ]; then
#   Get the map
   chmap=`echo $lin | awk '{k1=$3-1+$1;k2=$4-1+$2;print $3":"k1","$4":"k2}'`
 fi

 if [ "$comm" == "SET" ]; then
   $HVC -h $hostserv -p $port -m "$detec $comm $hvpar $chmap $setval"
   exit_proc
   exit 0
 fi

# comm=GET
 $HVC -h $hostserv -p $port -m "$detec $comm $hvpar $chmap"   | sed s"/^C/ /" | sed s'/\*/\&/'g > ${ftmp[2]}
# $HVC -h $hostserv -p $port -m "$detec $comm $hvpar $chmap"  # | sed s"/^C/ /"
# echo  $HVC -h $hostserv -p $port -m "$detec $comm $hvpar $chmap"  # | sed s"/^C/ /"

 head -1 ${ftmp[2]} | grep -i error >/dev/null ; ok=$?

 if [ $ok -eq 0 ]; then
   echo " *** Error in the HV server response:"
   cat ${ftmp[2]}
   exit_proc
   exit 1
 fi

 aa=`echo $chmap | cut -d, -f1`
 echo $aa | grep '\:' > /dev/null ; onenmb=$?
 if [ "$onenmb" -eq 1 ]; then
   ix1=$aa
   nx=1
   ix2=$ix1
 else
   ix1=`echo $aa | cut -d: -f1`
   ix2=`echo $aa | cut -d: -f2`
   nx=$((ix2-ix1+1))
 fi

 aa=`echo $chmap | cut -d, -f2`
 echo $aa | grep '\:' > /dev/null ; onenmb=$?
 if [ "$onenmb" -eq 1 ]; then
   iy1=$aa
   ny=1
   iy2=$iy1
 else
   iy1=`echo $aa | cut -d: -f1`
   iy2=`echo $aa | cut -d: -f2`
   ny=$((iy2-iy1+1))
 fi

# echo $nx" "$ix1" "$ix2
# echo $ny" "$iy1" "$iy2

 iy=$iy1
 ix=$ix1
 newl=1
 nw=`cat ${ftmp[2]} | wc -w`
 for i in `cat ${ftmp[2]}`; do
#   [ "$iy" -eq "$iy1" ] && printf " %3d " $iy
#   [ "$ix" -eq "$ix1" ] && printf " %3d " $iy
   if [ "$ny" -gt 1 -a "$newl" -eq 1 ]; then
     printf "%3d : " $iy
     newl=0
   fi
   if [ "$i" == "&&&" ]; then
     printf "   XXX "
   else
     printf "%6.0f " "$i"
   fi
   let $((ix++))
   if [ "$ix" -gt "$ix2" ]; then
     let $((iy++))
     ix=$ix1
     printf "\n"
     newl=1
   fi
 done



 exit_proc

 exit 0

-
epicsRunStart
-

-
getscaler
- Uses ~a-onl/scaler/gen/onl/scread executable to read out scaller and insert every 8 seconds into data stream.
#!/bin/ksh
SCRIPTS=/adaqfs/halla/a-onl/scripts
BBITE=/adaqfs/halla/a-onl/scaler/saw_server/RPC
pidfile=$SCRIPTS/getscalers_pid
DVCS=/adaqfs/halla/a-onl/scaler/dvcs_calo
RIGHT=/adaqfs/halla/a-onl/scaler/right
LEFT=/adaqfs/halla/a-onl/scaler/left
BB=/adaqfs/halla/a-onl/scaler/gen/onl
TSCALE=/adaqfs/halla/a-onl/vme/trigscal
echo $$>$pidfile
sleep 20
while [ 1 = 1 ] ; do
    $BB/scread -i
    sleep 8
done

-
epicsLogger
-

-
fastEpicsLogger
-

--==--

--==--

--==--


History

Legend: v=view, s=source
Date User IpComment Version Action
Mon 03 of Jul, 2006 [22:32 UTC] nerses129.57.35.76fixed info about run start information 8
current
 v  s
Tue 06 of Jun, 2006 [23:57 UTC] nerses129.57.35.76  7  v  s  
Tue 06 of Jun, 2006 [02:04 UTC] nerses129.57.35.76spell checked 6  v  s  
Tue 06 of Jun, 2006 [01:32 UTC] nerses129.57.35.76epicsRunStart, epicsRunEnd, fastEpicsLogger and epicsLogger are updated, comments for scripts added 5  v  s  
Sun 04 of Jun, 2006 [03:26 UTC] nerses129.57.35.76swaped in script tree sequence of epicsLogger and fastEpicsLogger, now it is as in getruninfo_bgr 4  v  s  
Sun 04 of Jun, 2006 [03:13 UTC] nerses129.57.35.76adding links to navigate from hierarchical tree to script explanations 3  v  s  
Sat 03 of Jun, 2006 [03:29 UTC] nerses129.57.35.76minor correction 2  v  s  
Sat 03 of Jun, 2006 [03:27 UTC] nerses129.57.35.76start up of this page, epicsRunStart, epicsRunEnd should be understood, fastEpicsLogger and epicsLogger needs to pull out only variables for GEn 1  v  s  

Search
in:
Powered by TikiWiki Powered by PHP Powered by Smarty Powered by ADOdb Made with CSS Powered by RDF powered by The PHP Layers Menu System
RSS Wiki RSS Blogs rss Articles RSS Image Galleries RSS File Galleries RSS Forums
[ Execution time: 0.14 secs ]   [ Memory usage: 6.78MB ]   [ 60 database queries used ]   [ GZIP Enabled ]   [ Server load: 0.83 ]