Track Finding

荷電粒子の飛跡検出器で測定されて位置情報から飛跡を再構成するアルゴリズムとして新たな手法を開発する。

3次元または2次元で多数のヒット情報から同一の飛跡に属するヒットの組み合わせを探し出すパターン認識を行う。通常は2, 3個のヒットから初期飛跡候補を作って、それと整合的なヒットを多数のヒットの中から探し出して、逐次的に同一飛跡に属するヒットの集合を大きくしていく。

作業の流れ

準備

作業用のディレクトリを一つ用意する。ここではディレクトリ名をTrackFindingとして、この下にいくつかのディレクトリを作る。

cd TrackFinding
mkdir dev sw analysis run scripts

それぞれのディレクトリの役割は

ディレクトリ名

用途

dev

ソフトウェアのソースコードの管理

sw

コンパイルしたプログラムやライブラリのインストール場所

analysis

ROOTを用いた解析作業

run

プログラムを実行する場所

scripts

設定ファイル等のスクリプトの置き場所

以下、コマンド入力例を示すが決まったディレクトリで実行する必要がある場合が多いのでその都度cd abcのように移動先のディレクトリを書く。実際には直前にどのディレクトリにいるかによって、そこからの相対パスが変わってくるのでその辺は上のディレクトリ構造を前提に話していることを理解して自分で調整すること。

まずは設定ファイル(scripts/setup.sh)を用意する。この中身は以下のような感じにする。

export SWDIR=/.../.../TrackFinding/sw
export PATH=${SWDIR}/bin:$PATH
export LD_LIBRARY_PATH=${SWDIR}/lib:${LD_LIBRARY_PATH}

SWDIRという環境変数はソフトウェアのインストール先を指す必要があり、あとでプログラムをコンパイルするときに使うcmakeで使用される。

初期環境設定

設定ファイルを作ったら、それを実行してターミナルの環境設定をする。

source ./scripts/setup.sh

これは新しいターミナルを立ち上げる度に毎回実行して環境設定をする必要がある。

Githubからソースコードをダウンロード

環境設定ができたらdevの下に移ってgithubからプログラムのソースコードを取ってくる。

cd dev
mkdir build
git clone https://<username>@github.com/tkono17/pbox.git

<username>の部分は、自分のgithubのアカウント名に置き換える。githubのアカウントを持っていない場合は作る。 githubからソースコードをクローンしてくると、pboxという名前のディレクトリができるはずである。その下にソースコードがいくつかのパッケージに分かれて管理されている。 ソースコードを保存しているディレクトリとは別にbuildという名前のディレクトリを作ってコンパイルはそこで行う。

既に、ソースコードを取ってきていて一部だけを更新したい場合は

cd pbox
git pull

とやる。

コンパイル

cd build
cmake ../pbox
make install

プログラムの実行

cd run
genTrackHit.exe 10 100

とやると、genTrackHit.exeという名前のプログラムが実行されて10事象分(1事象当たり100本のtrack)のデータ(trackhit.root)が生成される。

ROOTによる解析

cd analysis

ここでも、設定ファイルがあると便利である。

ファイル

用途

.rootrc

ROOT起動時に読み込まれる設定ファイル

macros/rootlogon.C

ROOT起動時に実行するC++マクロ。ここでライブラリをロードしておくと便利である。

.rootrcの中にmacros/rootlogon.Cを指定しておく必要がある。 trackhit.rootの中身を見るために、簡単なイベント・ディスプレイを

root
root [0] .x draw_event.C(0)

ディレクトリ構造のまとめ

プログラムのソースコードの管理、コンパイル、実行、そしてROOTによる解析を行うにあたって、複数のディレクトリを作ってそれぞれの作業を別々のディレクトリで行うと便利である。余計なファイルに埋没されることがなくなる。

ls -Ra TrackFinding
dev/
dev/pbox
dev/build
analysis/.rootrc
analysis/macros
analysis/figures
scripts/setup.sh
sw/bin
sw/lib
sw/include
run

作ったファイルをROOTで解析している時に、プログラムを変更してもう一度データを作り直したい等というときはディレクトリをanalysisディレクトリに居たままで

(cd ../dev/build; make install; genTrackHit.exe)

などと一連のコマンドを";"で区切って羅列して実行すれば順番に実行してくれる。その際、全体を"("と")"で囲んでおくと別のシェルを立ち上げて実行してくれるのでコマンドを実行した後で元のディレクトリに居たままになるので便利である。

実行結果の例

1事象当たり100本の飛跡をpT>200 MeVで生成した場合のイベント・ディスプレイ。Z軸方向に1 Tの磁場を設定。 event1_pt200MeV_Bz1T.png