0001 function [X, Y, BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily, DateMatX, DateMatY] = quadgetdata(DirName, PlotFlag)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 if nargin == 0
0027 DirName = '';
0028 end
0029
0030 if nargin < 2
0031 PlotFlag = 1;
0032 end
0033
0034 if isempty(DirName)
0035 DirName = [getfamilydata('Directory', 'DataRoot'),'QMS\'];
0036 DirName = uigetdir(DirName, 'Select directory where the QMS data are located');
0037 end
0038
0039 StartDir = pwd;
0040 cd(DirName);
0041
0042 Files = dir;
0043
0044 X = [];
0045 Y = [];
0046 BPMxFamily = [];
0047 QUADxFamily = [];
0048 BPMyFamily = [];
0049 QUADyFamily = [];
0050 DateMatX = [];
0051 DateMatY = [];
0052 for i = 1:length(Files)
0053 if exist(Files(i).name) == 2
0054 clear QMS DelHCM DelVCM
0055 try
0056 load(Files(i).name)
0057
0058
0059
0060
0061 if exist('DelHCM')
0062 clear q
0063 [q.Center, q.CenterSTD, ErrorString] = quadhplt(Files(i).name);
0064 q.BPMFamily = 'BPMx';
0065 q.BPMDev = BPMnum + [0 1];
0066 q.DCCT = NaN;
0067 [q.QuadFamily, q.QuadDev] = bpm2quad(q.BPMFamily, q.BPMDev);
0068
0069 X = [X; q.BPMDev q.Center q.CenterSTD getspos(q.BPMFamily, q.BPMDev) min(q.DCCT) family2atindex(q.BPMFamily, q.BPMDev) getspos(q.QuadFamily, q.QuadDev) family2atindex(q.QuadFamily, q.QuadDev)];
0070 BPMxFamily = strvcat(BPMxFamily, q.BPMFamily);
0071 QUADxFamily = strvcat(QUADxFamily, q.QuadFamily);
0072 DateMatX = [DateMatX; Files(i).date];
0073
0074 elseif exist('DelVCM')
0075 clear q
0076 [q.Center, q.CenterSTD, ErrorString] = quadvplt(Files(i).name);
0077 q.BPMFamily = 'BPMy';
0078 q.BPMDev = BPMnum + [0 1];
0079 q.DCCT = NaN;
0080 [q.QuadFamily, q.QuadDev] = bpm2quad(q.BPMFamily, q.BPMDev);
0081
0082 Y = [Y; q.BPMDev q.Center q.CenterSTD getspos(q.BPMFamily, q.BPMDev) min(q.DCCT) family2atindex(q.BPMFamily, q.BPMDev) getspos(q.QuadFamily, q.QuadDev) family2atindex(q.QuadFamily, q.QuadDev)];
0083 BPMyFamily = strvcat(BPMyFamily, q.BPMFamily);
0084 QUADyFamily = strvcat(QUADyFamily, q.QuadFamily);
0085 DateMatY = [DateMatY; Files(i).date];
0086
0087 else
0088
0089
0090 q = QMS;
0091
0092
0093
0094 if q.QuadPlane == 1
0095 X = [X; q.BPMDev q.Center q.CenterSTD getspos(q.BPMFamily, q.BPMDev) min(q.DCCT) family2atindex(q.BPMFamily, q.BPMDev) getspos(q.QuadFamily, q.QuadDev) family2atindex(q.QuadFamily, q.QuadDev)];
0096 BPMxFamily = strvcat(BPMxFamily, q.BPMFamily);
0097 QUADxFamily = strvcat(QUADxFamily, q.QuadFamily);
0098 DateMatX = [DateMatX; Files(i).date];
0099 else
0100 Y = [Y; q.BPMDev q.Center q.CenterSTD getspos(q.BPMFamily, q.BPMDev) min(q.DCCT) family2atindex(q.BPMFamily, q.BPMDev) getspos(q.QuadFamily, q.QuadDev) family2atindex(q.QuadFamily, q.QuadDev)];
0101 BPMyFamily = strvcat(BPMyFamily, q.BPMFamily);
0102 QUADyFamily = strvcat(QUADyFamily, q.QuadFamily);
0103 DateMatY = [DateMatY; Files(i).date];
0104 end
0105 if any(q.DCCT<5)
0106 fprintf(' %s(%d,%d) (%s) shows a beam less than 5 mamps during the experiment!\n', q.BPMFamily, q.BPMDev, Files(i).name);
0107 end
0108 end
0109 catch
0110 end
0111 end
0112 end
0113
0114 [DateMatX, iX] = sortrows(DateMatX);
0115 [DateMatY, iY] = sortrows(DateMatY);
0116 X = X(iX,:);
0117 Y = Y(iY,:);
0118 BPMxFamily = BPMxFamily(iX,:);
0119 BPMyFamily = BPMyFamily(iY,:);
0120 QUADxFamily = QUADxFamily(iX,:);
0121 QUADyFamily = QUADyFamily(iY,:);
0122
0123 cd(StartDir);
0124
0125
0126 if PlotFlag
0127
0128
0129 L = getfamilydata('Circumference');
0130
0131 figure;
0132 subplot(2,1,1);
0133 errorbar(X(:,5), X(:,3), X(:,4), '.b');
0134 ylabel('Horizontal [mm]');
0135 xaxis([0 L]);
0136 title('BPM Offset');
0137
0138 subplot(2,1,2);
0139 errorbar(Y(:,5), Y(:,3), Y(:,4), '.b');
0140 xlabel('BPM Position [meters]');
0141 ylabel('Vertical [mm]');
0142 xaxis([0 L]);
0143
0144 end