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.