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


#

proc appendRow {category tolerance controlname beamline isnumerical opsintervention isreadonly isprotected description controlmode units provider expectnueric expectfieldtype expectelements} {
    global data
    lappend data(Column.Category) $category
    lappend data(Column.Tolerance) $tolerance
    lappend data(Column.ControlName) $controlname
    lappend data(Column.Beamline) $beamline
    lappend data(Column.IsNumerical) $isnumerical
    lappend data(Column.OpsIntervention) $opsintervention
    lappend data(Column.IsReadOnly) $isreadonly
    lappend data(Column.IsProtected) $isprotected
    lappend data(Column.Description) $description
    lappend data(Column.ControlMode) $controlmode
    lappend data(Column.Units) $units
    lappend data(Column.Provider) $provider
    lappend data(Column.ExpectNumeric) $expectnueric
    lappend data(Column.ExpectFieldType) $expectfieldtype
    lappend data(Column.ExpectElements) $expectelements
}

proc clearRows {} {
    global data
    set data(Column.Category) ""
    set data(Column.Tolerance) ""
    set data(Column.ControlName) ""
    set data(Column.Beamline) ""
    set data(Column.IsNumerical) ""
    set data(Column.OpsIntervention) ""
    set data(Column.IsReadOnly) ""
    set data(Column.IsProtected) ""
    set data(Column.Description) ""
    set data(Column.ControlMode) ""
    set data(Column.Units) ""
    set data(Column.Provider) ""
    set data(Column.ExpectNumeric) ""
    set data(Column.ExpectFieldType) ""
    set data(Column.ExpectElements) ""
}

