squishPVs minimizes the values of a set of readback process
variables (for example bpm readbacks) by varying one setpoint process
variable (for example a corrector magnet setpoint) which has
a physical influence on the readback process variables.
An input file defines one or more data sets of correction groups, each
consisting of a list of readback PVs and one actuator PV.
The method simulates the manual tweaking of physical devices that is often necessary
when the readbacks are very noisy or when obtaining a reponse matrix is not
worth the trouble.
The name squishPVs comes from the apparent squishing of the real-time
trajectory display when squishPVs is running.
squishPVs xTrajCorr.sddswhere correction groups are defined in the file
xTrajCorr.sdds.
Part of the first correction group in the file xTrajCorr.sdds
is shown below:
SDDS1 &description text = "Input file for first turn correction", &end ¶meter name = "CorrectorPV", type = "string", &end ¶meter name = "Gain", type = "double", &end ! LowerLimit and UpperLimit parameters are optional ¶meter name = "LowerLimit", type = "double", &end ¶meter name = "UpperLimit", type = "double", &end &column name = "BpmPV", type = "string", &end ! Offset PVs are optional &column name = "OffsetPV", type = "string", &end ! Fixed offsets are optional and default to 0 &column name = "OffsetValue", type = "double" &end ! Weights are optional and default to 1 &column name = "Weight", type = "double", &end &data mode = "ascii", &end ! table number 1 ! CorrectorPV: S1A:H1:CurrentAO 1.000000000000000e+00 ! Gain -150 ! LowerLimit 150 ! UpperLimit 360 ! number of rows S1A:P1:ms:x S1A:P1:ms:x:SetpointAO 0.1 1 S1A:P2:ms:x S1A:P2:ms:x:SetpointAO 0.2 2 S1A:P3:ms:x S1A:P3:ms:x:SetpointAO 0.3 1 S1A:P4:ms:x S1A:P4:ms:x:SetpointAO 0.4 1 S1B:P5:ms:x S1B:P5:ms:x:SetpointAO 0.5 2 S1B:P4:ms:x S1B:P4:ms:x:SetpointAO 0.4 1 ...
usage: squishPVs <inputfile>
[-count=<pvName>,<lower>,<upper>,<number>]
[-averages=<number>,<pauseInSeconds>] [-stepSize=<value>]
[-subdivisions=<number>,<factor>]
[-upstep=count=<number>,factor=<value>]
[-repeat={number=<integer> | forever}[,pause=<seconds>]
[-ezcaTiming=<timeout>,<retries>]
[-settlingTime=<seconds>] [-verbose]
[-criterion={mav | rms}] [-maximize]
[-threshold=<value>] [-actionLevel=<value>]
[-testValues=<file>,[limit=<number>]]
The input file data pages define correction groups. A correction group consists of a list of readback PVs and one corrector PV. The required column and parameters are:
BpmPV is due
to the original application of squishPV where the first turn
trajectory is reduced by tweaked by corrector magnets.
BpmPV.
This will have the effect of optimizing toward the values of the offsets for
positive weights (the default). The default offsets are all 0.
readback-offset values. The default weight is 1.
stepsize.
<pvName> is read at 1 second intervals. If this
PV is within the validity limits specified for this number of readbacks, then
the PVs of the correction group are read.