source: MML/trunk/machine/SOLEIL/Booster/setoperationalmode.m @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 7.6 KB
Line 
1function setoperationalmode(ModeNumber)
2%SETOPERATIONALMODE - Switches between the various operational modes
3%  setoperationalmode(ModeNumber)
4%
5%  INPUTS
6%  1. ModeNumber = 1. 2.7391 GeV, multibunch
7%
8%                100. Laurent's Mode
9%
10%  See also aoinit, updateatindex, LT1init
11
12%
13% Written by Laurent S. Nadolski
14
15global THERING
16
17% Check if the AO exists
18checkforao;
19
20
21%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22% Accelerator Dependent Modes %
23%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24if nargin < 1
25    ModeNumber = [];
26end
27if isempty(ModeNumber)
28    ModeCell = {'2.7391 GeV, multibunch',  ...
29        'Laurent''s Mode'};
30    [ModeNumber, OKFlag] = listdlg('Name','SOLEIL','PromptString','Select the Operational Mode:', 'SelectionMode','single', 'ListString', ModeCell, 'ListSize', [450 200]);
31    if OKFlag ~= 1
32        fprintf('   Operational mode not changed\n');
33        return
34    elseif ModeNumber == 2
35        ModeNumber = 100;  % Laurent
36    end
37end
38
39
40%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41% Accelerator Data Structure %
42%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43AD = getad;
44AD.Machine = 'SOLEIL';            % Will already be defined if setpathmml was used
45AD.MachineType = 'StorageRing';   % Will already be defined if setpathmml was used
46AD.SubMachine  = 'Booster';       % Will already be defined if setpathmml was used
47AD.OperationalMode = '';          % Gets filled in later
48
49
50% Tune processor delay: delay required to wait
51% to have a fresh tune measurement after changing
52% a variable like the RF frequency.  Setpv will wait
53% 2.2 * TuneDelay to be guaranteed a fresh data point.
54AD.BPMDelay  = 0.25; % use [N, BPMDelay]=getbpmsaverages (AD.BPMDelay will disappear)
55AD.TuneDelay = 0.1;
56
57
58% SP-AM Error level
59% AD.ErrorWarningLevel = 0 -> SP-AM errors are Matlab errors {Default}
60%                       -1 -> SP-AM errors are Matlab warnings
61%                       -2 -> SP-AM errors prompt a dialog box
62%                       -3 -> SP-AM errors are ignored (ErrorFlag=-1 is returned)
63AD.ErrorWarningLevel = 0;
64
65%%%%%%%%%%%%%%%%%%%%%
66% Operational Modes %
67%%%%%%%%%%%%%%%%%%%%%
68
69% Mode setup variables (mostly path and file names)
70% AD.OperationalMode - String used in titles
71% ModeName - String used for mode directory name off DataRoot/MachineName
72% OpsFileExtension - string add to default file names
73
74if ModeNumber == 1
75    % Booster Nominal Lattice
76    AD.OperationalMode = '2.7391 GeV, multibunch';
77    AD.Energy = 2.7391; % Make sure this is the same as bend2gev at the production lattice!
78    ModeName = 'boosterreal';
79    OpsFileExtension = '_boosterreal';
80
81    % AT lattice
82    %AD.ATModel       = 'boostersteerer'; % lattice file
83    AD.ATModel = 'boosterreal';
84    eval(AD.ATModel);  %run model for compilersolamor2linb;
85
86    switch2hw;
87   
88elseif ModeNumber == 100
89    % User mode - High Tune, Top Off injection
90    error('To be completed');   
91
92else
93    error('Operational mode unknown');
94end
95
96
97
98% Set the AD directory path
99setad(AD);
100MMLROOT = setmmldirectories(AD.Machine, AD.SubMachine, ModeName, OpsFileExtension);
101MMLDATAROOT = getmmldataroot;
102AD = getad;
103
104% SOLEIL specific path changes
105
106 % Top Level Directories
107
108AD.Directory.DataRoot       = fullfile(MMLDATAROOT, 'measdata', 'SOLEIL', 'Boosterdata', filesep);
109AD.Directory.OpsData        = fullfile(MMLROOT, 'machine', 'SOLEIL', 'BoosterOpsData', filesep);
110AD.Directory.Lattice        = fullfile(MMLROOT, 'machine', 'SOLEIL', 'Booster', 'Lattices', filesep);
111AD.Directory.Orbit          = fullfile(MMLROOT, 'applications', 'orbit', filesep);
112
113% Data Archive Directories
114AD.Directory.BPMData        = fullfile(AD.Directory.DataRoot, 'BPM', filesep);
115AD.Directory.TuneData       = fullfile(AD.Directory.DataRoot, 'Tune', filesep);
116AD.Directory.ChroData       = fullfile(AD.Directory.DataRoot, 'Chromaticity', filesep);
117AD.Directory.DispData       = fullfile(AD.Directory.DataRoot, 'Dispersion', filesep);
118AD.Directory.ConfigData     = fullfile(MMLROOT, 'machine', 'SOLEIL', 'Booster', 'MachineConfig', filesep);
119AD.Directory.BumpData       = fullfile(AD.Directory.DataRoot, 'Bumps', filesep);
120AD.Directory.Archiving      = fullfile(AD.Directory.DataRoot, 'ArchivingData', filesep);
121AD.Directory.TurnByTurnTune = fullfile(AD.Directory.DataRoot, 'BPM', 'turnbyturntune');
122AD.Directory.Synchro        = fullfile(MMLROOT, 'machine', 'SOLEIL', 'common', 'synchro', filesep);
123
124% STANDALONE matlab applications
125AD.Directory.Standalone     = fullfile(MMLROOT, 'machine', 'SOLEIL', 'standalone_applications', filesep);
126
127% quick fix (dixit Alex)
128AD.Directory.Timing         = fullfile(MMLROOT, 'machine', 'SOLEIL', 'LT1', 'LT1data', 'Timing', filesep);
129
130%Response Matrix Directories
131AD.Directory.BPMResponse    = fullfile(AD.Directory.DataRoot, 'Response', 'BPM', filesep);
132AD.Directory.TuneResponse   = fullfile(AD.Directory.DataRoot, 'Response', 'Tune', filesep);
133AD.Directory.ChroResponse   = fullfile(AD.Directory.DataRoot, 'Response', 'Chrom', filesep);
134AD.Directory.DispResponse   = fullfile(AD.Directory.DataRoot, 'Response', 'Disp', filesep);
135
136%Default Data File Prefix
137AD.Default.BPMArchiveFile   = 'BPM';                %file in AD.Directory.BPM               orbit data
138AD.Default.TuneArchiveFile  = 'Tune';               %file in AD.Directory.Tune              tune data
139AD.Default.ChroArchiveFile  = 'Chro';               %file in AD.Directory.Chromaticity       chromaticity data
140AD.Default.DispArchiveFile  = 'Disp';               %file in AD.Directory.Dispersion       dispersion data
141AD.Default.CNFArchiveFile   = 'CNF';                %file in AD.Directory.CNF               configuration data
142AD.Default.QUADArchiveFile  = 'QuadBeta';           %file in AD.Directory.QUAD             betafunction for quadrupoles   
143
144%Default Response Matrix File Prefix
145AD.Default.BPMRespFile      = 'BPMRespMat';         %file in AD.Directory.BPMResponse       BPM response matrices
146AD.Default.TuneRespFile     = 'TuneRespMat';        %file in AD.Directory.TuneResponse      tune response matrices
147AD.Default.ChroRespFile     = 'ChroRespMat';        %file in AD.Directory.ChroResponse      chromaticity response matrices
148AD.Default.DispRespFile     = 'DispRespMat';        %file in AD.Directory.DispResponse      dispersion response matrices
149
150%Operational Files
151AD.OpsData.LatticeFile       = 'GoldenLattice';     %Golden Lattice File (setup for users)
152AD.OpsData.PhysDataFile      = 'GoldenPhysData';
153%AD.OpsData.BPMGoldenFile     = 'GoldenBPMOrbit';
154%AD.OpsData.BPMOffsetFile     = 'OffsetBPMOrbit';
155AD.OpsData.BPMSigmaFile      = 'BPMSigma';
156%AD.OpsData.TuneFile          = 'GoldenTune';
157%AD.OpsData.ChroFile          = 'GoldenChro';
158%AD.OpsData.DispFile          = 'GoldenDisp';
159
160%Operational Response Files
161AD.OpsData.BPMRespFile       = 'GoldenBPMResp';     
162AD.OpsData.TuneRespFile      = 'GoldenTuneResp';   
163AD.OpsData.ChroRespFile      = 'GoldenChroResp';
164AD.OpsData.DispRespFile      = 'GoldenDispResp';
165AD.OpsData.RespFiles         = {AD.OpsData.BPMRespFile,  ...
166                                AD.OpsData.TuneRespFile, ...
167                                AD.OpsData.ChroRespFile, ...
168                                AD.OpsData.DispRespFile};
169
170% Circumference
171AD.Circumference = findspos(THERING,length(THERING)+1);
172setad(AD);
173
174% Updates the AT indices in the MiddleLayer with the present AT lattice
175updateatindex;
176
177% Set the model energy
178setenergymodel(AD.Energy);
179
180
181% Momentum compaction factor
182MCF = getmcf('Model');
183if isnan(MCF)
184    AD.MCF = 0.0150; 
185    fprintf('   Model alpha calculation failed, middlelayer alpha set to  %f\n', AD.MCF);
186else
187    AD.MCF = MCF;
188    fprintf('   Middlelayer alpha set to %f (AT model).\n', AD.MCF);
189end
190setad(AD);
191
192
193fprintf('   lattice files have changed or if the AT lattice has changed.\n');
194fprintf('   Middlelayer setup for operational mode: %s\n', AD.OperationalMode);
195
196setad(orderfields(AD));
Note: See TracBrowser for help on using the repository browser.