0001 function rerr=SetLargeErrorList(r0,seed,Nsig,factorerr,errnumber)
0002
0003
0004
0005
0006
0007 if nargin==4
0008 errnumber=1:8;
0009 end
0010
0011 if nargin==3
0012 factorerr=1;
0013 errnumber=[2:7,9];
0014
0015 disp('100% TDS list errors + current positions ALGE NO bpm err')
0016 end
0017
0018 if factorerr==0
0019 factorerr=1e-12;
0020 end
0021
0022 if seed~=0
0023 disp(['Setting Random Stream to seed: ' num2str(seed)]);
0024
0025 s = RandStream('mcg16807','Seed',seed);
0026 RandStream.setGlobalStream(s);
0027 else
0028 disp('Using previously set random stream')
0029 end
0030
0031 rerr=r0;
0032
0033
0034
0035 if find(errnumber==1)
0036
0037 ie=1;
0038
0039 wltouse=1:0.5:3;
0040 amplx=factorerr*0.6e-3;
0041 amplY=factorerr*0.6e-3;
0042 amplpsi=0*factorerr*0.6e-3;
0043
0044 W=findspos(r0,length(r0)+1)./wltouse;
0045
0046 A=amplx/length(W)*randn(size(W));
0047 errwavestruct(ie).indx=1:length(r0);
0048 errwavestruct(ie).type='x';
0049 errwavestruct(ie).A=A(end:-1:1);
0050 errwavestruct(ie).W=W;
0051 ie=ie+1;
0052
0053 A=amplY/length(W)*randn(size(W));
0054 errwavestruct(ie).indx=1:length(r0);
0055 errwavestruct(ie).type='y';
0056 errwavestruct(ie).A=A(end:-1:1);
0057 errwavestruct(ie).W=W;
0058 ie=ie+1;
0059
0060 A=amplpsi/length(W)*randn(size(W));
0061 errwavestruct(ie).indx=1:length(r0);
0062 errwavestruct(ie).type='psi';
0063 errwavestruct(ie).A=A(end:-1:1);
0064 errwavestruct(ie).W=W;
0065 ie=ie+1;
0066
0067 magindex=arrayfun(@(a)a.indx,errwavestruct,'un',0);
0068 type=arrayfun(@(a)a.type,errwavestruct,'un',0);
0069 A=arrayfun(@(a)a.A,errwavestruct,'un',0);
0070 W=arrayfun(@(a)a.W,errwavestruct,'un',0);
0071
0072 rerr=ApplyErrorWave(...
0073 rerr,...
0074 magindex,...
0075 findcells(r0,'Class','Monitor'),...
0076 W,...
0077 A,...
0078 type);
0079
0080 end
0081
0082
0083 ie=1;
0084 errstruct=[];
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099 if find(errnumber==2)
0100
0101
0102 indqm=find(atgetcells(r0,'FamName','DL\w*'));
0103 errstruct(ie).indx=indqm;
0104 errstruct(ie).type='x';
0105 errstruct(ie).sigma=100*1e-6;
0106 ie=ie+1;
0107 errstruct(ie).indx=indqm;
0108 errstruct(ie).type='y';
0109 errstruct(ie).sigma=100*1e-6;
0110 ie=ie+1;
0111 errstruct(ie).indx=indqm;
0112 errstruct(ie).type='psi';
0113 errstruct(ie).sigma=200*1e-6;
0114 ie=ie+1;
0115
0116
0117
0118
0119 errstruct(ie).indx=indqm;
0120 errstruct(ie).type='dpb1';
0121 errstruct(ie).sigma=10*1e-4;
0122 ie=ie+1;
0123
0124 end
0125
0126 if find(errnumber==3)
0127
0128
0129 indqm=find(atgetcells(r0,'FamName','DQ\w*'));
0130 errstruct(ie).indx=indqm;
0131 errstruct(ie).type='x';
0132 errstruct(ie).sigma=70*1e-6;
0133 ie=ie+1;
0134 errstruct(ie).indx=indqm;
0135 errstruct(ie).type='y';
0136 errstruct(ie).sigma=50*1e-6;
0137 ie=ie+1;
0138 errstruct(ie).indx=indqm;
0139 errstruct(ie).type='psi';
0140 errstruct(ie).sigma=150*1e-6;
0141 ie=ie+1;
0142
0143
0144
0145
0146
0147 errstruct(ie).indx=indqm;
0148 errstruct(ie).type='dpb1';
0149 errstruct(ie).sigma=10*1e-4;
0150 ie=ie+1;
0151
0152 errstruct(ie).indx=indqm;
0153 errstruct(ie).type='dpb2';
0154 errstruct(ie).sigma=5*1e-4;
0155 ie=ie+1;
0156
0157 end
0158
0159
0160
0161 if find(errnumber==4)
0162
0163
0164 indqm=find(atgetcells(r0,'FamName','Q[F-D][1-5]\w*'));
0165 errstruct(ie).indx=indqm;
0166 errstruct(ie).type='x';
0167 errstruct(ie).sigma=100*1e-6;
0168 ie=ie+1;
0169 errstruct(ie).indx=indqm;
0170 errstruct(ie).type='y';
0171 errstruct(ie).sigma=85*1e-6;
0172 ie=ie+1;
0173
0174
0175
0176
0177 errstruct(ie).indx=indqm;
0178 errstruct(ie).type='psi';
0179 errstruct(ie).sigma=150*1e-6;
0180 ie=ie+1;
0181 errstruct(ie).indx=indqm;
0182 errstruct(ie).type='dpb2';
0183 errstruct(ie).sigma=5*1e-4;
0184 ie=ie+1;
0185 end
0186
0187 if find(errnumber==5)
0188
0189
0190 indqm=[find(atgetcells(r0,'FamName','Q[F-D][6-8]\w*'))];
0191 errstruct(ie).indx=indqm;
0192 errstruct(ie).type='x';
0193 errstruct(ie).sigma=50*1e-6;
0194 ie=ie+1;
0195 errstruct(ie).indx=indqm;
0196 errstruct(ie).type='y';
0197 errstruct(ie).sigma=70*1e-6;
0198 ie=ie+1;
0199
0200
0201
0202
0203 errstruct(ie).indx=indqm;
0204 errstruct(ie).type='psi';
0205 errstruct(ie).sigma=150*1e-6;
0206 ie=ie+1;
0207 errstruct(ie).indx=indqm;
0208 errstruct(ie).type='dpb2';
0209 errstruct(ie).sigma=5*1e-4;
0210 ie=ie+1;
0211 end
0212
0213
0214
0215 if find(errnumber==6)
0216
0217 inds=find(atgetcells(r0,'Class','Sextupole'));
0218 errstruct(ie).indx=inds;
0219 errstruct(ie).type='x';
0220 errstruct(ie).sigma=70*1e-6;
0221 ie=ie+1;
0222 errstruct(ie).indx=inds;
0223 errstruct(ie).type='y';
0224 errstruct(ie).sigma=50*1e-6;
0225 ie=ie+1;
0226
0227
0228
0229
0230 errstruct(ie).indx=inds;
0231 errstruct(ie).type='psi';
0232 errstruct(ie).sigma=200*1e-6;
0233 ie=ie+1;
0234 errstruct(ie).indx=inds;
0235 errstruct(ie).type='dpb3';
0236 errstruct(ie).sigma=35*1e-4;
0237 ie=ie+1;
0238
0239 end
0240
0241
0242
0243 if find(errnumber==7)
0244
0245 indo=find(atgetcells(r0,'FamName','O[JF]\w*'));
0246 errstruct(ie).indx=indo;
0247 errstruct(ie).type='x.y';
0248 errstruct(ie).sigma=100*1e-6;
0249 ie=ie+1;
0250
0251
0252
0253
0254 errstruct(ie).indx=indo;
0255 errstruct(ie).type='psi';
0256 errstruct(ie).sigma=200*1e-6;
0257 ie=ie+1;
0258 errstruct(ie).indx=indo;
0259 errstruct(ie).type='dpb4';
0260 errstruct(ie).sigma=50*1e-4;
0261 ie=ie+1;
0262
0263 end
0264
0265 if find(errnumber==8)
0266 indm=find(atgetcells(r0,'Class','Monitor'));
0267 errstruct(ie).indx=indm;
0268 errstruct(ie).type='bpm';
0269 errstruct(ie).sigma=50*1e-6;
0270 ie=ie+1;
0271 end
0272
0273 if find(errnumber==9)
0274 algedir='/mntdirect/_users/liuzzo/Matlab_Work/ATWORK/routines/esrfupgrade-gitrepo';
0275 algeactfile=fullfile(algedir,'Actual_Position_Simu.xlsx');
0276 rerr=SetESRFAlgeAlignmentError(rerr,algeactfile,'',seed);
0277 end
0278
0279 if find(errnumber==10)
0280 algedir='/mntdirect/_users/liuzzo/Matlab_Work/ATWORK/routines/esrfupgrade-gitrepo';
0281 algeactfile=fullfile(algedir,'Nominal_Position_Simu.xlsx');
0282 rerr=SetESRFAlgeAlignmentError(rerr,algeactfile,'',seed);
0283 end
0284
0285
0286 if ~isempty(errstruct)
0287
0288
0289 magindex=arrayfun(@(a)a.indx,errstruct,'un',0);
0290 type=arrayfun(@(a)a.type,errstruct,'un',0);
0291 sigma=arrayfun(@(a)a.sigma.*factorerr,errstruct,'un',0);
0292
0293 rerr=ApplyErrorRand(...
0294 rerr,...
0295 magindex,...
0296 findcells(r0,'Class','Monitor'),...
0297 seed,...
0298 sigma,...
0299 Nsig,...
0300 type);
0301
0302 end
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320 return