#!/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)]

# $Log: not supported by cvs2svn $
# Revision 1.2  2006/02/21 21:23:35  emery
# Added -reuse=rows option to sddsselectm and inserted missing
# sddcombine near the end. Output files have been checked.
#
# Revision 1.1  2006/01/27 00:52:16  emery
# First installation of a script that was found originally in
# /home/helios/oagData/sr/bpmTimingScans/inputFiles under the name
# makeTimingScanTemplate.
# The original version had two sets of sectors with old and new timing
# system. The present version has all sectors using the new
# timing system. We wi ll never go back to the old timing system.
#

cd /home/helios/oagData/sr/bpmTimingScans/inputFiles

set lastFile1 [lindex [lsort [glob newTimingScanTemplate.exp-????]] end]
set lastFile2 [lindex [lsort [glob newTimingScan.mon-????]] end]
set lastFile3 [lindex [lsort [glob individualNewTiming.req-????]] end]
set newFile1 [APSNextGenerationedName -name $lastFile1 -newFile 1]
set newFile2 [APSNextGenerationedName -name $lastFile2 -newFile 1]
set newFile3 [APSNextGenerationedName -name $lastFile3 -newFile 1]

set recordFile /home/helios/oagData/pvdata/iocRecNamesOAG.sdds

set file1List ""
set file2List ""
set file3List ""
for {set sector 1} {$sector <=40} {incr sector} {
    # for experiment variable odd sectors only plus sectors above 35.
    if {1==[expr $sector%2] || $sector > 35 } {
        exec replaceText newTimingScanTemplateOfTemplate.exp \
          newTimingScanTemplate.exp.$sector \
          -orig=<sector> -replace=$sector
        lappend file1List newTimingScanTemplate.exp.$sector
    }
    exec replaceText newTimingScanTemplate.mon \
      newTimingScan.mon.$sector \
      -orig=<sector> -replace=$sector
    exec replaceText individualNewTimingTemplate.req \
      individualNewTiming.req.$sector \
      -orig=<sector> -replace=$sector
    lappend file2List newTimingScan.mon.$sector
    lappend file3List individualNewTiming.req.$sector
}

# Make a file of Monopulse BPMs
set tmpMP /tmp/[APSTmpString]
set dataDir /home/helios/oagData/sr/BPMStatus
if [catch {exec sddsprocess $dataDir/config.sdds $tmpMP.goodbpms \
             -match=col,ElectronicsType=Monopulse \
             -filter=col,NonexistentH,1,1,NonexistentV,1,1,&,! \
             -filter=col,OkForLoggingV,1,1,OkForLoggingH,1,1,| \
         } result] {
    puts stderr "Error (2) for $argv0 in [pwd]: $result"
    exit 1
}

# these are sector timing PVs
eval exec cat $file1List newTimingScanTemplate.other.exp > $newFile1

# monitor file of :ms:x :ms:y PVs
eval exec sddscombine $file2List -pipe=out -merge \
  | sddsselect -pipe=in $tmpMP.goodbpms $tmpMP.ms.goodbpms \
  -match=BPMName=DeviceName -reuse=rows
exec sddscombine $tmpMP.ms.goodbpms newTimingScan.otherPVs.mon $newFile2 -merge

# file of individual timing PVs
eval exec sddscombine $file3List -pipe=out -merge \
  | sddsselect -pipe=in $tmpMP.goodbpms $newFile3 \
  -match=BPMName=DeviceName -reuse=rows

catch {eval file delete $file1List $file2List $file3List}

foreach file {newTimingScanTemplate.exp \
                newTimingScan.mon \
                individualNewTiming.req} \
  newFile "$newFile1 $newFile2 $newFile3" {
      if [catch {file delete $file
          exec ln -s $newFile $file \
               } result] {
          puts stderr "Error for $argv0 in [pwd]: $result"
          exit 1
      }
  }

exit
