Introduction SLAC 版の Topdrawer を使い慣れた人にとって、Bonner Lab. 版は機能が非常に 強化されている半面、根本的思想が異なるために違和感を感じる部分があると 思います。本文では、私の知る範囲で、認識しておいた方が良いと思う違いや、 ちょっと便利な使い方を挙げ連ねてみる事にします。 o 複数のデータセット SLAC 版ではデータのバッファは一つしか存在せず、新しいデータを定義すると 古いものは消えてしまったので、幾つかのデータを重ね描きたい時はデータの 定義と描画を交互に繰り返す、という事が必要でした。 Bonner Lab. 版では複数のデータセットを同時にバッファに持つ事ができます。 それぞれには通し番号が割り当てられ、多くのコマンドで set というオプション によってデータセットが指定されます。複数のデータセットが使えると、重ね 描きを多用した複雑な図の描き直しが簡単になるばかりでなく、 multiply 1 by 2 のように、データセットどうしの四則演算等も可能になります。また、全ての データを考慮に入れた auto scaling や、塗潰し描画の隠れ線処理で前後関係の 判断が可能になるのです。set の指定は番号だけでなく、first、last、next、 previous、current といったキーワードでも行えますし、データ登録時に名前を 付ければ、select="..." というオプションで名前による参照もできます。 SLAC 版との互換性のために、SLAC 版と共通のコマンドを使っている限りでは 常に 1 番のデータセットのみが操作の対象となります。2 番目以降のデータ セットに値が格納されるのは以下のような場合です。 data コマンド 以降に入力されるデータを次番のデータセットに格納 する事を宣言する。 fit コマンド curve append=on オプションを付けてフィットデータを 次番のデータセットに格納する。 最も最近に fit によって生成されたデータセットを参照するには、set=fit と 抽象的に書く事もできます。また、いずれも name="..." というオプションで データセットに名前を付ける事ができます。 バッファ中に格納されたデータは list コマンド show data コマンド で内容および統計情報が表示されます。いずれも output=.... でファイルに 出力する事もできますし、list コマンドを使った場合には set file input=... で Topdrawer に読み込める形式で出力されます。 データセット番号が増えてバッファの無駄な領域が出来た時には delete all (または set=....) によって要らないデータセットを削除します。 さて、一度に沢山データを格納できても、一々 set texture dot やら諸々の コマンドを実行しながら重ね描きしていたんでは興冷めです。そこで join set=1,4 cycle 等とやってみてください。四本の曲線が色や線種を変えて表示されるはずです。 図形を一度に重ね描きする時には、予め定義された cycle 情報に従って 線種、色、太さ、シンボルを切替えて表示させる事ができます。設定は show cycle で見る事が出来ますし、 set cycle entry=2 blue symbol="AP" のようにして変更出来ます (entry を省略すると全ての entry に対して共通の 設定になります)。 o 各種設定値の継承方法 set label ... や set title ... で設定される各種の値は、SLAC 版では 一度変更してしまうと元には戻せませんでした。逆に、一度に複数の図を 描く場合には、共通の設定は最初に一度だけ行えば良かったのです。 しかし Bonner Lab. 版では一時的な設定と恒久的な設定が明確に区別されて おり、慣れない人には違和感を与える大きな要素になっています。 設定を少し変えて図を描き直したいと思った場合、既に表示されている図を 消去するには、以下の方法があります。 clear 図を消去するだけで、設定値は保存する。 new 図を消去すると同時に、設定値もすべてデフォルトに戻す。 いずれもデータセットには影響を与えません。 clear の場合、描画情報が残っているという事は、例えば軸(枠線)を描いた という記憶も残っているという点に注意してください。即ち、次に plot や join でデータを出力しても枠線は描かないので、plot axis 等のコマンドが 必要になります。 新しい図を描くために new する度に全てをデフォルトにされてしまうのは 大変鬱陶しく感じますし、SLAC 版でうまく描いたファイルが何となく変な図に なってしまうのは、多くの場合ここに原因があります。設定を恒久的なものに する、即ちデフォルトの設定値も変えてしまうには set ..... permanent のように 'permanent' を付けて入力します (モノによっては permanent を受け 付けないコマンドもあります)。思ったように描画しない SLAC 版ファイルには、 取り敢えず set コマンドに全て permanent を付けてみるというのも一手です。 現在の設定値や、デフォルトの設定値自身がどうなっているのか、というのは show コマンド、例えば show label、show title、show ticks ... によって 表示させる事ができます。その中で気に入らないもの、例えば left title が label からあまりに離れて描画されるのが嫌だ、という場合、 set label left char=3 permanent という一行を ~/.topdrawrc に書いて、個人的なデフォルトに変更してしまう 事ができます。 permanent を付けてデフォルトを変えてしまえば、もう決して Topdrawer 本来 の設定値に戻せないかと言うと、そんな事はありません。 new reset と入力すれば、完全に素の状態に戻せます (ここまでやるかって感じですが)。 o set file input=... の落し穴 set file input は便利なコマンドで、特にテーブル形式のデータファイルを 読み込んでデータセットを定義する際に良く使います。しかし、Topdrawer ではコマンド実行の区切り単位が“行”である (";" 等の区切り子ではない) 事から、マルチステートメント中で set file input を使う際には注意が必要 です。例えば set file input=datafile ; join 等とやると、実際にデータがファイルから読み込まれるのは join が実行され た後になるので、期待される動作とは異なってしまいます。set file input より後に実行したいコマンドは、行を改めて書いてください。 # 馬鹿な仕様だと思うかも知れませんが、比較の意味で言うと、藤井さんの拡張 # した TDRVAX.EXE の INCLUDE コマンドはマルチステートメントの使えない # 実装でしたので、そもそもこんな書き方はできなかったのです。