proc makeBoosterReq {args} {
    global data
    set data(ColumnNames) "Category Tolerance ControlName Beamline IsNumerical OpsIntervention IsReadOnly IsProtected Description ControlMode Units Provider ExpectNumeric ExpectFieldType ExpectElements"
    set data(ParameterNames) "InstallLocation"
    set data(ParameterInfo.InstallLocation) "type SDDS_STRING"
    set data(Parameter.InstallLocation) "/home/helios/oagData/SCR/requestFiles/Booster.req"
    set data(ColumnInfo.Category) "type SDDS_STRING"
    set data(ColumnInfo.Tolerance) "type SDDS_DOUBLE"
    set data(ColumnInfo.ControlName) "type SDDS_STRING"
    set data(ColumnInfo.Beamline) "type SDDS_STRING"
    set data(ColumnInfo.IsNumerical) "type SDDS_CHARACTER"
    set data(ColumnInfo.OpsIntervention) "type SDDS_CHARACTER"
    set data(ColumnInfo.IsReadOnly) "type SDDS_CHARACTER"
    set data(ColumnInfo.IsProtected) "type SDDS_CHARACTER"
    set data(ColumnInfo.Description) "type SDDS_STRING"
    set data(ColumnInfo.ControlMode) "type SDDS_STRING"
    set data(ColumnInfo.Units) "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"

    puts "Adding CA PVs"
    #correctors
    foreach letter "A B" {
        foreach plane "H V" {
            foreach n "1 2 3" {
                #BTS:[AB][HV][123]"
                appendRow SteeringPS .00001 "BTS:${letter}${plane}${n}:CurrentAI" BTS y n y n "Current Readback" "" "Amps" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}${plane}${n}:CurrentAO" BTS y n n n "Current Setpoint" "" "Amps" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}${plane}${n}:RateDividerAO" BTS y n n n "Rate Divider" "" "Divdr" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}${plane}${n}:StatusCALC" BTS y n y n "Magnet Status" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}${plane}${n}:ToleranceCALC.C" BTS y n n n "Tolerance" "" "Toleran" "ca" y "scalar" 1
            }
        }
    }
    #skew quads
    foreach letter "B" {
        foreach n "1 2 3 4 5 6" {
            #BTS:[B]SQ[123456]"
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:CurrentM" BTS y n y n "Current Readback" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:SetCurrentC" BTS y n n n "Current Setpoint" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:SetCurrentM" BTS y n y n "Setpoint Readback value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:OnOffStatusM.RVAL" BTS y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:OnOffM" BTS n n y n "1 is on, 0 is off" "" "" "ca" n "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:FaultStatusM" BTS n n y n "0 is ready, 1 is not ready" "" "" "ca" n "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:MeasCurrentM" BTS y n y n "Output Current" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:DCCT:CurrentM" BTS y n y n "External DCCT" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:ReferenceM" BTS y n y n "Reference Current" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:VoltageM" BTS y n y n "Output Voltage" "" "V" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:CapacitorTempM" BTS y n y n "Capacitor Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:HeatSinkTempM" BTS y n y n "Heatsink Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DampResTempM" BTS y n y n "Damping Resistor Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:Fan1SpeedM" BTS y n y n "Fan1 Speed" "" "kRPM" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:Fan2SpeedM" BTS y n y n "Fan2 Speed" "" "kRPM" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DacCurrentM" BTS y n y n "Current Reference" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DacM" BTS y n y n "DAC Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:DCCT:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:DCCT:SlowCurrentM" BTS y n y n "DCCT current DAC value" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DacGainC" BTS y n n y "DAC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DacOffsetC" BTS y n n y "DAC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DacGainM" BTS y n y y "DAC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:DacOffsetM" BTS y n y y "DAC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan0GainC" BTS y n n y "Channel 0 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan1GainC" BTS y n n y "Channel 1 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan2GainC" BTS y n n y "Channel 2 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan3GainC" BTS y n n y "Channel 3 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan4GainC" BTS y n n y "Channel 4 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan5GainC" BTS y n n y "Channel 5 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan6GainC" BTS y n n y "Channel 6 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan7GainC" BTS y n n y "Channel 7 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan0OffsetC" BTS y n n y "Channel 0 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan1OffsetC" BTS y n n y "Channel 1 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan2OffsetC" BTS y n n y "Channel 2 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan3OffsetC" BTS y n n y "Channel 3 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan4OffsetC" BTS y n n y "Channel 4 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan5OffsetC" BTS y n n y "Channel 5 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan6OffsetC" BTS y n n y "Channel 6 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan7OffsetC" BTS y n n y "Channel 7 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan0GainM" BTS y n y y "Channel 0 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan1GainM" BTS y n y y "Channel 1 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan2GainM" BTS y n y y "Channel 2 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan3GainM" BTS y n y y "Channel 3 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan4GainM" BTS y n y y "Channel 4 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan5GainM" BTS y n y y "Channel 5 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan6GainM" BTS y n y y "Channel 6 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan7GainM" BTS y n y y "Channel 7 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan0OffsetM" BTS y n y y "Channel 0 ADC Offse Readbackt" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan1OffsetM" BTS y n y y "Channel 1 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan2OffsetM" BTS y n y y "Channel 2 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan3OffsetM" BTS y n y y "Channel 3 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan4OffsetM" BTS y n y y "Channel 4 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan5OffsetM" BTS y n y y "Channel 5 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan6OffsetM" BTS y n y y "Channel 6 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}SQ${n}:PS:AdcChan7OffsetM" BTS y n y y "Channel 7 ADC Offset Readback" "" "" "ca" y "scalar" 1
        }
    }
    #quads
    foreach letter "A B C D" {
        foreach n "1 2 3 4 5" {
            #BTS:[ABCD]Q[12345]"
            appendRow MainPS .00001 "BTS:${letter}Q${n}:CurrentM" BTS y n y n "Current Readback" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:SetCurrentC" BTS y n n n "Current Setpoint" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:SetCurrentM" BTS y n y n "Setpoint Readback value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:OnOffStatusM.RVAL" BTS y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:OnOffM" BTS n n y n "1 is on, 0 is off" "" "" "ca" n "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:FaultStatusM" BTS n n y n "0 is ready, 1 is not ready" "" "" "ca" n "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:MeasCurrentM" BTS y n y n "Output Current" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:DCCT:CurrentM" BTS y n y n "External DCCT" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:ReferenceM" BTS y n y n "Reference Current" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:VoltageM" BTS y n y n "Output Voltage" "" "V" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:CapacitorTempM" BTS y n y n "Capacitor Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:HeatSinkTempM" BTS y n y n "Heatsink Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:BuckTempM" BTS y n y n "Buck Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DampResTempM" BTS y n y n "Damping Resistor Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:Fan1SpeedM" BTS y n y n "Fan1 Speed" "" "kRPM" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:Fan2SpeedM" BTS y n y n "Fan2 Speed" "" "kRPM" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DacCurrentM" BTS y n y n "Current Reference" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DacM" BTS y n y n "DAC Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:DCCT:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:DCCT:SlowCurrentM" BTS y n y n "DCCT current DAC value" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DacGainC" BTS y n n y "DAC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DacOffsetC" BTS y n n y "DAC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DacGainM" BTS y n y y "DAC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:DacOffsetM" BTS y n y y "DAC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan0GainC" BTS y n n y "Channel 0 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan1GainC" BTS y n n y "Channel 1 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan2GainC" BTS y n n y "Channel 2 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan3GainC" BTS y n n y "Channel 3 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan4GainC" BTS y n n y "Channel 4 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan5GainC" BTS y n n y "Channel 5 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan6GainC" BTS y n n y "Channel 6 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan7GainC" BTS y n n y "Channel 7 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan0OffsetC" BTS y n n y "Channel 0 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan1OffsetC" BTS y n n y "Channel 1 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan2OffsetC" BTS y n n y "Channel 2 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan3OffsetC" BTS y n n y "Channel 3 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan4OffsetC" BTS y n n y "Channel 4 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan5OffsetC" BTS y n n y "Channel 5 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan6OffsetC" BTS y n n y "Channel 6 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan7OffsetC" BTS y n n y "Channel 7 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan0GainM" BTS y n y y "Channel 0 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan1GainM" BTS y n y y "Channel 1 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan2GainM" BTS y n y y "Channel 2 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan3GainM" BTS y n y y "Channel 3 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan4GainM" BTS y n y y "Channel 4 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan5GainM" BTS y n y y "Channel 5 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan6GainM" BTS y n y y "Channel 6 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan7GainM" BTS y n y y "Channel 7 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan0OffsetM" BTS y n y y "Channel 0 ADC Offse Readbackt" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan1OffsetM" BTS y n y y "Channel 1 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan2OffsetM" BTS y n y y "Channel 2 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan3OffsetM" BTS y n y y "Channel 3 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan4OffsetM" BTS y n y y "Channel 4 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan5OffsetM" BTS y n y y "Channel 5 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan6OffsetM" BTS y n y y "Channel 6 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letter}Q${n}:PS:AdcChan7OffsetM" BTS y n y y "Channel 7 ADC Offset Readback" "" "" "ca" y "scalar" 1
        }
    }
    #dipoles
