= 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://@github.com/tkono17/pbox.git }}} の部分は、自分の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の磁場を設定。 [[attachment:event1_pt200MeV_Bz1T.png]]