SPADI-A Wiki/SPADI-A DAQ マニュアル/チュートリアル/リプレイヤー


コンテナとデータファイルリプレイヤーを使用してNestDAQを動かす

(執筆完了時削除 --> 執筆責任者: 洲波泥 太郎, 執筆締め切り: 2024/xx/xx)

チュートリアルのゴール

事前準備

Apptainer/SingularityCE をインストールする。 ホスト機器が新しい OS であれば、パッケージからでも良い。 あるいは go をインストールして source ファイルからコンパイル。

DAQ の動かし方

ワークディレクトリに移動する。

$ mkdir nestdaq
$ cd /home/user/nestdaq (例えば)

コンテナイメージを持ってくる。

$ wget http://onlgw.kek.jp/~sendai/almalinux9-nestdaq.2024-01-22.sif 

最新版はファイル名が変更されていることがあります。リンクが切れている場合、Mattermost で情報を得てください。 コンテナ環境では NestDAQ は /opt/nestdaq 以下にインストールされています。

サンプルデータファイルを持ってくる。

$ http://www-online.kek.jp/~igarashi/nestdaq/run000408_00_stf.dat.gz (旧ヘッダ)
$ http://www-online.kek.jp/~igarashi/nestdaq/run000410.dat.gz (旧ヘッダ)
$ http://www-online.kek.jp/~igarashi/nestdaq/run001132_trancate.dat.gz (新ヘッダ)

ファイルは展開しておく。 gunzip run001132_trancate.dat.gz 等。 とりあえず新ヘッダのものを使ってください。 Apptaioner を起動

$ apptainer shell almalinux9-opt-nestdaq.sif

環境変数を設定する。

export NESTDAQ=/opt/nestdaq
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH=$NESTDAQ/bin:$PATH
export SCREENDIR=$HOME/.screen

git からユーザープログラムを持ってくる。

git clone https://github.com/spadi-alliance/nestdaq-user-impl

ユーザープログラムをコンパイルする。

Apptainer> cd nestdaq-user-impl

compile.sh を確認して適切に書き換える。 CMAKE_PREFIX_PATH を NestDAQ をインストールしたディレクトリにする。 Apptainer 環境では /opt/nestdaq にする。

Apptainer> sh compile.sh
Apptainer> cd build
Apptainer> make install

データベースサーバー redis と DAQ コントローラ daq-webctl を起動する。

Apptainer>  redis-server $NESTDAQ/etc/redis.conf --loadmodule $NESTDAQ/lib/redistimeseries.so
Apptainer>  daq-webctl >& /dev/null &

TimeFrameBuilder のファイルを読み込んで DAQ を動かしてみる。

TFBFilePlayer はファイルを読み込んで、DAQ プロセスにデータを流すことが出来る。 ここでは例として TFBFilePlayer → fltcoin → tfdump の様な構成で動かす。 fltcoin はコインシデンスをとるフィルタープロセス、tfdump はデータをダンプするプロセスである。

サンプルのトポロジーファイルを取ってくる。 DAQ を構成するプロセス間の通信経路の構成をトポロジーと呼んでいる。

Apptainer> wget http://www-online.kek.jp/~igarashi/nestdaq/topo_player.sh

トポロジーを redis に登録

Apptainer>  sh topo_player.sh

ブラウザを daq-webctl に繋ぐ ブラウザの URL カラムに http://localhost:8080 あるいは http://ipaddress:8080 Web UI の Run number New value のところで 適当な run number を入れて Send を押す。

プログラムの起動 スタートアップスクリプトをコピーしてくる。

Apptaioner> cp /opt/nestdaq/run/start_device.sh .

スタートアップスクリプト start_device.sh の実行ファイルディレクトリをワークディレクトリの下の適切なディレクトリに変更する。

BINDIR=/home/user/nestdaq/nestdaq-user-impl/bin 等

プログラムを実行する。(とりあえずは別々の端末で。 screen は SCREENDIR を設定すれば使えます。tmux も使用できます。)

Apptainer> ./start_device.sh TFBFilePlayer --in-file run000411.dat
Apptainer> ./start_device.sh fltcoin
Apptainer> ./start_device.sh tfdump

実行 する。 [Init Device And Connection], [Init Task], [Run] とボタンを順番に押す。 停止 する。 [Stop], [Reset Task], [Reset Device] とボタンを順番に押す。 プログラムを終了する。 [End] ボタンを押す。

全部終了する。 daq-webctl と redis-server に KILL signal を送る。

$ killall redis-server
$ killall daq-webctl

オンラインモニター

本稿執筆者

2024/xx/xx 洲波泥 太郎 (SPADI大学), 脱九 花子 (SPADI大学)
2024/xx/xx 脱九 花子 (SPADI大学)