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

#Input files:  ../requestFiles/SBPM.req.template1
#              ../requestFiles/SBPM.req.template2
#
#Output files: ../requestFiles/SBPM.req
#

# Initialize the list to hold filenames
set flist {}

# First loop
for {set sector 1} {$sector <= 40} {incr sector} {
    set beamline [format "S%02d" $sector]
    foreach side {A B} {
        for {set p 0} {$p <= 6} {incr p} {
            set root [format "S%02d%s:P%d" $sector $side $p]
            set fn ../requestFiles/[format "S%02d%sP%d.sdds" $sector $side $p]
            exec sddsprocess ../requestFiles/SBPM.req.template1 $fn "-edit=column,ControlName,Template,%/<BPMPrefix>/$root/" -print=col,Beamline,$beamline -print=col,Category,BPM
            lappend flist $fn
        }
    }
}
    
# Combine and process the files
set combinedOutput [eval exec sddscombine $flist -merge -pipe=out | sddscasr -pipe -save -pend=20 | sddsprocess -pipe -match=col,CAError=n | sddsconvert -pipe=in ../requestFiles/SRBPM-BPMs.sdds -retain=col,ControlName,Is*,Ops*,Category,Beamline,Provider,Expect*,Units]
foreach file $flist {
    file delete $file
}

# Reset the list for the next batch
set flist "../requestFiles/SRBPM-BPMs.sdds"

# Function to avoid repeating code in the second loop
proc processSector {sector units} {
    global flist
    set beamline [format "S%02d" $sector]
    foreach unit [split $units] {
        set root [format "ioc2s%02dbpm%d" $sector $unit]
        set fn "../requestFiles/$root.sdds"
        exec sddsprocess ../requestFiles/SBPM.req.template2 $fn "-edit=column,ControlName,Template,%/{LB_PVPrefix}/$root/" -print=col,Beamline,$beamline -print=col,Category,LBUnit
        lappend flist $fn
    }
}

# Second loop: More processing with different parameters
for {set sector 2} {$sector <= 40} {incr sector 2} {
    processSector $sector "1 2 3 4"
}
for {set sector 1} {$sector <= 40} {incr sector 2} {
    processSector $sector "5 6 7"
}

# Final combination and cleanup
eval exec sddscombine $flist -merge -pipe=out -retain=col,ControlName,Is*,Ops*,Category,Beamline,Provider,Expect*,Units -delete=parameter,* | sddsconvert -pipe -ascii | sddsprocess -pipe=in ../requestFiles/SBPM.req -print=parameter,InstallLocation,/home/helios/oagData/SCR/requestFiles/SBPMs.req -del=parameter,NumberCombined

foreach file $flist {
    file delete $file
}

