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

# $Log: not supported by cvs2svn $

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 IDSectorList [APSGetSDDSColumn -fileName \
        /home/helios/oagData/sr/IDs/sectors.sdds -column Sector]
set BMSectorList [APSGetSDDSColumn -fileName \
        /home/helios/oagData/sr/BMs/sectors.sdds -column Sector]

set oldFiles [glob -nocomplain SR-SrcPtBPMs.sdds-????]
if [llength $oldFiles] {
    set lastFile [lindex $oldFiles end]
    scan $lastFile "SR-SrcPtBPMs.sdds-%04ld" lastIndex
    set newIndex [expr $lastIndex+1]
} else {
    set lastFile ""
    set newIndex 1
    set lastIndex 0
}


for {set sector 1} {$sector<41} {incr sector} {
    scan $sector %ld sector
    puts stderr "Working on BM $sector"
    set file1 SR-[format %02ld $sector]BM-BPM.sdds 
    set file2 SR-[format %02ld $sector]BM-BPMSetpoints.sdds 
    exec sddsprocess SR-BMTemplate.sdds -pipe=out \
      "-reedit=col,ControlName,%/<n>/$sector/" \
      "-define=column,Index,i_row,type=long" \
    | tee $file1 \
    | sddsprocess -pipe=in $file2 -match=column,ControlName=*Setpoint* \
      "-redefine=column,Index,i_row,type=long"
    if [lsearch -exact $BMSectorList $sector]!=-1 {
        puts stderr "Adding to source-point list"
        lappend fileList $file1
    }
}

for {set sector 1} {$sector<41} {incr sector} {
    scan $sector %ld sector
    puts stderr "Working on ID $sector"
    set file1 SR-[format %02ld $sector]ID-BPM.sdds 
    set file2 SR-[format %02ld $sector]ID-BPMSetpoints.sdds 
    exec sddsprocess SR-IDTemplate.sdds -pipe=out \
      "-reedit=col,ControlName,%/<n>/$sector/%/<n+1>/[expr $sector+1]/" \
      "-define=column,Index,i_row,type=long" \
    | tee $file1 \
    | sddsprocess -pipe=in $file2 -match=column,ControlName=*Setpoint* \
      "-redefine=column,Index,i_row,type=long" 
    if [lsearch -exact $IDSectorList $sector]!=-1 {
        puts stderr "Adding to source-point list"
        lappend fileList $file1
    }
}

set newFile [format "SR-SrcPtBPMs.sdds-%04ld" $newIndex]
eval exec sddscombine $fileList -pipe=out -merge  \
    | sddsprocess -pipe=in $newFile "-redefine=column,Index,i_row,type=long"

if [file exists SR-SrcPtBPMs.sdds] {
    file delete SR-SrcPtBPMs.sdds
}
exec ln -s $newFile SR-SrcPtBPMs.sdds

set newFile1 [format "SR-SrcPtBPMSetpoints.sdds-%04ld" $newIndex]
exec sddsprocess $newFile $newFile1 -match=col,ControlName=*Setpoint*
if [file exists SR-SrcPtBPMSetpoints.sdds] {
    file delete SR-SrcPtBPMSetpoints.sdds
}
exec ln -s $newFile1 SR-SrcPtBPMSetpoints.sdds

exit
