CLDAQ - a Class Library for Data AcQuisition

素粒子物理学実験という分野ではCAMAC、VME、RS232CやGPIB といったおよそ一般的とは呼べないようなデバイスが業界スタンダードよろしく 頻繁に利用されており、その都度、実験者を悩ませてきました。

CLDAQは聞いたこともないハードウェアをいきなり使わなければいけないハ メになったり、てっとりばやくデータ収集システムの構築をして、とっとと実験 結果を得たい人をサポートするためのプロジェクトです。

このプロジェクトによる成果物を利用することにより、システム構築のための開 発期間が大幅に削減され、実験に集中出来るようになることを約束します。

開発は終了しています。

目次

ダウンロード

安定版のダウンロードをお勧めします。

ソースコードへのCVSアクセスの方法はこちらをごらんください。
CVSリポジトリはこちらから参照できます。

インストール

CLDAQが必要とするライブラリ

開発時間を短くしたいということもありまして、 CLDAQは多くのライブラリに依存しています。

もっとも、 大抵のディストリビューションではインストール時に 入っているのがほとんどだと思うのですけれど、 CLHEPROOT という非高エネ業界の人々には覚えのないものを使用しており、 かつ強依存しております。

これらふたつのライブラリはデフォルトではまず入ってないと思いますので、 必ずCLDAQ本体をビルドする前に上記のリンクをたどって、 インストールしてくださいますようお願い申し上げます。

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 1Gtkを使用するかどうか
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ラン実行し、終了した後、 できあがったデータファイルに対して、いくつかの操作を行っています。 (標準出力と可視化)

DAQシステムを作る

$CLDAQ_INSTALL/config/scripts/cldaq-build を実行すると、DAQアプリケーションのための雛形が作成されます。 これだけでは、まともに動きませんので、各メンバ関数を実装してください。 ファイル中に埋め込まれたコメントや 例題のソースコードが参考になると思います。

スクリプトを実行すると、いくつかの質問がコンソールに出力されますので、 適宜、答えていって下さい。 下記例のように答えていった場合、 mydaq というディレクトリが掘られ、その中に MySystemActionMyRunActionMyEventActionMyCrateDefinitionMyReadoutBookDefinition という5つのクラスのソースコードが作成されます。 これらはコンパイル可能ですが、中身が空のため、 動作しません。 これら5つのクラスから、 libDAQ.a(あるいはlibDAQ.so)というライブラリが作成されます。 main関数を含むファイルはこの場合、 main.ccsubsys.cc が作成されます。 実行ファイルの名前はそれぞれ、 mainsubsys になります。

% $CLDAQ_INSTALL/config/scripts/cldaq-build
CLDAQ - a Class Library for Data AcQuisition
Copyright (C) 2000-2004 Go IWAI 
  This 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/)とともに書き添えてください。

関連資料

現在、サルベージ作業中です。

おまけ

ここより先はどうでもいい内容が多いので、 読み飛ばしていただいて構いません。

開発の歴史

ChangeLog
History

上図は開発頻度を可視化したもので、下図はクラスライブラリの規模です。 上図からはビームテストのたびに瞬間的に突風がふいたことが見てとれます。

2003年5月に公開を開始して以来、 プロジェクトホームページには40000回以上のアクセスがあり、5000回以上のダウンロードされました。 CLDAQを構成するクラスの数はおよそ200程度で、 現在(2004年6月)ソースコードの規模は1MB、4万行程度になります。

※ アプリケーションコードまで含めると、10万行程度になります。


簡単な更新履歴です。 もっと詳しい情報はこちらの「リリースメモ」や「更新履歴」からどうぞ。

1.14.0 (2004-06-25)
DCBA で使ってくださるとのことなので、簡単に整備しました。
1.13.0 (2004-03-27)
各アクションクラスのメソッド名を変更しました。
機能が限定されていますが、CINTへの言語バインディングを用意しました。
1.12.0 (2004-03-01)
圧縮・解凍フィルターを持つファイル入出力機能を加えました。
レコードディスプレイの部品群といくつかのデモプログラムを加えました。
1.11.0 (2003-12-09)
データレコードへの可読性の高い高速アクセスを実装。
ログセンダーの実装。
オブジェクトフィルターの実装。
圧縮・解凍フィルターを用意しました。
GPLへの準拠を意識しはじめました。
1.10.0 (2003-11-03)
正規表現を扱うための機能を追加しました。
GNUスタイルの引数を簡単にかつ直感的に解釈するための機能を追加しました。
Doxygen 用のタグとコメントをうつ試みを開始しました。
1.8.0 (2003-09-07)
データレコードへのアクセスが簡単になりました。
1.7.0 (2003-07-31)
コマンド関係のバグを修正しました。
コミットログをつけることにしました。
1.6.0 (2003-07-17)
SourceForge.jpにて公開を開始しました。
1.4.0 (2003-04-xx)
物理学会(年次大会)直前のスナップショットです。
1.3.1 (2003-02-xx)
APPI 2003 直前のスナップショット。
ライブラリ部分よりもアプリケーションコード、 特にCCDからの読み出し部分が多く更新されました。
1.2.0 (2002-12-xx)
多くの整備を加えたり、汚らしいコードを捨てたりしました。
実質、このバージョンが1.0.0に相当するバージョンだと思います。
1.0.0 (2002-11-xx)
タイムスタンプはなぜか11月のものになっていて、なんだか怪しい。
サイズから推測するに、バージョン0.7.0相当だと思われます。
0.9.0 (2002-12-xx)
ビームテスト(at LNS)直後のスナップショットです。
CAMACアクセスの部分が完成されました。
0.8.0 (2002-12-xx)
ビームテスト(at LNS)直前のスナップショットです。
カテゴライズして、配布を意識した開発環境に。
0.4.1 (2002-09-xx)
物理学会(秋季大会)の時点でのスナップショットです。
働きすぎて、肺炎になってしまった。
解析カテゴリは頓挫してしまった。
0.3.0 (2002-08-xx)
多くのコマンドを追加して、対話的にシステムをコントロールすることが できるようになりました。
0.2.0 (2002-08-xx)
ユーザーインターフェースやランコントロールの機能を組み込み始めた。
0.1.0 (2001-xx-xx)
BIT3経由でVMEモジュールをコントロールするのが主目的で、 作っては壊しての繰り返し。 まだ汎用クラスライブラリにするつもりもなかった。

導入事例

頓挫したプロジェクトは省略しました。

展望

必要なものは、だいたい用意した感がありますし、飽きてきたので、 今後は言語バインディング(CINT,Python,Ruby,PHP) の充実とアプリケーション開発に注力してやっていこうと思っています。 いきあたりばったりで開発しているため、 開発タームが何層になっているか私自身、見通せてはいませんが、 最下層のレイヤーから、ひとつ上のレイヤーに移行したと言えます。

なお、開発タスクとその進捗状況はこちらから閲覧することができます。

索引

現在準備中です。今しばらくお待ち下さいますようお願い申し上げます。

$Id: index.html,v 1.61 2009/08/30 04:06:06 goiwai Exp $
Go IWAI -- goiwai at users.sourceforge.jp