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

# input files:
# 
#
# output files: SRDCPS-correctors-extensive.mon
#               SRDCPS-correctors.mon
#               SRDCPS-dipoles-extensive.mon
#               SRDCPS-dipoles.mon
#               SRDCPS-quadrupoles-extensive.mon
#               SRDCPS-quadrupoles.mon
#               SRDCPS-sextupoles-extensive.mon
#               SRDCPS-sextupoles.mon
#               SRDCPS-HVD.mon

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

#Bipolar H V FH FV MT C:M QT SQ 
#Unipolar A:M B:M Q S

if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type corr} corr]} {
    puts "Error: $corr"
    exit
}
if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type fastCorr} fastCorr]} {
    puts "Error: $corr"
    exit
}
if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type quad} quad]} {
    puts "Error: $quad"
    exit
}
if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type skewquad} skewquad]} {
    puts "Error: $quad"
    exit
}
if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type sext} sext]} {
    puts "Error: $sext"
    exit
}
if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type dipole} dipole]} {
    puts "Error: $dipole"
    exit
}
if {[catch {APSGetMagnetPVNamesAndInfo -arrayName magnetPVs -beamline SR -type dipoletrim} dipoletrim]} {
    puts "Error: $dipoletrim"
    exit
}


proc MakeExtensiveFile {root magnets} {
    global magnetPVs

    set data(ParameterNames) "InstallLocation"
    set data(ColumnNames) "ControlName ReadbackName Provider ExpectNumeric ExpectFieldType ExpectElements"
    set data(ParameterInfo.InstallLocation) "type SDDS_STRING"
    set data(ColumnInfo.ControlName) "type SDDS_STRING"
    set data(ColumnInfo.ReadbackName) "type SDDS_STRING"
    set data(ColumnInfo.Provider) "type SDDS_STRING"
    set data(ColumnInfo.ExpectNumeric) "type SDDS_CHARACTER"
    set data(ColumnInfo.ExpectFieldType) "type SDDS_STRING"
    set data(ColumnInfo.ExpectElements) "type SDDS_LONG"
    set data(Parameter.InstallLocation) "/home/helios/oagData/logging/SRDCPS/${root}.mon"
    

    if {$root == "SRDCPS-dipoles-extensive"} {
        for {set i 1} {$i <= 40} {incr i} {
            set ii [format %02d $i]
            lappend data(Column.ControlName) "S${ii}C:M2:TemperatureM"
            lappend data(Column.ReadbackName) "S${ii}C:M2:TemperatureM"
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
            
            lappend data(Column.ControlName) "S${ii}C:M3:TemperatureM"
            lappend data(Column.ReadbackName) "S${ii}C:M3:TemperatureM"
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1   
        }
    }
    if {$root == "SRDCPS-correctors-extensive"} {
        for {set i 1} {$i <= 40} {incr i} {
            set ii [format %02d $i]
            lappend data(Column.ControlName) "S${ii}C:HV2:TemperatureM"
            lappend data(Column.ReadbackName) "S${ii}C:HV2:TemperatureM"
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1

            foreach letter {A B} {
                lappend data(Column.ControlName) "S${ii}${letter}:FC1:TC1:TemperatureM"
                lappend data(Column.ReadbackName) "S${ii}${letter}:FC1:TC1:TemperatureM"
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1

                lappend data(Column.ControlName) "S${ii}${letter}:FC1:TC2:TemperatureM"
                lappend data(Column.ReadbackName) "S${ii}${letter}:FC1:TC2:TemperatureM"
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1

                lappend data(Column.ControlName) "S${ii}${letter}:FC2:TC1:TemperatureM"
                lappend data(Column.ReadbackName) "S${ii}${letter}:FC2:TC1:TemperatureM"
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1

                lappend data(Column.ControlName) "S${ii}${letter}:FC2:TC2:TemperatureM"
                lappend data(Column.ReadbackName) "S${ii}${letter}:FC2:TC2:TemperatureM"
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1
            }
        }
    }
    
    foreach magnet $magnets {
        lappend data(Column.ControlName) $magnetPVs(${magnet}.statusPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.statusPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) $magnetPVs(${magnet}.readCurrentPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.readCurrentPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) $magnetPVs(${magnet}.setCurrentPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.setCurrentPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) [string range $magnetPVs(${magnet}.setCurrentPV) 0 end-1]M
        lappend data(Column.ReadbackName) [string range $magnetPVs(${magnet}.setCurrentPV) 0 end-1]M
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) $magnetPVs(${magnet}.readDCCTCurrentPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.readDCCTCurrentPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) $magnetPVs(${magnet}.readDCCTSlowCurrentPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.readDCCTSlowCurrentPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) $magnetPVs(${magnet}.readVoltagePV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.readVoltagePV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) $magnetPVs(${magnet}.readTempPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.readTempPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
        
        lappend data(Column.ControlName) "${magnet}:TemperatureM"
        lappend data(Column.ReadbackName) "${magnet}:TemperatureM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   

        lappend data(Column.ControlName) "${magnet}:PS:TemperatureM"
        lappend data(Column.ReadbackName) "${magnet}:PS:TemperatureM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   

        lappend data(Column.ControlName) "${magnet}:PS:HeatSinkTempM"
        lappend data(Column.ReadbackName) "${magnet}:PS:HeatSinkTempM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   

        lappend data(Column.ControlName) "${magnet}:PS:DampResTempM"
        lappend data(Column.ReadbackName) "${magnet}:PS:DampResTempM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   

        lappend data(Column.ControlName) "${magnet}:PS:BuckTempM"
        lappend data(Column.ReadbackName) "${magnet}:PS:BuckTempM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   

        lappend data(Column.ControlName) "${magnet}:PS:AdcTempM"
        lappend data(Column.ReadbackName) "${magnet}:PS:AdcTempM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   

        lappend data(Column.ControlName) "${magnet}:PS:CarrierTempM"
        lappend data(Column.ReadbackName) "${magnet}:PS:CarrierTempM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   
        
        lappend data(Column.ControlName) "${magnet}:PS:Fan1SpeedM"
        lappend data(Column.ReadbackName) "${magnet}:PS:Fan1SpeedM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   
        
        lappend data(Column.ControlName) "${magnet}:PS:Fan2SpeedM"
        lappend data(Column.ReadbackName) "${magnet}:PS:Fan2SpeedM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   
        
        lappend data(Column.ControlName) "${magnet}:PS:SlewRateM"
        lappend data(Column.ReadbackName) "${magnet}:PS:SlewRateM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   
        
        lappend data(Column.ControlName) "${magnet}:PS:SlewRateC"
        lappend data(Column.ReadbackName) "${magnet}:PS:SlewRateC"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   
        
        lappend data(Column.ControlName) "${magnet}:PS:DCBusVoltM"
        lappend data(Column.ReadbackName) "${magnet}:PS:DCBusVoltM"
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1   
    }
    if {$root == "SRDCPS-dipoles-extensive"} {
        for {set i 1} {$i <= 40} {incr i} {
            set sector [format %02d $i]
            foreach letter "A B" {
                foreach num "1 2" {
                    lappend data(Column.ControlName) S${sector}${letter}:M${num}:TemperatureM
                    lappend data(Column.ReadbackName) S${sector}${letter}:M${num}:TemperatureM
                    lappend data(Column.Provider) ca
                    lappend data(Column.ExpectNumeric) y
                    lappend data(Column.ExpectFieldType) scalar
                    lappend data(Column.ExpectElements) 1
                }
            }
        }
        foreach num "1 2" {
            lappend data(Column.ControlName) S:M${num}:PS:Cab2TempM
            lappend data(Column.ReadbackName) S:M${num}:PS:Cab2TempM
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1

            lappend data(Column.ControlName) S:M${num}:PS:ShuntTempM
            lappend data(Column.ReadbackName) S:M${num}:PS:ShuntTempM
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1

            lappend data(Column.ControlName) S:M${num}:PS:WaterTempM
            lappend data(Column.ReadbackName) S:M${num}:PS:WaterTempM
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1

            lappend data(Column.ControlName) S:M${num}:PS:IGBTTempPM1_M
            lappend data(Column.ReadbackName) S:M${num}:PS:IGBTTempPM1_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1

            lappend data(Column.ControlName) S:M${num}:PS:IGBTTempPM2_M
            lappend data(Column.ReadbackName) S:M${num}:PS:IGBTTempPM2_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
            
            
            for {set num2 1} {$num2 <= 30} {incr num2} {
                lappend data(Column.ControlName) S:M${num}:PS:IL${num2}C_M
                lappend data(Column.ReadbackName) S:M${num}:PS:IL${num2}C_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1
                
                lappend data(Column.ControlName) S:M${num}:PS:IL${num2}V_M
                lappend data(Column.ReadbackName) S:M${num}:PS:IL${num2}V_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1
            }
            
        }
        for {set i 1} {$i <= 40} {incr i} {
            set sector [format %02d $i]
            for {set j 1} {$j <= 9} {incr j} {
                lappend data(Column.ControlName) S${sector}:UPSC${j}:ADC_PID_CurrTempRB_M
                lappend data(Column.ReadbackName) S${sector}:UPSC${j}:ADC_PID_CurrTempRB_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1

                lappend data(Column.ControlName) S${sector}:UPSC${j}:BRB_PID_CurrTempRB_M
                lappend data(Column.ReadbackName) S${sector}:UPSC${j}:BRB_PID_CurrTempRB_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1
            }
            lappend data(Column.ControlName) S:UPSC${j}:ADC_PID_CurrTempRB_M
            lappend data(Column.ReadbackName) S:UPSC${j}:ADC_PID_CurrTempRB_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
            
            lappend data(Column.ControlName) S:UPSC${j}:BRB_PID_CurrTempRB_M
            lappend data(Column.ReadbackName) S:UPSC${j}:BRB_PID_CurrTempRB_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
        }
    }
    if {$root == "SRDCPS-quadrupoles-extensive"} {
        for {set i 1} {$i <= 40} {incr i} {
            set sector [format %02d $i]
            for {set j 1} {$j <= 9} {incr j} {
                lappend data(Column.ControlName) S${sector}:UPSC${j}:ADC_PID_CurrTempRB_M
                lappend data(Column.ReadbackName) S${sector}:UPSC${j}:ADC_PID_CurrTempRB_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1

                lappend data(Column.ControlName) S${sector}:UPSC${j}:BRB_PID_CurrTempRB_M
                lappend data(Column.ReadbackName) S${sector}:UPSC${j}:BRB_PID_CurrTempRB_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1
            }
            lappend data(Column.ControlName) S:UPSC1:ADC_PID_CurrTempRB_M
            lappend data(Column.ReadbackName) S:UPSC1:ADC_PID_CurrTempRB_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
            
            lappend data(Column.ControlName) S:UPSC1:BRB_PID_CurrTempRB_M
            lappend data(Column.ReadbackName) S:UPSC1:BRB_PID_CurrTempRB_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
        }
    }
    if {$root == "SRDCPS-sextupoles-extensive"} {
        for {set i 1} {$i <= 40} {incr i} {
            set sector [format %02d $i]
            for {set j 1} {$j <= 9} {incr j} {
                lappend data(Column.ControlName) S${sector}:UPSC${j}:ADC_PID_CurrTempRB_M
                lappend data(Column.ReadbackName) S${sector}:UPSC${j}:ADC_PID_CurrTempRB_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1

                lappend data(Column.ControlName) S${sector}:UPSC${j}:BRB_PID_CurrTempRB_M
                lappend data(Column.ReadbackName) S${sector}:UPSC${j}:BRB_PID_CurrTempRB_M
                lappend data(Column.Provider) ca
                lappend data(Column.ExpectNumeric) y
                lappend data(Column.ExpectFieldType) scalar
                lappend data(Column.ExpectElements) 1
            }
            lappend data(Column.ControlName) S:UPSC${j}:ADC_PID_CurrTempRB_M
            lappend data(Column.ReadbackName) S:UPSC${j}:ADC_PID_CurrTempRB_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
            
            lappend data(Column.ControlName) S:UPSC${j}:BRB_PID_CurrTempRB_M
            lappend data(Column.ReadbackName) S:UPSC${j}:BRB_PID_CurrTempRB_M
            lappend data(Column.Provider) ca
            lappend data(Column.ExpectNumeric) y
            lappend data(Column.ExpectFieldType) scalar
            lappend data(Column.ExpectElements) 1
        }        
    }
    
    set data(Column.ControlName) [list $data(Column.ControlName)]
    set data(Column.ReadbackName) [list $data(Column.ReadbackName)]
    set data(Column.Provider) [list $data(Column.Provider)]
    set data(Column.ExpectNumeric) [list $data(Column.ExpectNumeric)]
    set data(Column.ExpectFieldType) [list $data(Column.ExpectFieldType)]
    set data(Column.ExpectElements) [list $data(Column.ExpectElements)]
    
    sdds save ../DataLogging/${root}.mon.new data
    
    exec sddssort ../DataLogging/${root}.mon.new -col=ControlName -num -nowarn -unique
    
    puts "Comparing against master PV list"
    exec sddsprocess  ../DataLogging/${root}.mon.new -pipe=out \
      -edit=column,SimpleControlName,ControlName,S?/./K | \
      sddsselect -pipe /home/helios/oagData/pvdata/iocRecNamesOAG.sdds \
      -match=SimpleControlName=rec_name -nowarning -reuse | \
      sddsconvert -pipe=in ./../DataLogging/${root}.mon -delete=column,SimpleControlName
    
    file delete ../DataLogging/${root}.mon.new ../DataLogging/${root}.mon.new~   
}

