source: MML/trunk/machine/SOLEIL/StorageRing/insertions/idDownloadFFWDTableStructureOfOneCorrectorFromDevice.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: 3.2 KB
Line 
1function FFWDTableStructure=idDownloadFFWDTableStructureOfOneCorrectorFromDevice(idName, CorrectorName, idMode)
2%% Written by F. Briquez 30/03/2011
3% 1) Inputs : idName : such as 'HU36_SIRIUS'
4%           : CorrectorName : 'CHE', 'CHS', 'CVE' or 'CVS'
5%           : idMode : 'ii', 'x', 'i2' or 'x2' for parallel or anti-parallel normal/advanced modes.
6%               (Not case-sensitive)
7% 2) Output : Structure with fields :
8%               - vPhases       : 1xNphases vector containing phase values
9%               - vGaps         : 1xNgaps vector containing gap values
10%               - Table         : NphasesxNgaps matrix containing correction current values
11%               - TableWithArgs : (Nphases+1)x(Ngaps+1) matrix containing
12%                                   correction current values, with headers
13%               - idName        : idName
14%               - CorrectorName : CorrectorName
15%               - idMode        : idMode
16% 3) Returns empty structure (0x0 without field) in case of inexisting file
17%    or wrong input.
18
19%% Create empty structure
20    FFWDTableStructure=struct;
21
22%% Check the name of ID
23    Directory=idGetFFWDTableDirectory(idName);
24    if (isempty(Directory))
25            fprintf ('Error in ''idDownloadFFWDTableStructureOfOneCorrectorFromDevice'' : wrong idName ''%s''\n', idName);
26            return
27    end
28
29%% Check the corrector name
30    if (strcmpi(CorrectorName, 'CVE')==0&&strcmpi(CorrectorName, 'CHE')==0&&strcmpi(CorrectorName, 'CVS')==0&&strcmpi(CorrectorName, 'CHS')==0)
31        fprintf('Error in ''idDownloadFFWDTableStructureOfOneCorrectorFromDevice'' : Wrong corrector name\n')
32        return
33    end
34
35%% Check the mode of ID
36    if strcmpi(idMode, 'II')
37    %     idMode='PARALLEL';
38    elseif strcmpi(idMode, 'X')
39    %     idMode='ANTIPARALLEL';
40    elseif strcmpi(idMode, 'I2')
41    %     idMode='PARALLEL 2';
42    elseif strcmpi(idMode, 'X2')
43    %     idMode='ANTIPARALLEL 2';
44    else fprintf('Error in ''idDownloadFFWDTableStructureOfOneCorrectorFromDevice'' : Wrong mode. It should be ''II'', ''X'', ''I2'' or ''X2''\n')
45        return
46    end
47
48%% Check that FFWD table file exists
49    FileFullName=idGetFFWDTableFullFileName(idName, CorrectorName, idMode);
50
51    if (exist(FileFullName, 'file')~=2)
52        fprintf('Error in ''idDownloadFFWDTableStructureOfOneCorrectorFromDevice'' : could not find table file ''%s''\n', FileFullName);
53        return
54    end
55
56%% Extracts data from FFWD table file and puts in output structure fields
57    FFWDTableWithArgs=load('-ascii', FileFullName);
58
59    NumberOfPhaseValues=size(FFWDTableWithArgs, 2);
60    NumberOfGapValues=size(FFWDTableWithArgs, 1);
61    FFWDTable=FFWDTableWithArgs(2:NumberOfGapValues, 2:NumberOfPhaseValues);
62    vPhases=FFWDTableWithArgs(1,2:NumberOfPhaseValues);
63    vGaps=FFWDTableWithArgs(2:NumberOfGapValues, 1);
64    vPhases=transpose(vPhases);
65
66    FFWDTableStructure=idGetFFWDTableStructureFromTable(idName, FFWDTable, vPhases, vGaps, idMode, CorrectorName);
67   
68%     FFWDTableStructure.vPhases=vPhases;
69%     FFWDTableStructure.vGaps=vGaps;
70%     FFWDTableStructure.Table=FFWDTable;
71%     FFWDTableStructure.TableWithArgs=FFWDTableWithArgs;
72%     FFWDTableStructure.idName=idName;
73%     FFWDTableStructure.CorrectorName=CorrectorName;
74%     FFWDTableStructure.idMode=idMode;
75    return
76end
Note: See TracBrowser for help on using the repository browser.