190 likes | 1.74k Views
SAD を用いた KEKB コミッショニング/オペレーション・ソフトウエアの概要. Reference : K. Furukawa / KEK "SAD in Accelerator Operation and Virtual Accelerator" at J-PARC Commissioning Group Meeting, Oct. 30, 2002. http://jhfacsv03.kek.jp/doc/report/index.html#linphase-jun03 第 1 回 SAD ワークショップ講演記録集 (AccLab-99-15)
E N D
SADを用いたKEKB コミッショニング/オペレーション・ソフトウエアの概要 • Reference : • K. Furukawa / KEK • "SAD in Accelerator Operation and Virtual Accelerator" at J-PARC Commissioning Group Meeting, Oct. 30, 2002. • http://jhfacsv03.kek.jp/doc/report/index.html#linphase-jun03 • 第1回 SADワークショップ講演記録集 (AccLab-99-15) • 1998年7月7日ー9日 at KEK (但し、絶版) • SAD Home Page : http://acc-physics.kek.jp/SAD/sad.html • KBFrame : http://www-kekb.kek.jp/Documentation/KBFrame/ Y. Ohnishi / KEK September/17/2003
セミナーに対する要望 • KEKBのコミッショニング、オペレーション一般について。 • 何を見て、何を最適化するか。苦労する点。 • 上記を実現する具体的方法として、SADをどのように使っているか。 • 例題があればそのいくつか。 • SADスクリプトの書き方。 • 要点だけ。いまはなくても、あったらよいと思われる機能など。
LINAC オペレーション KEKBオペレーションの概要 電子/陽電子ビーム入射 衝突実験 • 入射制御 • セプタムでのビーム位置 • セプタムでのビーム角度 • キッカーハイト • キッカージャンプ • BT最後の垂直方向ステアリング Adiabatic tuning knobs IP dispersion/tilt/waist Sextupole tuning 衝突点軌道フィードバック (iBump) BT終端部軌道フィードバック ビームサイズ・フィードバック (iSize) LINAC/BT軌道表示 光干渉計によるビームサイズ測定 バンチ電流モニター 軌道表示と連続COD軌道補正/ステアリング パネル パイロット・バンチ・チューン測定パネル チューンの電流依存パターン設定パネル プログラマブル・チューンチェンジャー/チューン・フィードバック KEKB Optics パネル
KEKBコミッショニング/オペレーション • オプティクスの計算と設定、保存と呼び出し。 • ビーム軌道の測定と軌道補正、ステアリングの保存と呼び出し。 • チューンの測定とチューン設定。 • ビーム入射、入射条件の保存と呼び出し。 • ビームの状態と環境の表示及びロギング。 • ビーム電流、ライフ、真空度、機器の温度等 • アラーム • 膨大なデータの保存、読み出し、表示(ログ・ブラウザー) • オプティクス測定、補正。 • アプリケーションの起動(ランチャー) • 1ー4は磁石の設定が必須。 • データ読み出しと制御はEPICSに頼っている。 • インタラクティブ(オンライン解析・制御)
KEKBコミッショニング/オペレーション • SAD • Mathematica-like language • 基本的にインタープリター(SADスクリプト) • 演算、リスト操作、ベクトルと行列、数学関数 • グラフ表示(強力なツール類) • オブジェクト指向プログラミングも可能。 • Optics 計算 • matching / tracking • EPICS チャンネル・アクセス • CaMonitor / CaRead / CaWrite 等の関数 • GUI (Tk / KBFrame) • Canvasによるグラフィックス表示 / 多彩な部品
具体例 その1 configureでedit を選択すると • KEKB Task Launcher • アプリケーションの登録、削除。 • アプリケーションの起動に関してはホストコンピュータを適当に選んでくれる。またユーザーが明示的に指定することもできる。 ダブルクリック で起動。 ソフトウエアーを 開発した人や ユーザーがコードの在り処を 容易に知ることができる。 オプティクス計算を要しないアプリケーションでもSADを用いた例
具体例 その2 KEKB Optics Panel タブ・フレームの活用 Matchingを取ってTuneを設定する。 オプティクス管理の元締
具体例 その3 HER Orbit Correction ゴールド軌道 からの差を表示 連続COD補正 軌道補正 のための各種 パラメータ設定
具体例 その4 Tune measurement ダンピングを含む ベータトロン振動の スペクトラム(複雑な関数) でフィッティング カーソル・エントリー 矢印キーで数値を変えることができる。 スキャンをする時に便利。 tuneの絶対値、 相対値による 設定ができる。 KEKB Optics panelへ チューンの設定命令を送っている。
Optimization of betatron tunes ダブルクリック すると 変更専用パネル が出現する。 バインド機能 の利用 優れたヴィジュアル操作! 線、玉ころを マウスで 掴んで 動かせる。
Optics measurement and correction dispersion beta function Interactive procedure of measurement + analysis + correction • Knobs: • Local bumps at sextupoles • Fudge factors for quads/skews Works very well ! XY-coupling
データ・ログを見る。(ログ・ブラウザー) Circumferences are adjusted by RF frequency with looking at HER orbit. LER has an independent knob to adjust circumference with “Chicane”. Orbit correction (CCC) applies circumference correction simultaneously. knob measurement ログ・ブラウザーの使用例 Bending angle of the chicane (LER circumference adjustment w/o RF frequency) Extension of the circumference RF frequency Atmospheric pressure Extension about 300mm (-50 Hz). Shrink ≈60mm This behavior is consistent with tidal effect. We observe tidal effect by ground motion ?? Typhoon #21 (970 hPa) (9 p.m. October 1, 2002)
SAD/KBFrame 例題はKBFrame マニュアルにあります。 アプリケーション間の切り替え等の共通機能 共通のlook & feel 部品の配列の簡単化 FFS; w=KBMainFrame["Ex1",f,Title->"Example 1"]; TkWait[]; あらかじめ必要なものは用意されている。 Helpメニュー(またはKEKBロゴ)の中に "About Example 1"というメニューボタン に制作者氏名、連絡先等を記述しておくと便利かも。 w[AboutMessage]="Example 1 ver. 1.0\n Y. Ohnishi"; menuボタンの追加 が可能 progress bar (タスクの進行状況を表現できる) status line (コメントを表示できる) *イメージはウエブ・ブラウザーで閲覧。 イメージはシフトレポート等へ貼付ける。 レポートにはPowerPointを使用。 スクリーンの印刷、イメージとして保存*をするボタン。 (KEKBコントロール棟用に設定している。)
スクリーン・ショットの閲覧 K. Furukawa / N. Yamamoto
SAD/KBFrame (cont'd) 部品の配置の例 FFS; w=KBMainFrame["CompArr",f,Title->"Arrange Component Test"]; s="initial string"; n=1; c=1; r=1; o=1; l=1; cf=KBFComponentFrame[f, Add->{ KBFGroup[Text->"Group1"], KBFText[Text->"Examples of Component Arrangement"], KBFString[Text->"String Input :",Variable:>s], KBFNumber[Text->"Number Input :",Variable:>n], KBFCheckButton[Text->"Check",Variable:>c], KBFRadioButton[Items->{"Radio 1","Radio 2"},Variable:>r], KBFOptionMenu[Items->{"Option 1","Option 2","Option 3"},Variable:>o], KBFListBox[Items->{"List 1","List 2","List 3","List 4"},Variable:>l], KBFSeparator[], KBFButton[Text->"File",Command:>( fileName=KBFOpenDialog["/ldata/KEKB/KCG","*"]; If[fileName<=>Null,Print["Open file is "//fileName]]; )] } ]; TkWait[];
SAD/KBFrame (cont'd) ListPlotの例 FFS; main=KBMainFrame["KEKB Temperature",mf, Title->"KEKB Temperature"]; Canv=Canvas[mf,Height->400,Width->600,BG->"white"]; CaTemp=CaMonitor["CO_KIKAI:ANK331", ValueCommand:>ReadTemp[]]; data={}; ReadTemp[]:=Module[{g}, Canvas$Widget=Canv; AppendTo[data,{FromDate[Date[]],CaTemp@Value[]}]; Tnow=data[[-1,1]]; g=ListPlot[data, FrameLabel->{"","Temp (deg.)"}, Scale->{Date,Linear}, PlotRange->{{Tnow-3600,Tnow},{0,30}}, Plot->1,PlotJoined->1, PlotColor->"blue",PointColor->"blue", GridLines->{Automatic,Automatic}, DisplayFunction->Identity]; Show[g]; If[data[[1,1]]<Tnow-3600,data=Drop[data,1]]; ]; TkWait[]; EPICSレコードをモニターしている例。 ValueCommandはレコードの値が更新 されるとコマンド(ReadTemp[])を 発行する。 その他にColumnPlot、FitPlot等
SAD/KBFrame (cont'd) オブジェクト指向プログラムの例 FFS; main=KBMainFrame["Example",mf,Title->"Example"]; Bpm=Class[{},{},{ RecName,CaBpm,X=0.0,Y=0.0,Status=0, Xlist={},Ylist={},Nmax=100 }, Constructor[]:=Module[{rec}, rec=Map[(RecName//#)&,{":XPOS",":YPOS",":STAT"}]; CaBpm=CaMonitor[rec,ValueCommand:>( {X,Y,Status}=CaBpm@Value[]; If[Status, AppendTo[Xlist,X]; AppendTo[Xlist,Y]; ]; If[Length[Xlist]>Nmax, Xlist=Drop[Xlist,1]; Ylist=Drop[Ylist,1]; ]; )]; TkSense[1]; ]; FFT[]:=Module[{}, fftx=Abs[Fourier[Xlist]]; ffty=Abs[Fourier[Ylist]]; Return[{fftx,ffty}]; ]; ]; bpm1=Bpm[RecName->"BMLBPM:D01_QCSLP"]; bpm2=Bpm[RecName->"BMLBPM:D01_QC3LP"]; TkWait[]; クラスの定義 クラス変数 実行させると。。。 > bpm1@X > 1.8 > bpm1@Xlist > {1.8,2.3,1.5} > bpm1@FFT[] > {{….},{….}} コンストラクター: パラメータの初期化、 EPICSの接続等 アクション(作用)の定義 オブジェクトの作成 コンストラクターが1度だけ呼ばれる。
まとめ(個人的意見含む) • KEKBではMEDM、Python、SAD、Tcl等が使用されているが、SADを使ったKEKBのコミッショニング/オペレーション・ソフトウエアを紹介。あくまでもKEKBに対応するものであることに注意。ただし、環境変数を変更すれば流用できるものがあると思う。 • J-PARCの運転形態/ビームの特性に適したソフトウエアを構築する必要がある。SADを使うにしてもカスタマイズ(かなりの努力)はある程度必要。 • SADについてOSはunix系に限られている。パフォーマンスはチューニングの余地がまだある。マニュアルの整備が不十分。 • マニュアルが不十分な点については「Authorが近くにいる」ということでカバーされてきた。