素粒子物理学実験という分野ではCAMAC、VME、RS232CやGPIB といったおよそ一般的とは呼べないようなデバイスが業界スタンダードよろしく 頻繁に利用されており、その都度、実験者を悩ませてきました。
CLDAQは聞いたこともないハードウェアをいきなり使わなければいけないハ メになったり、てっとりばやくデータ収集システムの構築をして、とっとと実験 結果を得たい人をサポートするためのプロジェクトです。
このプロジェクトによる成果物を利用することにより、システム構築のための開 発期間が大幅に削減され、実験に集中出来るようになることを約束します。
開発は終了しています。
開発時間を短くしたいということもありまして、 CLDAQは多くのライブラリに依存しています。
もっとも、 大抵のディストリビューションではインストール時に 入っているのがほとんどだと思うのですけれど、 CLHEP と ROOT という非高エネ業界の人々には覚えのないものを使用しており、 かつ強依存しております。
これらふたつのライブラリはデフォルトではまず入ってないと思いますので、 必ずCLDAQ本体をビルドする前に上記のリンクをたどって、 インストールしてくださいますようお願い申し上げます。
ここではCLDAQ本体をホームディレクトリにインストールする例を紹介します。 シェルはcsh系を使っていますので、sh系のシェルを使用している方は適宜、 読み替えて下さい。
% cd $HOME % tar zxvf CLDAQ-x.xx.xx.tar.gz % source CLDAQ/config/scripts/cldaq-setup.csh % cd CLDAQ/source % make
うまくいけばこれで終わりです。 CLDAQには便利なconfigureスクリプトは存在しません。 上の例中の3行目で cldaq-setup.csh というファイルをsourceしていますが、これが非常に重要です。 CLDAQではライブラリをビルドするとき、 あらかじめ設定されてある環境変数を使用します。
ビルド時に参照される環境変数は以下のようなものがあります。 特に始めの5行は必須項目ですので必ず設定してください。
環境変数 | 設定例 | 意味 |
---|---|---|
CLDAQ_INSTALL | $HOME/CLDAQ | CLDAQの展開先 |
CLDAQ_CLHEP_BASE_DIR | /usr/local | CLHEPのルートパス |
CLDAQ_CLHEP_LIB_NAME | CLHEP | CLHEPのライブラリ名(この場合libCLHEP.aにリンクします) |
CLDAQ_ZLIB_USE | 1 | zlibを使用するかどうか |
CLDAQ_ROOT_USE | 1 | ROOTを使用するかどうか |
CLDAQ_SHAREDLIB | 0 | 共有ライブラリを作成するかどうか |
CLDAQ_STRIP | 1 | 実行ファイルをstripコマンドにかけるかどうか |
CLDAQ_WORK_DIR | $HOME | 作業ディレクトリ(通常、設定する必要はありません) |
CLDAQ_LIB_DIR | $CLDAQ_INSTALL/lib | ライブラリを作成するディレクトリ(通常、設定する必要はありません) |
CLDAQ_BIN_DIR | $CLDAQ_INSTALL/bin | 実行ファイルを作成するディレクトリ(通常、設定する必要はありません) |
CLDAQ_INCLUDES | -I$HOME/local/include -I/net/include | その他のヘッダファイルへのパス(makeにこけたらこれを設定してみるとよいかも) |
CLDAQ_LIBS | -L$HOME/local/lib -lfoo -lbar -lbaz | その他のライブラリパス(makeにこけたらこれを設定してみるとよいかも) |
CLDAQ_PAW_USE | 0 | PAWを使用するかどうか |
CLDAQ_X11_USE | 1 | X11を使用するかどうか |
CLDAQ_X11_LIB_DIR | /usr/X11R6/lib | Xライブラリへのパス |
CLDAQ_X11_INC_DIR | /usr/X11R6/include | Xヘッダファイルへのパス |
CLDAQ_GTK_USE | 1 | Gtkを使用するかどうか |
CLDAQ_QT_USE | 1 | Gtkを使用するかどうか |
CLDAQ_QT_BASE_DIR | /usr/lib/qt | Qtのルートパス |
CLDAQ_QT_LIB_DIR | $CLDAQ_QT_BASE_DIR/lib | Qtライブラリへのパス |
CLDAQ_QT_INC_DIR | $CLDAQ_QT_BASE_DIR/include | Qtヘッダファイルへのパス |
ライブラリのビルドが終われば、 $CLDAQ_INSTALL/lib にライブラリが生成されているはずです。
動作のテストは $CLDAQ_INSTALL/tests にあるコードで行います。 どれも数10行〜100行程度の短いプログラムですが、 CLDAQの使い方を簡単に理解し、 動作しているかどうかを調べるにはここから始めるのが良いでしょう。
% cd $CLDAQ_INSTALL/tests % make % ls $CLDAQ_INSTALL/bin
なにやらいろいろ出来ているはずです。 デバイスを必要とするプログラムはドライバとデバイスの接続を必要としますが、 その他のプログラム(ほとんど全てです)はすぐに動くはずです。
$CLDAQ_INSTALL/examples/software 以下にあるプログラムはデバイスを必要とせず、かつ、 実際のDAQシステムに近い枠組みになっているので、 現実的なシステムをイメージするには、ちょうどよい例題だと思います。
以下にアプリケーションの構築から、実行までの一通りの手順を示します。
% cd $CLDAQ_INSTALL/examples/software % cd sw01 % make % $CLDAQ_INSTALL/bin/sw01main CLDAQ> /run/start CLDAQ> /run/suspend CLDAQ> /run/stop CLDAQ> /system/shutdown % w3m -dump run000000.html % $CLDAQ_INSTALL/bin/ifiledump run000000.drec % $CLDAQ_INSTALL/bin/sw01recdisp run000000.drec
上記例ではCLDAQ対話セッションで1ラン実行し、終了した後、 できあがったデータファイルに対して、いくつかの操作を行っています。 (標準出力と可視化)
$CLDAQ_INSTALL/config/scripts/cldaq-build を実行すると、DAQアプリケーションのための雛形が作成されます。 これだけでは、まともに動きませんので、各メンバ関数を実装してください。 ファイル中に埋め込まれたコメントや 例題のソースコードが参考になると思います。
スクリプトを実行すると、いくつかの質問がコンソールに出力されますので、 適宜、答えていって下さい。 下記例のように答えていった場合、 mydaq というディレクトリが掘られ、その中に MySystemAction、 MyRunAction、 MyEventAction、 MyCrateDefinition、 MyReadoutBookDefinition という5つのクラスのソースコードが作成されます。 これらはコンパイル可能ですが、中身が空のため、 動作しません。 これら5つのクラスから、 libDAQ.a(あるいはlibDAQ.so)というライブラリが作成されます。 main関数を含むファイルはこの場合、 main.cc と subsys.cc が作成されます。 実行ファイルの名前はそれぞれ、 main と subsys になります。
% $CLDAQ_INSTALL/config/scripts/cldaq-build CLDAQ - a Class Library for Data AcQuisition Copyright (C) 2000-2004 Go IWAIThis is free software with ABSOLUTELY NO WARRANTY. For details type "cldaq-build --warranty". ---- Enter project name [DAQ]: mydaq Enter execution name(s) [no default]: main Add more (Y)es/(N)o?: [Y]: y Enter execution name(s) [main]: subsys Add more (Y)es/(N)o?: [Y]: n Enter library name [mydaq]: DAQ Enter Prefix [Daq]: My いろいろメッセージが出る
推奨ドライバへのリンクです。 下記以外のドライバで動かしたい理由がある場合はご相談ください。
ライセンスは放棄していません。 適当にいじくって亜流を配布してもかまいませんが、 配布コード(もしくはドキュメント)に一言、 CLDAQのコードを参考にした(もしくはパチった)と、 ここのURL(http://cldaq.sourceforge.jp/)とともに書き添えてください。
現在、サルベージ作業中です。
ここより先はどうでもいい内容が多いので、 読み飛ばしていただいて構いません。
上図は開発頻度を可視化したもので、下図はクラスライブラリの規模です。 上図からはビームテストのたびに瞬間的に突風がふいたことが見てとれます。
2003年5月に公開を開始して以来、 プロジェクトホームページには40000回以上のアクセスがあり、5000回以上のダウンロードされました。 CLDAQを構成するクラスの数はおよそ200程度で、 現在(2004年6月)ソースコードの規模は1MB、4万行程度になります。
※ アプリケーションコードまで含めると、10万行程度になります。
簡単な更新履歴です。 もっと詳しい情報はこちらの「リリースメモ」や「更新履歴」からどうぞ。
頓挫したプロジェクトは省略しました。
必要なものは、だいたい用意した感がありますし、飽きてきたので、 今後は言語バインディング(CINT,Python,Ruby,PHP) の充実とアプリケーション開発に注力してやっていこうと思っています。 いきあたりばったりで開発しているため、 開発タームが何層になっているか私自身、見通せてはいませんが、 最下層のレイヤーから、ひとつ上のレイヤーに移行したと言えます。
現在準備中です。今しばらくお待ち下さいますようお願い申し上げます。