Room:「Conference Room SAD」

ビームサイズのプロット

Speaker:shinji machida

(Date: Thursday, August 16, 2001 16:21:39)


(数時間前に同じことを書きましたが、うまくsubmitされなかったようなので、もう一度書きます。)

いつもながら初歩的な質問をさせて下さい。

Do[
ty=LINE["ELEMENT",i];
tty = ty // " ";
tty = tty[1,7];
sizex3[i] = Sqrt[Twiss["BX",i]*324.E-6];
sizey3[i] = Sqrt[Twiss["BY",i]*324.E-6];
sizex4[i] = Sqrt[Twiss["BX",i]*324.E-6*1.5];
sizey4[i] = Sqrt[Twiss["BY",i]*324.E-6*1.5];
sepx[i] = dispx[i]-sizex3[i]-sizex4[i];
Write[outf,tty,sizex3[i],sizey3[i],sizex4[i],sizey4[i],sepx[i]];
,{i,LINE["LENGTH"]}
];

というように、ビームサイズを定義して、これをファイルに書き出しました。さらに、DRAWコマンドのように、
LATなどと一緒にプロットさせるコマンドがあると聞きましたが、どのようにスクリプトを書くのでしょうか。

町田


Comment by Kentaro Harada
( Date: Wednesday, August 22, 2001 07:23:36)

例えば、
out 12 draw sigx & sigy q*;
で如何でしょうか。サブスクリプトの中に埋め込むには、
FFS["draw sigx & sigy q*",12];
等とすればいいと思いますが……


Comment by Shinji Machida
( Date: Wednesday, August 22, 2001 13:04:27)

原田様

コメントをありがとうございます。
さて、DRAW SIGX & SIGYとすると、SIGX等であらかじめ定義されたビームサイズを
プロットできますが、ユーザーが勝手に決めた関数をプロットするにはどのような
方法があるのでしょうか。

町田


Comment by K. Oide
( Date: Monday, August 27, 2001 09:55:43)

OpticsPlotを使えばラティスの場所の任意の関数やデータをラティスの絵とともに
プロットできます。(以下Canvasを使った例ですがtdrでもできます)。

!!Canvasの定義

w=KBMainFrame["aaa",f];
c=Canvas[f,Width->600,Height->400];
Canvas$Widget=c;

!! 関数BeamSizeXの定義。BeamSizeXの独立変数はLINE内での順番です。

dp=0.01;
emix=1.d-4;

BeamSizeX[k_]:=Sqrt[Twiss["BX",k]*emix]+Abs[Twiss["EX",k]*dp];

!! OpticsPlot。 beta, dispersionとBeamSizeXを同時に書きます。

OpticsPlot[{{"BX","BY"},{"EX","EY"},
{BeamSizeX,PlotJoined->True,FrameLabel->"AbsSize"}},
PlotLabel->"Optics Plot",
Names->"Q*"]
TkWait[];

!! 別のやりかたは自分で各点での値を持つリストを作って表示します。
!! 測定値の表示に便利です。

bslist={#,BeamSizeX[#]}&/@Range[LINE["LENGTH"]];

OpticsPlot[{{"BX","BY"},{"EX","EY"},
{bslist,PlotJoined->True,FrameLabel->"AbsSize"}},
PlotLabel->"Optics Plot",
Names->"Q*"]
TkWait[];


Comment by Kentaro Harada
( Date: Tuesday, August 28, 2001 20:05:35)

  tdr でやるやり方も教えていただけませんでしょうか? どうぞ
よろしくお願い申し上げます。


Comment by K. Oide
( Date: Tuesday, August 28, 2001 20:34:49)

If you want to run it with tdr, please comment out the following lines:

w=KBMainFrame["aaa",f];
c=Canvas[f,Width->600,Height->400];
Canvas$Widget=c;

and

TkWait[];



Comment by Kentaro Harada
( Date: Friday, September 14, 2001 11:19:22)

 
  どうもありがとうございました。うまくできました。
(返事が遅れまして申し訳ございませんでした。)
 
                  Friday,14,Sep,2001
                   Kentaro Harada