#    foreach letters "AB" {
#        appendRow MainPS .00001 "BTS:${letters}:CurrentAI" BTS y n y n "Current Readback" "" "A" "ca" y "scalar" 1
#        appendRow MainPS .00001 "BTS:${letters}:CurrentAO" BTS y y n n "Current Setpoint" "" "A" "ca" y "scalar" 1
#        appendRow MainPS .00001 "BTS:${letters}:RateDividerAO" BTS y y n n "Rate Divider" "" "" "ca" y "scalar" 1
#        appendRow MainPS .00001 "BTS:${letters}:StatusCALC" BTS y n y n "Magnet Status" "" "" "ca" y "scalar" 1
#    }
    foreach letters "BB1 CB1 AB BX" {
            #BTS:[AA,BB1,CB1][ABCD]"
            appendRow MainPS .00001 "BTS:${letters}:CurrentM" BTS y n y n "Current Readback" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:SetCurrentC" BTS y y n n "Current Setpoint" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:SetCurrentM" BTS y n y n "Setpoint Readback value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:OnOffStatusM.RVAL" BTS y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:OnOffM" BTS n n y n "1 is on, 0 is off" "" "" "ca" n "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:FaultStatusM" BTS n n y n "0 is ready, 1 is not ready" "" "" "ca" n "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:MeasCurrentM" BTS y n y n "Output Current" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:DCCT:CurrentM" BTS y n y n "External DCCT" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:ReferenceM" BTS y n y n "Reference Current" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:VoltageM" BTS y n y n "Output Voltage" "" "V" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:CapacitorTempM" BTS y n y n "Capacitor Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:HeatSinkTempM" BTS y n y n "Heatsink Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DampResTempM" BTS y n y n "Damping Resistor Temperature" "" "C" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:Fan1SpeedM" BTS y n y n "Fan1 Speed" "" "kRPM" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:Fan2SpeedM" BTS y n y n "Fan2 Speed" "" "kRPM" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DacCurrentM" BTS y n y n "Current Reference" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DacM" BTS y n y n "DAC Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:DCCT:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:DCCT:SlowCurrentM" BTS y n y n "DCCT current DAC value" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DacGainC" BTS y n n y "DAC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DacOffsetC" BTS y n n y "DAC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DacGainM" BTS y n y y "DAC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:DacOffsetM" BTS y n y y "DAC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan0GainC" BTS y n n y "Channel 0 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan1GainC" BTS y n n y "Channel 1 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan2GainC" BTS y n n y "Channel 2 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan3GainC" BTS y n n y "Channel 3 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan4GainC" BTS y n n y "Channel 4 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan5GainC" BTS y n n y "Channel 5 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan6GainC" BTS y n n y "Channel 6 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan7GainC" BTS y n n y "Channel 7 ADC Gain" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan0OffsetC" BTS y n n y "Channel 0 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan1OffsetC" BTS y n n y "Channel 1 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan2OffsetC" BTS y n n y "Channel 2 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan3OffsetC" BTS y n n y "Channel 3 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan4OffsetC" BTS y n n y "Channel 4 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan5OffsetC" BTS y n n y "Channel 5 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan6OffsetC" BTS y n n y "Channel 6 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan7OffsetC" BTS y n n y "Channel 7 ADC Offset" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan0GainM" BTS y n y y "Channel 0 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan1GainM" BTS y n y y "Channel 1 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan2GainM" BTS y n y y "Channel 2 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan3GainM" BTS y n y y "Channel 3 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan4GainM" BTS y n y y "Channel 4 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan5GainM" BTS y n y y "Channel 5 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan6GainM" BTS y n y y "Channel 6 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan7GainM" BTS y n y y "Channel 7 ADC Gain Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan0OffsetM" BTS y n y y "Channel 0 ADC Offse Readbackt" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan1OffsetM" BTS y n y y "Channel 1 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan2OffsetM" BTS y n y y "Channel 2 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan3OffsetM" BTS y n y y "Channel 3 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan4OffsetM" BTS y n y y "Channel 4 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan5OffsetM" BTS y n y y "Channel 5 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan6OffsetM" BTS y n y y "Channel 6 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:PS:AdcChan7OffsetM" BTS y n y y "Channel 7 ADC Offset Readback" "" "" "ca" y "scalar" 1
            appendRow MainPS .00001 "BTS:${letters}:FSE" BTS y n y n "" "" "A" "ca" y "scalar" 1
    }
    #correctors attached to quads and skew quads
    foreach letter "BS C D" {
        foreach n "1 2 3 5 6" {
            foreach plane "H V" {
                #BTS:[BS,C,D]Q[12356]:[HV]1"
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:CurrentM" BTS y n y n "Current Readback" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:SetCurrentC" BTS y n n n "Current Setpoint" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:SetCurrentM" BTS y n y n "Setpoint Readback value" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:OnOffStatusM.RVAL" BTS y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:OnOffM" BTS n n y n "1 is on, 0 is off" "" "" "ca" n "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:FaultStatusM" BTS y n y n "0 is ready, 1 is not ready" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:MeasCurrentM" BTS y n y n "Output Current" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:DCCT:CurrentM" BTS y n y n "External DCCT" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:ReferenceM" BTS y n y n "Reference Current" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:VoltageM" BTS y n y n "Output Voltage" "" "V" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:CapacitorTempM" BTS y n y n "Capacitor Temperature" "" "C" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:HeatSinkTempM" BTS y n y n "Heatsink Temperature" "" "C" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DampResTempM" BTS y n y n "Damping Resistor Temperature" "" "C" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:Fan1SpeedM" BTS y n y n "Fan1 Speed" "" "kRPM" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:Fan2SpeedM" BTS y n y n "Fan2 Speed" "" "kRPM" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DacCurrentM" BTS y n y n "Current Reference" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DacM" BTS y n y n "DAC Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:DCCT:CurrentDacM" BTS y n y n "DCCT current DAC value" "" "A" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DacGainC" BTS y n n y "DAC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DacOffsetC" BTS y n n y "DAC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DacGainM" BTS y n y y "DAC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:DacOffsetM" BTS y n y y "DAC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan0GainC" BTS y n n y "Channel 0 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan1GainC" BTS y n n y "Channel 1 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan2GainC" BTS y n n y "Channel 2 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan3GainC" BTS y n n y "Channel 3 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan4GainC" BTS y n n y "Channel 4 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan5GainC" BTS y n n y "Channel 5 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan6GainC" BTS y n n y "Channel 6 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan7GainC" BTS y n n y "Channel 7 ADC Gain" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan0OffsetC" BTS y n n y "Channel 0 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan1OffsetC" BTS y n n y "Channel 1 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan2OffsetC" BTS y n n y "Channel 2 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan3OffsetC" BTS y n n y "Channel 3 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan4OffsetC" BTS y n n y "Channel 4 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan5OffsetC" BTS y n n y "Channel 5 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan6OffsetC" BTS y n n y "Channel 6 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan7OffsetC" BTS y n n y "Channel 7 ADC Offset" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan0GainM" BTS y n y y "Channel 0 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan1GainM" BTS y n y y "Channel 1 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan2GainM" BTS y n y y "Channel 2 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan3GainM" BTS y n y y "Channel 3 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan4GainM" BTS y n y y "Channel 4 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan5GainM" BTS y n y y "Channel 5 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan6GainM" BTS y n y y "Channel 6 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan7GainM" BTS y n y y "Channel 7 ADC Gain Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan0OffsetM" BTS y n y y "Channel 0 ADC Offse Readbackt" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan1OffsetM" BTS y n y y "Channel 1 ADC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan2OffsetM" BTS y n y y "Channel 2 ADC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan3OffsetM" BTS y n y y "Channel 3 ADC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan4OffsetM" BTS y n y y "Channel 4 ADC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan5OffsetM" BTS y n y y "Channel 5 ADC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan6OffsetM" BTS y n y y "Channel 6 ADC Offset Readback" "" "" "ca" y "scalar" 1
                appendRow SteeringPS .00001 "BTS:${letter}Q${n}${plane}:PS:AdcChan7OffsetM" BTS y n y y "Channel 7 ADC Offset Readback" "" "" "ca" y "scalar" 1
                
            }
        }
    }

    #BPMs
    foreach letter "A B C D" {
        foreach n "1 2 3 4 5 6 7" {
            foreach plane "H V" plane2 "x y" {
#Found
                appendRow BPM .00001 "BTS:${letter}P${plane}${n}:ErrorM" BTS y n y n "Error" "" "um" "ca" y "scalar" 1
#Not found
                appendRow BPM .00001 "BTS:${letter}P${plane}${n}:PositionM" BTS y n y n "Position" "" "um" "ca" y "scalar" 1
#Found
                appendRow BPM .00001 "BTS:${letter}P${plane}${n}:${plane2}" BTS y n y n "${plane2}" "" "um" "ca" y "scalar" 1
                appendRow BPM .00001 "BTS:${letter}P${plane}${n}:AdjustedM" BTS y n y n "Adjusted" "" "um" "ca" y "scalar" 1
                appendRow BPM .00001 "BTS:${letter}P${plane}${n}:GainC" BTS y n n y "Gain Setpoint" "" "" "ca" y "scalar" 1
                appendRow BPM .00001 "BTS:${letter}P${plane}${n}:OffsetC" BTS y n n n "Offset Setpoint" "" "um" "ca" y "scalar" 1
#Not found
                appendRow Readback .00001 "BTS:${letter}P${plane}${n}:SumM" BTS y n y n "Sum readback" "" "" "ca" y "scalar" 1
                appendRow Readback .00001 "BTS:${letter}P${plane}${n}:sum" BTS y n y n "sum readback" "" "" "ca" y "scalar" 1
#Found
                appendRow SteeringSetpoint .00001 "BTS:${letter}P${plane}${n}:SetpointC" BTS y n n n "Setpoint" "" "um" "ca" y "scalar" 1
                appendRow SteeringSetpoint .00001 "BTS:${letter}P${plane}${n}:SetpointC.DRVH" BTS y n n n "Setpoint DRVH" "" "um" "ca" y "scalar" 1
                appendRow SteeringSetpoint .00001 "BTS:${letter}P${plane}${n}:SetpointC.DRVL" BTS y n n n "Setpoint DRVL" "" "um" "ca" y "scalar" 1
                appendRow SteeringSetpoint .00001 "BTS:${letter}P${plane}${n}:SetpointC.HOPR" BTS y n n n "Setpoint HOPR" "" "um" "ca" y "scalar" 1
                appendRow SteeringSetpoint .00001 "BTS:${letter}P${plane}${n}:SetpointC.LOPR" BTS y n n n "Setpoint LOPR" "" "um" "ca" y "scalar" 1
            }
        }
    }
    
