source: MML/trunk/machine/SOLEIL/StorageRing/bpm/get_bpm_offsets.m

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

To have a stable version on the server.

  • Property svn:executable set to *
File size: 4.6 KB
Line 
1function [libera_RF_offset,block_offset,BBA_offset,survey_offset]=get_bpm_offsets(dev)
2
3X_offset_BBA=0;
4Z_offset_BBA=0;
5libera_RF_offset=0;
6block_offset=0;
7survey_offset=0;
8increment=1;
9Correspondance=tango_get_db_property('BPM','DeviceParameters');
10block_table=tango_get_db_property('BPM','BlockParameters');
11libera_table=tango_get_db_property('BPM','HwParameters');
12       for i=1:1:size(Correspondance,2)
13            index=regexpi(Correspondance{i},dev);     
14            if isempty(index)==0
15                separator=regexpi(Correspondance{i},':'); 
16                BPM_name=Correspondance{i}(1:separator(1)-1);
17                block_name=Correspondance{i}(separator(1)+1:separator(2)-1);
18                libera_name=Correspondance{i}(separator(2)+1:size(Correspondance{i},2));
19               for j=1:1:size(block_table,2)
20                    index_block=regexpi(block_table{j},[block_name,':']);
21                    if isempty(index_block)==0
22                        separator=regexpi(block_table{j},':'); 
23                        Block_Ka=str2num(block_table{j}(separator(3)+1:separator(4)-1));
24                        Block_Kb=str2num(block_table{j}(separator(4)+1:separator(5)-1));
25                        Block_Kc=str2num(block_table{j}(separator(5)+1:separator(6)-1));
26                        Block_Kd=str2num(block_table{j}(separator(6)+1:separator(7)-1));
27                       
28                        X_survey_offset=str2num(block_table{j}(separator(7)+1:separator(8)-1));
29                        Z_survey_offset=str2num(block_table{j}(separator(9)+1:separator(10)-1));
30                        X_offset_BBA=str2num(block_table{j}(separator(8)+1:separator(9)-1));
31                        Z_offset_BBA=str2num(block_table{j}(separator(10)+1:separator(11)-1));
32                        BPM=BPM_name;
33                    end
34                end
35                for j=1:1:size(libera_table,2)
36                    index_libera=regexpi(libera_table{j},[libera_name,':']);
37                    if isempty(index_libera)==0
38                        separator=regexpi(libera_table{j},':'); 
39                        libera_Ka=str2num(libera_table{j}(separator(2)+1:separator(3)-1));
40                        libera_Kb=str2num(libera_table{j}(separator(3)+1:separator(4)-1));
41                        libera_Kc=str2num(libera_table{j}(separator(4)+1:separator(5)-1));
42                        libera_Kd=str2num(libera_table{j}(separator(5)+1:separator(6)-1));
43                       
44                     end
45                end
46            end
47       end
48K=11.4;
49BBA_offset(1)=X_offset_BBA;
50BBA_offset(2)=Z_offset_BBA;
51survey_offset(1)=X_survey_offset;
52survey_offset(2)=Z_survey_offset;
53block_offset(1)=K*(1/Block_Ka+1/Block_Kd-1/Block_Kb-1/Block_Kc)/(1/Block_Ka+1/Block_Kb+1/Block_Kc+1/Block_Kd);
54block_offset(2)=K*(1/Block_Ka+1/Block_Kb-1/Block_Kc-1/Block_Kd)/(1/Block_Ka+1/Block_Kb+1/Block_Kc+1/Block_Kd);
55block_offset(3)=Block_Ka;
56block_offset(4)=Block_Kb;
57block_offset(5)=Block_Kc;
58block_offset(6)=Block_Kd;
59libera_RF_offset(1)=K*(1/libera_Ka+1/libera_Kd-1/libera_Kb-1/libera_Kc)/(1/libera_Ka+1/libera_Kb+1/libera_Kc+1/libera_Kd);
60libera_RF_offset(2)=K*(1/libera_Ka+1/libera_Kb-1/libera_Kc-1/libera_Kd)/(1/libera_Ka+1/libera_Kb+1/libera_Kc+1/libera_Kd);
61libera_RF_offset(3)=libera_Ka;
62libera_RF_offset(4)=libera_Kb;
63libera_RF_offset(5)=libera_Kc;
64libera_RF_offset(6)=libera_Kd;
65% block_offset(1)=K*(Block_Ka+Block_Kc-Block_Kb-Block_Kd)/(Block_Ka+Block_Kb+Block_Kc+Block_Kd);
66% block_offset(2)=K*(Block_Ka+Block_Kb-Block_Kc-Block_Kd)/(Block_Ka+Block_Kb+Block_Kc+Block_Kd);
67% libera_RF_offset(1)=K*(libera_Ka+libera_Kc-libera_Kb-libera_Kd)/(libera_Ka+libera_Kb+libera_Kc+libera_Kd);
68% libera_RF_offset(2)=K*(libera_Ka+libera_Kb-libera_Kc-libera_Kd)/(libera_Ka+libera_Kb+libera_Kc+libera_Kd);
69      %end
70% switch dev
71%     case 'all'
72%  for i=1:1:size(Correspondance,2)
73%      index=regexpi(Correspondance{i},'ANS-C');     
74%     if isempty(index)==0
75%         BPM_name=Correspondance{i}(index:index+15);
76%         block_name=Correspondance{i}(index+17:index+24);
77%   for j=1:1:size(block_table,2)
78%    index=regexpi(block_table{j},[block_name,':']);
79%    if isempty(index)==0
80%         separator=regexpi(block_table{j},':');             
81%         X_offset_BBA(increment)=str2num(block_table{j}(separator(8)+1:separator(9)-1));
82%         Z_offset_BBA(increment)=str2num(block_table{j}(separator(10)+1:separator(11)-1));
83%         BPM(increment,:)=BPM_name;
84%         increment=increment+1;
85%    end
86%   end
87%
88%   otherwise       
89 
90offsets_X = [X_offset_BBA(2:end) X_offset_BBA(1)]';
91offsets_Z = [Z_offset_BBA(2:end) Z_offset_BBA(1)]';
92
93
94X_offset=block_offset(1)+BBA_offset(1)+survey_offset(1);
95Z_offset=block_offset(2)+BBA_offset(2)+survey_offset(2);
Note: See TracBrowser for help on using the repository browser.