Home > mml > quadgetdata.m

quadgetdata

PURPOSE ^

QUADGETDATA - Collect the date from a quadrupole center run.

SYNOPSIS ^

function [X, Y, BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily, DateMatX, DateMatY] = quadgetdata(DirName, PlotFlag)

DESCRIPTION ^

QUADGETDATA - Collect the date from a quadrupole center run.
              When all the quadrupole center data files are stored in a directory this function
              will go through all the files and pull out some of the important information.

  [X, Y, BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily, XfileDate, YfilesDate] = quadgetdata(DirName)

  INPUTS
  1. DirName - Directory name to look for quadrupole center files  
               [] to browse {Default}
  2. PlotFlag - 0 to just get data without plotting results, else, plot results
  
  OUTPUTS
  1. X - Horizontal output matrix (format below)
  2. Y - Vertical output matrix (format below)

             1&2     3       4        5     6       7         8         9
  Output = [BPMDev Center CenterSTD BPMpos DCCT BPMATIndex Quadpos QuadATIndex]

  3-6. BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily - Family name for each center measurement
  7-8. XfileDate, YfilesDate - Date string for the file name

  Written by Greg Portmann

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [X, Y, BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily, DateMatX, DateMatY] = quadgetdata(DirName, PlotFlag)
0002 %QUADGETDATA - Collect the date from a quadrupole center run.
0003 %              When all the quadrupole center data files are stored in a directory this function
0004 %              will go through all the files and pull out some of the important information.
0005 %
0006 %  [X, Y, BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily, XfileDate, YfilesDate] = quadgetdata(DirName)
0007 %
0008 %  INPUTS
0009 %  1. DirName - Directory name to look for quadrupole center files
0010 %               [] to browse {Default}
0011 %  2. PlotFlag - 0 to just get data without plotting results, else, plot results
0012 %
0013 %  OUTPUTS
0014 %  1. X - Horizontal output matrix (format below)
0015 %  2. Y - Vertical output matrix (format below)
0016 %
0017 %             1&2     3       4        5     6       7         8         9
0018 %  Output = [BPMDev Center CenterSTD BPMpos DCCT BPMATIndex Quadpos QuadATIndex]
0019 %
0020 %  3-6. BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily - Family name for each center measurement
0021 %  7-8. XfileDate, YfilesDate - Date string for the file name
0022 %
0023 %  Written by Greg Portmann
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             %Files(i).name
0059 
0060             % Old middle layer
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                 % New middle layer
0090                 q = QMS;
0091 
0092                 %fprintf('   %d.  %s(%d,%d)\n', i, q.QuadFamily, q.QuadDev);
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     % Plot data
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

Generated on Mon 21-May-2007 15:29:18 by m2html © 2003