source: MML/trunk/machine/SOLEIL/StorageRing/bpm/getz.m @ 17

Last change on this file since 17 was 17, checked in by zhangj, 10 years ago

To have a stable version on the server.

  • Property svn:executable set to *
File size: 2.4 KB
Line 
1function [AM, tout, DataTime, ErrorFlag] = getz(varargin)
2%getz - Returns the vertical orbit
3%  [AM, tout, DataTime]  = getz(DeviceList, t, FreshDataFlag, TimeOutPeriod)
4%         or
5%  [AM, tout, DataTime]  = getz(DataStructure, t, FreshDataFlag, TimeOutPeriod)
6%
7%  INPUTS
8%  1. DeviceList or DataStructure  (see help getpv)
9%  2. t  (see help getpv)
10%  3. FreshDataFlag  (see help getpv)
11%  4. TimeOutPeriod  (see help getpv)
12%  5. 'Struct' will return a data structure
13%     'Numeric' will return a vector output {default}
14%  6. 'Archive' will save a BPM data structure to \<DataRoot>\BPM\
15%      with filename BPMz<Date><Time>.mat
16%
17%  OUTPUTS
18%  1. AM = orbit vector or data structure
19%  2. tout  (see help getpv)
20%  3. DataTime
21%  4. ErrorFlag  (see help getpv)
22%
23%  NOTE
24%  1. 'Struct', 'Numeric', and 'Archive' are not case sensitive
25%  2. All inputs are optional
26%
27%  EXAMPLE
28%  1. <a href="matlab: plot(getspos(getvbpmfamily),getz); xlabel('BPM Position [meters]'); ylabel('Vertical Orbit');">plot(getz);</a>
29%
30%  See also getx, getbpm, getam, getpv
31
32%
33%  Written by Gregory J. Portmann
34
35Family = 'BPMz'; %getvbpmfamily; % Too slow with generic name > 0.3 s
36
37
38% Get input flags
39StructOutputFlag = 0;
40ArchiveFlag = 0;
41for i = length(varargin):-1:1
42    if isstr(varargin{i})
43        if strcmpi(varargin{i},'struct')
44            StructOutputFlag = 1;
45            %varargin(i) = [];
46        elseif strcmpi(varargin{i},'numeric')
47            StructOutputFlag = 0;
48            %varargin(i) = [];
49        elseif strcmpi(varargin{i},'archive')
50            ArchiveFlag = 1;
51            varargin(i) = [];
52        end
53    end
54end
55
56
57% Get data
58if isempty(varargin)
59    [AM, tout, DataTime, ErrorFlag] = getpv(Family, 'Monitor');
60elseif isstruct(varargin{1})
61    [AM, tout, DataTime, ErrorFlag] = getpv(varargin{:});
62else
63    [AM, tout, DataTime, ErrorFlag] = getpv(Family, 'Monitor', varargin{:});
64end
65
66if StructOutputFlag
67    % Structure output
68    AM.CreatedBy = 'getz';
69    AM.DataDescriptor = 'Vertical Orbit';
70end
71
72
73% Archive data structure
74if ArchiveFlag
75    DirStart = pwd;
76    FileName = appendtimestamp([getfamilydata('Default', 'BPMArchiveFile') 'z'], clock);
77    DirectoryName = getfamilydata('Directory','BPMData');
78    if isempty(DirectoryName)
79        DirectoryName = [getfamilydata('Directory','DataRoot') 'BPM\'];
80    end
81    [DirectoryName, ErrorFlag] = gotodirectory(DirectoryName);
82    BPMyData = getz('struct');
83    save(FileName, 'BPMyData');
84    cd(DirStart);
85end
Note: See TracBrowser for help on using the repository browser.