0001 function updateatindex
0002
0003
0004
0005
0006
0007 global THERING
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 Indices = atindex(THERING);
0018
0019 AO = getao;
0020
0021
0022 try
0023 ifam = 'BPMx';
0024 AO.(ifam).AT.ATType = 'X';
0025 AO.(ifam).AT.ATIndex = Indices.BPM(:);
0026 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex)';
0027
0028 ifam = 'BPMz';
0029 AO.(ifam).AT.ATType = 'Z';
0030 AO.(ifam).AT.ATIndex = Indices.BPM(:);
0031 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex)';
0032 catch
0033 warning('BPM family not found in the model.');
0034 end
0035
0036
0037
0038 try
0039 ifam = 'HCOR';
0040
0041 AO.(ifam).AT.ATType = ifam;
0042 AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, Indices.COR);
0043 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
0044
0045
0046 ifam = 'VCOR';
0047 AO.(ifam).AT.ATType = ifam;
0048 AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, Indices.COR);
0049 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
0050
0051
0052 ifam = 'FHCOR';
0053 AO.(ifam).AT.ATType = ifam;
0054 AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, Indices.COR);
0055 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
0056
0057
0058 ifam = 'FVCOR';
0059 AO.(ifam).AT.ATType = ifam;
0060 AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, Indices.COR);
0061 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
0062 catch
0063 warning('Corrector family not found in the model.');
0064 end
0065
0066
0067
0068 try
0069 for k = 1:10,
0070 ifam = ['Q' num2str(k)];
0071 AO.(ifam).AT.ATType = 'QUAD';
0072 AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, Indices.(ifam));
0073 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
0074 end
0075 catch
0076 warning('%s family not found in the model.',ifam);
0077 end
0078
0079
0080
0081 try
0082 for k = 1:10,
0083 ifam = ['S' num2str(k)];
0084 AO.(ifam).AT.ATType = 'SEXT';
0085 AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, Indices.(ifam));
0086 AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
0087 end
0088 catch
0089 warning('Sextupole families not found in the model.');
0090 end
0091
0092
0093
0094
0095 try
0096
0097 AO.BEND.AT.ATType = 'BEND';
0098 ATIndex = Indices.BEND(:);
0099 AO.BEND.AT.ATIndex = buildatindex(AO.BEND.FamilyName, sort(ATIndex));
0100 AO.BEND.Position = findspos(THERING, AO.BEND.AT.ATIndex(:,1))';
0101 catch
0102 warning('BEND family not found in the model.');
0103 end
0104
0105
0106 try
0107 AO.RF.AT.ATType = 'RF Cavity';
0108 AO.RF.AT.ATIndex = findcells(THERING,'Frequency')';
0109 AO.RF.Position = findspos(THERING, AO.RF.AT.ATIndex(:,1))';
0110 catch
0111 warning('RF cavity not found in the model.');
0112 end
0113
0114 setao(AO);
0115
0116
0117 try
0118
0119
0120 TwissData.alpha = [0 0]';
0121 TwissData.beta = [13.8467 2.2582]';
0122 TwissData.mu = [0 0]';
0123 TwissData.ClosedOrbit = [0 0 0 0]';
0124 TwissData.dP = 0;
0125 TwissData.dL = 0;
0126 TwissData.Dispersion = [.06 0 0 0]';
0127
0128 setpvmodel('TwissData', '', TwissData);
0129
0130 catch
0131 warning('Setting the twiss data parameters in the MML failed.');
0132 end