#!/bin/sh
# \
exec oagwish "$0" "$@"

# $Log: not supported by cvs2svn $
# Revision 1.4  2001/10/24 22:22:03  soliday
# Added plotting feature.
#
# Revision 1.3  2001/10/19 16:32:14  soliday
# Made some bug fixes.
#
# Revision 1.2  2001/09/17 15:55:03  soliday
# Changes from last shutdown.
#
# Revision 1.1  2001/07/23 20:39:11  soliday
# Updated durring shutdown period.
#
#
# Input directory /home/helios/oagData/PSSCPDB/exp/sr
# Output directory /home/helios/oagData/PSGROUP/data

set auto_path [linsert $auto_path 0 /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0 /usr/local/oag/lib_patch/$env(HOST_ARCH)]

package require BLT

set CVSRevisionAuthor "\$Revision: 1.5 $ \$Author: soliday $"
set destination statusWindow
set status "Template for Storage Ring Tests"
set archiveDir /home/helios/oagData/PSGROUP/data
#set archiveDir /home/helios/PSGROUP/data
#set archiveDir /home/helios/SOLIDAY/PSGROUP/data

proc makeDir {pathname} {
    if {[file isdirectory $pathname]} {
	return $pathname
    } elseif {[file exists $pathname]} {
	return -code error "Non-directory $pathname already exists"
    } else {
	if [catch {makeDir [file dirname $pathname]} result] {
	    return -code error $result
	}
	if [catch {exec mkdir $pathname} result] {
	    return -code error $result
	}
#	catch {exec chmod a+w $pathname}
	return $pathname
    }
}


proc test {args} {
    global status location archiveDir abortNow abortVar
    set abortNow 0
    set abortVar 0

    set sec [clock seconds]
    set dateString [clock format $sec -format "%y%m"]
    set dayString [clock format $sec -format "%d"]
    set dataDir ${archiveDir}/${dateString}/${dayString}/sr
    makeDir $dataDir
    set timeString [clock format $sec -format "%H%M%S"]

    foreach loc1 "A B C D E F" loc2 "a b c d e f" {
	if {$location==$loc1 || $location=="R"} {
	    APSSetVarAndUpdate status "Running Corrector DAC Check for zone $loc1"
	    if [catch {
		blt::bgexec abortVar -output status \
		    sddsexperiment \
		    /home/helios/oagData/PSSCPDB/exp/sr/zone${loc2}_corr.exp \
		    ${dataDir}/${timeString}_sr_${loc1}_c_DAC.sdds \
		    -verbose=very
	    } result] {
		APSSetVarAndUpdate status "problem running sddsexperiment : $result"
		file delete ${dataDir}/${timeString}_sr_${loc1}_c_DAC.sdds
		return
	    }
	    if [catch {
		blt::bgexec abortVar -output status \
		    sddsprocess \
		    ${dataDir}/${timeString}_sr_${loc1}_c_DAC.sdds \
		    "-define=col,%sDiff,%sSetpoint %sCurrent_Readback - abs,select=*Setpoint,edit=%/Setpoint//" -nowarn
	    } result] {
		APSSetVarAndUpdate status "problem running sddsprocess : $result"
		return
	    }
	    if [catch {
		blt::bgexec abortVar -output status \
		    sddsplot \
		    -axes=x -groupby=nameString -legend \
		    -graph=line,vary -separate=groupsof=3 \
		    ${dataDir}/${timeString}_sr_${loc1}_c_DAC.sdds \
		    "-col=ElapsedTime,(*Setpoint,*Current_Readback,*Diff)"
	    } result] {
		APSSetVarAndUpdate status "problem running sddsplot : $result"
		return
	    }
	    if {$abortNow == 1} {
		APSSetVarAndUpdate status "Aborted by user"
		return
	    }
	    APSSetVarAndUpdate status "\nDone Collecting data for zone ${loc1}\n"
	}
    }    
}

######## Main #######

APSApplication . \
    -name "Storage Ring DAC Check" \
    -version $CVSRevisionAuthor \
    -overview "Template Application" \
    -contextHelp "Help for Template Application"

APSScrolledStatus .status \
    -parent .userFrame \
    -packOption "-side top" \
    -textVariable status \
    -width 80 \
    -height 8

APSRadioButtonFrame .testSelection \
    -parent .userFrame \
    -orientation horizontal \
    -label "Select Zone" \
    -variable location \
    -packOption "-side top" \
    -valueList {A B C D E F R} \
    -buttonList {"Zone A" "Zone B" "Zone C" "Zone D" "Zone E" "Zone F" "Entire Ring" } \
    -contextHelp "Select location for the test to run."
              
pack [frame .userFrame.f1] -side top

APSButton .testbutton \
    -parent .userFrame.f1 \
    -text "Start Test" \
    -command { test } \
    -contextHelp "Starts Test in Specified area."

APSButton .abort \
    -parent .userFrame.f1 \
    -text "Abort" \
    -command "set abortNow 1; set abortVar 1"

set status "Output directory /home/helios/oagData/PSGROUP/data/\[year\]\[month\]/\[day\]/sr/"
