0001 function plotbpmrespsym(R)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 if nargin == 0
0016 R = getbpmresp('Struct');
0017 end
0018 if isempty(R)
0019 R = getbpmresp('','Struct');
0020 end
0021 if isempty(R)
0022 return;
0023 end
0024
0025
0026
0027 R = hw2physics(R);
0028
0029
0030 FontSize = 10;
0031 Buffer = .01;
0032 HeightBuffer = .08;
0033
0034
0035 Sx = R(1,1).Data;
0036 Sy = R(2,2).Data;
0037
0038 NSectors = R(1,1).Monitor.DeviceList(end,1);
0039 NBPMxperSector = max(R(1,1).Monitor.DeviceList(:,2));
0040 NBPMyperSector = max(R(2,2).Monitor.DeviceList(:,2));
0041
0042 NBPMx = size(Sx,1);
0043 NBPMy = size(Sy,1);
0044
0045 NHCMperSector = max(R(1,1).Actuator.DeviceList(:,2));
0046 NVCMperSector = max(R(2,2).Actuator.DeviceList(:,2));
0047
0048
0049
0050
0051 Circumference = getfamilydata('Circumference');
0052
0053 BPMxs = getspos(R(1,1).Monitor.FamilyName, R(1,1).Monitor.DeviceList);
0054 BPMxs = BPMxs(:);
0055 BPMys = getspos(R(2,2).Monitor.FamilyName, R(2,2).Monitor.DeviceList);
0056 BPMys = BPMys(:);
0057
0058 BPMxDev = R(1,1).Monitor.DeviceList;
0059 BPMyDev = R(2,2).Monitor.DeviceList;
0060
0061
0062
0063
0064
0065
0066 HCMDev = R(1,1).Actuator.DeviceList;
0067 VCMDev = R(2,2).Actuator.DeviceList;
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078 XUnitsString = R(1,1).UnitsString;
0079 XUnitsString(findstr(XUnitsString,'(')) = [];
0080 XUnitsString(findstr(XUnitsString,')')) = [];
0081 YUnitsString = R(2,2).UnitsString;
0082 YUnitsString(findstr(YUnitsString,'(')) = [];
0083 YUnitsString(findstr(YUnitsString,')')) = [];
0084
0085
0086 L = getfamilydata('Circumference');
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107 figure;
0108 clf reset
0109 set(gcf,'units','normal','position',[.0+Buffer .27+Buffer .5-2*Buffer .72-2*Buffer-HeightBuffer]);
0110 for Mag = 1:NHCMperSector
0111 S = [];
0112 P = [];
0113 for i = 1:NSectors
0114 j = findrowindex([i Mag], HCMDev);
0115 if ~isempty(j)
0116 k = min(find(BPMxDev(:,1)==i));
0117 S = [S [Sx(k:end, j); Sx(1:k-1, j)]];
0118 P = [P [BPMxs(k:end); BPMxs(1:k-1)+L]-BPMxs(k)+BPMxs(1)];
0119 end
0120 end
0121
0122 subplot(NHCMperSector, 1, Mag);
0123 if isempty(S)
0124 plot(BPMxs, NaN*ones(size(BPMxs)));
0125 else
0126 plot(P, S);
0127 end
0128 ylabel(sprintf('Mag #%d', Mag), 'FontSize', FontSize);
0129 end
0130
0131 subplot(NHCMperSector,1,1);
0132 title(sprintf('Horizontal Corrector Magnet Response (%s)', XUnitsString), 'FontSize', FontSize);
0133
0134 subplot(NHCMperSector,1,NHCMperSector);
0135 xlabel('BPM Position [meters]', 'FontSize', FontSize);
0136 if isfield(R(1,1), 'TimeStamp')
0137 addlabel(1,0,sprintf('%s', datestr(R(1,1).TimeStamp)));
0138 end
0139 orient tall
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157 figure(gcf+1);
0158 clf reset
0159 set(gcf,'units','normal','position',[.5+Buffer .27+Buffer .5-2*Buffer .72-2*Buffer-HeightBuffer]);
0160
0161 for Mag = 1:NVCMperSector
0162 S = [];
0163 P = [];
0164 for i = 1:NSectors
0165 j = findrowindex([i Mag], VCMDev);
0166 if ~isempty(j)
0167 k = min(find(BPMyDev(:,1)==i));
0168 S = [S [Sy(k:end, j); Sy(1:k-1, j)]];
0169 P = [P [BPMys(k:end); BPMys(1:k-1)+L]-BPMys(k)+BPMys(1)];
0170 end
0171 end
0172
0173 subplot(NVCMperSector, 1, Mag);
0174 if isempty(S)
0175 plot(BPMys, NaN*ones(size(BPMys)));
0176 else
0177 plot(P, S);
0178 end
0179 ylabel(sprintf('Mag #%d', Mag), 'FontSize', FontSize);
0180 end
0181
0182 subplot(NVCMperSector,1,1);
0183 title(sprintf('Vertical Corrector Magnet Response (%s)', XUnitsString), 'FontSize', FontSize);
0184
0185 subplot(NVCMperSector,1,NVCMperSector);
0186 xlabel('BPM Position [meters]', 'FontSize', FontSize);
0187 if isfield(R(1,1), 'TimeStamp')
0188 addlabel(1,0,sprintf('%s', datestr(R(1,1).TimeStamp)));
0189 end
0190 orient tall
0191
0192