#Found
    appendRow Diag .00001 "BTS:CM:InjCycleBtsChargeM" BTS y n y n "" "" "" "ca" y "scalar" 1
#Found
#    appendRow ExtPulsedPS .00001 "B:ES1:VoltageSetSendAO" Booster y n n n "" "" "" "ca" y "scalar" 1
#    appendRow ExtPulsedPS .00001 "B:ES2:VoltageSetSendAO" Booster y n n n "" "" "" "ca" y "scalar" 1
#Not found
    appendRow ExtPulsedPS .00001 "B:ES1:PS:VoltageM" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "B:ES2:PS:VoltageM" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "B:ES1:PS:StatusM" Booster y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "B:ES2:PS:StatusM" Booster y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "B:ES1:FSE" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "B:ES2:FSE" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IS1:PS:StatusM" Booster y n y n "0 is on, 1 is off" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK1:PS:StatusM" Booster n n y n "0 is on, 1 is off" "" "" "ca" n "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK2:PS:StatusM" Booster n n y n "0 is on, 1 is off" "" "" "ca" n "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK3:PS:StatusM" Booster n n y n "0 is on, 1 is off" "" "" "ca" n "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IS1:PS:VoltageM" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IS1:FSE" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK1:FSE" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK2:FSE" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK3:FSE" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK1:PS:VoltageC" Booster y n n n "" "" "V" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK2:PS:VoltageC" Booster y n n n "" "" "V" "ca" y "scalar" 1
    appendRow ExtPulsedPS .00001 "S39-IES:IK3:PS:VoltageC" Booster y n n n "" "" "V" "ca" y "scalar" 1
#Found
#    appendRow ExtTiming .00001 "Mt:BoosterRampTurnsAO" Booster y n y n "" "" "" "ca" y "scalar" 1
#Not found
    appendRow ExtTiming .00001 "B:DeltaPOverPTurns" Booster y n y n "" "" "" "ca" y "scalar" 1
    appendRow ExtTiming .00001 "B:DeltaPOverPFreq" Booster y n y n "" "" "" "ca" y "scalar" 1



    set data(Column.Category) [list $data(Column.Category)]
    set data(Column.Tolerance) [list $data(Column.Tolerance)]
    set data(Column.ControlName) [list $data(Column.ControlName)]
    set data(Column.Beamline) [list $data(Column.Beamline)]
    set data(Column.IsNumerical) [list $data(Column.IsNumerical)]
    set data(Column.OpsIntervention) [list $data(Column.OpsIntervention)]
    set data(Column.IsReadOnly) [list $data(Column.IsReadOnly)]
    set data(Column.IsProtected) [list $data(Column.IsProtected)]
    set data(Column.Description) [list $data(Column.Description)]
    set data(Column.ControlMode) [list $data(Column.ControlMode)]
    set data(Column.Units) [list $data(Column.Units)]
    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 ../requestFiles/Booster.req.new data

    puts "Comparing against master PV list"
    exec sddsprocess ../requestFiles/Booster.req.new ../requestFiles/Booster.req.new2 \
        -edit=column,SimpleControlName,ControlName,S?/./K
    exec sddsselect ../requestFiles/Booster.req.new2 /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out \
        -match=SimpleControlName=rec_name -nowarning -reuse | \
        sddsconvert -pipe=in ../requestFiles/Booster.req.ca -delete=column,SimpleControlName
    file delete ../requestFiles/Booster.req.new ../requestFiles/Booster.req.new2

    puts "Adding PVA PVs"
    clearRows

    set data(Column.Category) [list $data(Column.Category)]
    set data(Column.Tolerance) [list $data(Column.Tolerance)]
    set data(Column.ControlName) [list $data(Column.ControlName)]
    set data(Column.Beamline) [list $data(Column.Beamline)]
    set data(Column.IsNumerical) [list $data(Column.IsNumerical)]
    set data(Column.OpsIntervention) [list $data(Column.OpsIntervention)]
    set data(Column.IsReadOnly) [list $data(Column.IsReadOnly)]
    set data(Column.IsProtected) [list $data(Column.IsProtected)]
    set data(Column.Description) [list $data(Column.Description)]
    set data(Column.ControlMode) [list $data(Column.ControlMode)]
    set data(Column.Units) [list $data(Column.Units)]
    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 ../requestFiles/Booster.req.pva data

    exec sddscombine ../requestFiles/Booster.req.ca ../requestFiles/Booster.req.pva ../requestFiles/Booster.req.new -merge -overwrite
    exec sddssort ../requestFiles/Booster.req.new -col=ControlName -num -unique -nowarn
    file delete ../requestFiles/Booster.req.ca ../requestFiles/Booster.req.pva ../requestFiles/Booster.req.new~



    set root Booster
    set FPGAList {B1C8 B1C9 B2C0 B2C1 B2C2 B2C3 B2C4 B2C5 B2C6 B2C7 B2C8 B2C9}
    
    set fileList ""
    for {set b 1} {$b<5} {incr b} {
        for {set c 0} {$c<10} {incr c} {
            foreach P {P1 P2} plane {H V} {
                set bpm B${b}C${c}$P
                set sector  B${b}C${c}
                if [catch {exec replaceText ../requestFiles/Booster.req.bpm.template ../requestFiles/${root}.bpm.$bpm \
                             -orig=<bpm>,<sector>,<plane> -repl=${bpm},${sector},${plane} } result] {
                    puts stderr "makeBoosterReqFile(1): $result"
                    exit 1
                }
                
                if [lsearch -exact $FPGAList $sector]>=0 {
                    if [catch {exec sddsprocess ../requestFiles/${root}.bpm.$bpm -nowarnings "-match=col,ControlName=*scdu*,!" } result] {
                        puts stderr "makeBoosterReqFile(3): $result"
                        exit 1
                    }
                    file delete ../requestFiles/${root}.bpm.${bpm}~
                }
                lappend fileList ../requestFiles/${root}.bpm.$bpm
            }
        }
    }
    if [catch {eval exec sddscombine ../requestFiles/Booster.req.new ../requestFiles/Booster.req.others $fileList -merge -pipe=out | sddsprocess -pipe -edit=column,SimpleControlName,ControlName,S?/./K | sddssort -col=ControlName -pipe=in /tmp/Booster.req -nowarning -numericHigh} result] {
        puts stderr "makeBoosterReqFile(2): $result"
        exit 1
    }
    puts "Comparing against master PV list"
    exec sddsselect /tmp/Booster.req /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out -match=SimpleControlName=rec_name -nowarning -reuse | sddsconvert -pipe=in ../requestFiles/Booster.req -delete=column,SimpleControlName -delete=parameter,NumberCombined -ascii
    
    eval file delete $fileList ../requestFiles/Booster.req.new

}


makeBoosterReq

puts "Check if BTS:AQ? PV have been created yet"
puts "Lots of missing BPM extensions such as BTS:APH1:BPM.ALGO"

