Home > pubtools > LatticeTuningFunctions > errors > SetLargeErrorList.m

SetLargeErrorList

PURPOSE ^

SYNOPSIS ^

function rerr=SetLargeErrorList(r0,seed,Nsig,factorerr,errnumber)

DESCRIPTION ^

 function to set a given error list.

see also: ApplyErrorsRand ApplyErrorsWave SetESRFAlgeAlignmentError

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function rerr=SetLargeErrorList(r0,seed,Nsig,factorerr,errnumber)
0002 %
0003 % function to set a given error list.
0004 %
0005 %see also: ApplyErrorsRand ApplyErrorsWave SetESRFAlgeAlignmentError
0006 
0007 if nargin==4
0008     errnumber=1:8; %errors to apply from the list
0009 end
0010 
0011 if nargin==3
0012     factorerr=1; %multiply errors by this amount
0013     errnumber=[2:7,9]; %multiply errors by this amount
0014     
0015     disp('100% TDS list errors + current positions ALGE NO bpm err')
0016 end
0017 
0018 if factorerr==0
0019     factorerr=1e-12; % errors not sharp zero
0020 end
0021 
0022 if seed~=0
0023     disp(['Setting Random Stream to seed: ' num2str(seed)]);
0024     % set seed
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 %% apply error wave
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);%findcells(r0,'Class','Quadrupole');
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);%findcells(r0,'Class','Quadrupole');
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);%findcells(r0,'Class','Quadrupole');
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 %% define random errors structure
0083 ie=1;
0084 errstruct=[];
0085 
0086 % %% GIRDERS (APPLY ALWAYS FIRST!)
0087 % indg=findcells(r0,'FamName','GS');
0088 % errstruct(ie).indx=indg;
0089 % errstruct(ie).type='gx.gy';
0090 % errstruct(ie).sigma=100*1e-6;
0091 % ie=ie+1;
0092 % errstruct(ie).indx=indg;
0093 % errstruct(ie).type='gpsi';
0094 % errstruct(ie).sigma=200*1e-6;
0095 % ie=ie+1;
0096 
0097 %% DIPOLES
0098 
0099 if find(errnumber==2)
0100     
0101     % % DL
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;%500*1e-6;
0114     ie=ie+1;
0115 %     errstruct(ie).indx=indqm;
0116 %     errstruct(ie).type='s';
0117 %     errstruct(ie).sigma=1000*1e-6;
0118 %     ie=ie+1;
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     % DQ
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;%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;%200*1e-6;
0141     ie=ie+1;
0142 %     errstruct(ie).indx=indqm;
0143 %     errstruct(ie).type='s';
0144 %     errstruct(ie).sigma=500*1e-6;
0145 %     ie=ie+1;
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 %% QUADRUPOLES
0160 
0161 if find(errnumber==4)
0162     
0163     % moderate gradient quadrupoles
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;%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 %     errstruct(ie).indx=indqm;
0174 %     errstruct(ie).type='s';
0175 %     errstruct(ie).sigma=500*1e-6;
0176 %     ie=ie+1;
0177     errstruct(ie).indx=indqm;
0178     errstruct(ie).type='psi';
0179     errstruct(ie).sigma=150*1e-6;%200*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     %high gradeint quadrupoles
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;%70*1e-6;
0198     ie=ie+1;
0199 %     errstruct(ie).indx=indqm;
0200 %     errstruct(ie).type='s';
0201 %     errstruct(ie).sigma=500*1e-6;
0202 %     ie=ie+1;
0203     errstruct(ie).indx=indqm;
0204     errstruct(ie).type='psi';
0205     errstruct(ie).sigma=150*1e-6;%200*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 %% SEXTUPOLES
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;%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 %     errstruct(ie).indx=inds;
0227 %     errstruct(ie).type='s';
0228 %     errstruct(ie).sigma=1000*1e-6;
0229 %     ie=ie+1;
0230     errstruct(ie).indx=inds;
0231     errstruct(ie).type='psi';
0232     errstruct(ie).sigma=200*1e-6;%500*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 %% OCTUPOLES
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 %     errstruct(ie).indx=indo;
0251 %     errstruct(ie).type='s';
0252 %     errstruct(ie).sigma=1000*1e-6;
0253 %     ie=ie+1;
0254     errstruct(ie).indx=indo;
0255     errstruct(ie).type='psi';
0256     errstruct(ie).sigma=200*1e-6;%500*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     %% set errors
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 % figure;%('visible','off');
0308 % atplot(rerr,@pltmisalignments);
0309 %
0310 % labfig=['_seed' num2str(seed) '_Nsig' num2str(Nsig) '_scal' num2str(factorerr)];
0311 %
0312 % saveas(gca,['Errors' labfig '.fig']);
0313 %
0314 % try
0315 %     export_fig(['Errors' labfig '.png'],'-transparent');
0316 % catch
0317 %     saveas(gca,['Errors' labfig '.png']);
0318 % end
0319 
0320 return

Generated on Thu 24-Aug-2017 18:47:33 by m2html © 2005