proc MakeFile {root magnets} {
    global magnetPVs

    set data(ParameterNames) "InstallLocation"
    set data(ColumnNames) "ControlName ReadbackName Provider ExpectNumeric ExpectFieldType ExpectElements"
    set data(ParameterInfo.InstallLocation) "type SDDS_STRING"
    set data(ColumnInfo.ControlName) "type SDDS_STRING"
    set data(ColumnInfo.ReadbackName) "type SDDS_STRING"
    set data(ColumnInfo.Provider) "type SDDS_STRING"
    set data(ColumnInfo.ExpectNumeric) "type SDDS_CHARACTER"
    set data(ColumnInfo.ExpectFieldType) "type SDDS_STRING"
    set data(ColumnInfo.ExpectElements) "type SDDS_LONG"
    if {$root == "SRDCPS-HVD"} {
        set data(Parameter.InstallLocation) "/home/helios/oagData/logging/SRDCPS-HVD/${root}.mon"
    } else {
        set data(Parameter.InstallLocation) "/home/helios/oagData/logging/SRDCPS/${root}.mon"
    }

    foreach magnet $magnets {
        lappend data(Column.ControlName) $magnetPVs(${magnet}.readCurrentPV)
        lappend data(Column.ReadbackName) $magnetPVs(${magnet}.readCurrentPV)
        lappend data(Column.Provider) ca
        lappend data(Column.ExpectNumeric) y
        lappend data(Column.ExpectFieldType) scalar
        lappend data(Column.ExpectElements) 1
    }

    set data(Column.ControlName) [list $data(Column.ControlName)]
    set data(Column.ReadbackName) [list $data(Column.ReadbackName)]
    set data(Column.Provider) [list $data(Column.Provider)]
    set data(Column.ExpectNumeric) [list $data(Column.ExpectNumeric)]
    set data(Column.ExpectFieldType) [list $data(Column.ExpectFieldType)]
    set data(Column.ExpectElements) [list $data(Column.ExpectElements)]
    
    sdds save ../DataLogging/${root}.mon.new data
    
    exec sddssort ../DataLogging/${root}.mon.new -col=ControlName -num -nowarn -unique
    
    puts "Comparing against master PV list"
    exec sddsprocess  ../DataLogging/${root}.mon.new -pipe=out \
      -edit=column,SimpleControlName,ControlName,S?/./K | \
      sddsselect -pipe /home/helios/oagData/pvdata/iocRecNamesOAG.sdds \
      -match=SimpleControlName=rec_name -nowarning -reuse | \
      sddsconvert -pipe=in ./../DataLogging/${root}.mon -delete=column,SimpleControlName
    
    file delete ../DataLogging/${root}.mon.new ../DataLogging/${root}.mon.new~
    
}

set root SRDCPS-correctors-extensive
set magnets "$corr $fastCorr $dipoletrim"
MakeExtensiveFile $root $magnets
set root SRDCPS-correctors
MakeFile $root $magnets

set root SRDCPS-dipoles-extensive
set magnets "$dipole"
MakeExtensiveFile $root $magnets
set root SRDCPS-dipoles
MakeFile $root $magnets

set root SRDCPS-quadrupoles-extensive
set magnets "$quad $skewquad"
MakeExtensiveFile $root $magnets
set root SRDCPS-quadrupoles
MakeFile $root $magnets

set root SRDCPS-sextupoles-extensive
set magnets "$sext"
MakeExtensiveFile $root $magnets
set root SRDCPS-sextupoles
MakeFile $root $magnets

set magnets "$corr $fastCorr $dipoletrim $dipole"
set root SRDCPS-HVD
MakeFile $root $magnets
