source: MML/trunk/machine/SOLEIL/StorageRing/bpm/gethbpmgroup.m @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 1.5 KB
Line 
1function [AM, tout, DataTime, ErrorFlag] = gethbpmgroup(varargin)
2%GETHBPMGROUP - Gets horizontal orbit read into valid BPMS using TANGO groups
3%
4%  INPUTS
5%  1. Familyname
6%  2. Field
7%  3. DeviceList - BPM devicelist
8%  4. time
9%
10%  OUTPUTS
11%  1. AM - horizontal beam position
12%
13% NOTES
14% First shot, Status flag
15%
16% See Also getvbpmgroup
17 
18
19%
20% Written by Laurent S. Nadolski
21
22t0 = clock;  % starting time for getting data
23DataTime = 0;
24ErrorFlag = 1;
25Field = 'Monitor';
26DeviceListTotal = family2dev('BPMx');
27
28if isempty(varargin)
29    DeviceList = DeviceListTotal;
30else
31    DeviceList = varargin{3};
32end
33
34GroupID = getfamilydata('BPMx', 'GroupId');
35
36R = tango_group_read_attributes(GroupID, {'XPosSA'}, 0);
37
38if tango_error == -1
39    tango_print_error_stack;
40    ErrorFlag = 1;
41    tout = etime(clock, t0);
42    return;
43else
44    if R.has_failed > 0
45        ErrorFlag = 1;
46        for k=1:length(R.dev_replies),
47            if R.dev_replies(k).has_failed
48                tango_print_error_stack_as_it_is(R.dev_replies(k).attr_values.error);
49            end
50        end
51        ErrorFlag = 1;
52        tout = etime(clock, t0);
53        %return;
54    end
55end
56
57% construct data
58for k = 1:length(R.dev_replies),
59    if ~R.dev_replies(k).has_failed
60        AM(k,1) = R.dev_replies(k).attr_values(1).value(1);
61    else
62        AM(k,1) = NaN;
63    end
64end
65
66tout = etime(clock, t0);
67DataTime = R.dev_replies(1).attr_values(1).time; %time when data was measured accordint to Tango system
68Status = findrowindex(DeviceList, DeviceListTotal);
69% keep only BPMs with status 1
70AM = AM(Status);
Note: See TracBrowser for help on using the repository browser.