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

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)]
APSStandardSetup

set rootname ""
set verbose 0
set interval 1
set args $argv
APSStrictParseArguments {rootname interval verbose}
set usage "SRcalculateTrajectoryError -interval <value>"


set basedir /home/helios/oagData/ADTFiles/srBpm

set tmpFile /tmp/[APSTmpString]
if [catch {exec sddscombine $basedir/sr.bpm.sp.position.pv $tmpFile.single-pass -merge -overWrite } results ] {
    puts stderr "problem making trajectory file: $results"
    exit
}
if [catch {exec sddscombine $basedir/sr.bpm.setpoint.pv $tmpFile.setpoint -merge -overWrite } results ] {
    puts stderr "problem making setpoints file: $results"
    exit
}

set s0 [clock seconds]

while {1} {
    set s [clock milliseconds]
    if [catch {exec sddssnapshot $tmpFile.single-pass $tmpFile.single-pass.values } results ] {
        puts stderr "problem reading trajectory: $results"
        exit
    }
    if [catch {exec sddssnapshot $tmpFile.setpoint $tmpFile.setpoint.values } results ] {
        puts stderr "problem reading setpoints: $results"
        exit
    }

    # calculate the differences
    if [catch {exec sddsxref $tmpFile.single-pass.values $tmpFile.setpoint.values -pipe=out \
                   -take=Value,ControlName -rename=col,Value=Setpoint,ControlName=SetpointName \
                   | sddsconvert -pipe -dele=col,ControlName \
                   | sddsprocess -pipe=in $tmpFile.trajError \
                   "-def=col,Difference,Value 1000.0 / Setpoint -,units=microns" \
                   -edit=col,ControlName,SetpointName,%/SetpointC/trajectory:ErrorM/ \
                   -print=col,ValueString,%lf,Difference
               } results ] {
        puts stderr "problem reading setpoints: $results"
        exit
    }
    if $verbose {
        puts stderr "Writing to trajectory error..."
    }
    if [catch {exec sddscasr -restore $tmpFile.trajError } results ] {
        puts stderr "problem reading setpoints: $results"
        exit
    }
    set s1 [clock milliseconds]
    set expendedTime [expr $s1 - $s]
    if $verbose {
        puts stderr "Acquisition took $expendedTime milliseconds"
    }
    after [expr 1000 * $interval - $expendedTime]
}

exit

# **************************** Emacs Editing Sequences *****************
# Local Variables:
# mode: tcl
# End:
