誤差の大きさと入れ方
大きさ
|
|
|
|
据え付け誤差 | alignment error | Q、S、B |
50μm
|
強さの誤差 | dK (strength error) | Q、S、B |
0.05%
|
回転誤差 | rotation error | Q、S、B |
0.2mradian
|
入れ方
乱数で入れる。例えば、分散 50μm の据え付け誤差の場合、誤差の分布は下の図のようになる。横軸は誤差の大きさ(単位はmm)、縦軸は頻度(個)である。
SADスクリプト
USE RING;
cell calc emit fix;
optics=CalculateOptics[1,LINE["LENGTH"],Twiss['*',1],0,2];
options={Solver->Micado, SetSteer->True, Calc->True};
monitors=Monitor["MON*"];
steerings=Steer["STR*"];
correction = {'X','Y'};
iseed = 1188;
SeedRandom[iseed];
GCUT=2;
DELX 5E-5 Q*;
DELY 5E-5 Q*;
DELX 5E-5 SF*;
DELX 5E-5 SD*;
DELY 5E-5 SF*;
DELY 5E-5 SD*;
DELX 5E-5 B*
DK 5E-4 B*;
DK 5E-4 Q*;
DK 5E-4 S*;
DTHETA 2E-4 B*;
DTHETA 2E-4 Q*;
DTHETA 2E-4 S*;
(注:以下2行は尤もらしい出力が現れるが、全く働いていない様である。誤差に関するスクリプトは難しく、まだ完全には理解できていないのが実状である。モニターとステアリングは誤差無しで計算を行っている。また、補正は全く別のプログラム(自作)でやっている。現実のリングの補正も、それを使用する予定である。)
MON 0 0 0 0 MON*;
STE 0 STR*;
cell;
calc;
dump;
codplot;
MCOD;
TCOD;
disp MARKR;
Repeat 5;
CorrectOrbit[correction, monitors, steerings, optics,
options];
out 13;
draw DX & DY mon*;
draw DOX & DOY mon*;
out 13 end;
until
cell calc codplot;
TCOD;
MCOD;
stop;
stop;