付録 F . ROOT 入門
ROOTはCERNで開発されたオブジェクト指向のプログラムパッケージで,ヒストグラム,図形描画,フッ ティングなどのデータ解析ができ,CやC++のプログラムも扱えるので高度なデータ処理も可能である.
ROOT の起動と終了,簡単なラインコマンド
$ root とシェルプロンプトで入力する.
******************************************************
* *
* W E L C O M E to R O O T *
* *
* Version 4.00/08 1 December 2004 *
* You are welcome to visit our Web site *
* http://root.cern.ch *
* *
******************************************************
メッセージ root [ ]
と表示され,rootプロンプトに変わる. 簡単な例では root [ ] 3/sqrt(23)
(const double)6.25543242171224370e-01 の様な電卓機能もある. ROOTを終了するためには,
root [ ] .q
マクロの実行とグラフ描画
ROOTのコマンド類を授業で詳細に説明するのは困難であり,またC/C++の知識が必要でもある. まずミュ ーオンの寿命測定の準備で得られるデータのグラフ化を例にし,次にヒストグラムの作り方を説明する.
$ cp /home/wmass/exp3/graph.c .
$ cp /home/wmass/exp3/graphX.c .
$ cp /home/wmass/exp3/graphXS.c .
$ cp /home/wmass/exp3/data.dat .
として,Cプログラムとデータファイルの雛形を作業領域にコピーしておく. データファイルは$ less data.dat とすれば中身がわかるが,
HV curve <Group 1: Jan 20, 2008>... グラフのタイトル
HV [V] ... X軸名
Efficiency [%] ... Y軸名
1000 80 1.26 1000 800 ... 1つ目のデータ
1100 76 1.35 1000 760 ... 2つ目
1200 75 1.37 1000 750 ...
となっている. データとして,X,Y,Yの不確かさ,効率計算での分母と分子の計数の順に与えている. これを 読み込んで,Yの不確かさつきのグラフにするには,rootを起動して
root [ ] .x graph.c
として,Cのプログラムgraph.cを実行(.x)させる. もう1つX端末を開いて,emacsでgraph.cの中身を 簡単に見てみよう. 基本的にはC言語プログラムであるが,ヘッダー文が不要(ROOTが扱うCインタープリ ターにライブラリーとして組み込み済みであるため)などの違いがある.
[1] 16-22行:用いる変数の定義
[2] 24-41行: C/C++でのデータファイルの読み取り
[3] 46-68行:ROOTライブラリーを使ってグラフを描く.説明は各行のコメントを参照
[4] 71-75行:ROOTによりグラフをepsファイルに保存
ROOTはC++で書かれているので,何か(オブジェクト)を持ってきて,それをどうするか,というプログ ラミングになっている. [3]ではキャンバス(c1)と誤差棒つきのグラフ(gr)オブジェクトが定義されて,それ らの定義の際に,キャンバスの大きさとか描画するデータなどを受け渡している.
読み込むデータファイル名を変更するには12行目を変えれば良い. emacs画面で変更保存し(C-x C-s),
ROOT画面で再度 .x graph.c を実行する. 同様にデータポイントの色や形の変更なども,2つの画面を使う ことで結果を確かめながら簡単にできる. 色や形は,キャンバスのView/Colors やView/Markersタブを開く と情報が得られる.
描画されたグラフオブジェクト上で設定を変更できるのもROOTの機能のひとつである. View/Editorで編 集画面を表示させ,グラフ上の変更したい部分(メンバー)上でマウスをクリックするとその設定が示される. 変 更後は,File/Save/c1.epsの選択でepsファイルが生成される.
data.datには計算しておいた効率と不確かさを入力したが,計算をプログラムに任せる方が通常であろう.
graphX.cは同じ入力データを読み込めるが,これらをdummy1,dummy2として読み取ってはいるもののその後
は使っていない(だから適当に値1を入れておけば読み取りに問題ない). 同様に入力ファイル名を正しく与え てから
root [ ].x graphX.c
としてグラフを描かせてみよう. (データファイル名)X.epsが生成される. このプログラムでは,計数が少ない場 合(10以下)のポアソン分布による非対称な不確かさも,関数poisson_errorを用いて近似的に考慮されている. そのため使用するグラフオブジェクトもTGraphErrorsからTGraphAsymmErrors に変更している.
光電子増倍管のHVカーブでシングルレートも一緒に描くにはデータセットとして HV single time dummy denom numer
としたデータを用意し,
root [ ].x graphXS.c
とすると,上にHVカーブが下にシングルレートの測定結果を描画できる.
(ポアソン分布とガウス分布による不確かさの違いは 【5】統計処理での説明から予想されるが,授業では定量 的には扱わない)
ヒストグラムと関数フィット
統計処理したい実験データの分布はヒストグラム(度数分布表)を用いて表すことが多い. ROOTにはヒスト グラム表示や関数フィットなどの機能もある. ROOTを起動してから,histo.cをコピーして実行しよう.
root [ ] .!cp /home/wmass/exp3/histo.c . ... cpシェルコマンドをROOTから実行 root [ ] .x histo.c ... histo.cを実行
[87.5,92.5]の範囲で一様乱数を発生した場合,中心値=90,標準偏差2.5/2.3548のガウス分布,中心値=90,全 値半幅2.5のBreit-Wigner分布の乱数を発生した場合のグラフが描かれる. 主なROOT関数(これらはCプロ グラムで書かれているがroot[ ]コマンドラインにタイプしても同じ)を説明する.
TH1F *h1 = new TH1F("h1","Uniform",50,80,100)... 1次元ヒストグラムh1をタイトル,ビン数,最小 値,最大値を与えて用意
h1->Fill(x).... データをつめる h1->Draw()... プロットする
グラフの場合と同様に,軸名や色などの指定ができる. 例は複数のグラフやヒストを1ページに表示する方法 も示している.
c2->Divide(2,2)...キャンバスc2を2列2行に分割 c2->cd(2)...2番目のパッドに移動(その後にDrawする)
グラフのフィットの例を以下に示す. gaus,expo,polN(N次多項式)などは定義済の関数で,これらを用いて 別の関数も定義できる. histo.cで作成したヒストグラムを使って,対話形式でフィットをしてみよう. ROOT のウィンドウで
root[ ] .ls... オブジェクトのリスト
とすると既に定義されているオブジェクト,h1,h2,h3が表示される. root [ ] c2->cd(2).... 2番目のパッドに移動
root [ ] h2->Fit("gaus")...ガウス関数でフィット
root [ ] h2->GetFunction("gaus")->SetLineColor(2)...ガウス関数の色を赤に root [ ] h2->Draw()... 再度描画
root [ ] gStyle->SetOptFit(1111)... Fit結果を表示する root [ ] c2->cd(3).... 3番目のパッドに移動
root [ ] h3->Fit("gaus","","",86,94)... 領域[86,94]のみをガウス関数でフィット root [ ] h3->GetFunction("gaus")->SetLineColor(5)...ガウス関数の色を青に root [ ] h3->Draw()... 再度描画
複数のヒストグラム分布を比べるには,以下のようにsameオプションをつけて描画する. root [ ] c2->cd(1)... 1番目のパッドを使って
root [ ] h3->Draw()... h3ヒストグラムを描画し
root [ ] h2->SetLineColor(3)...h2ヒストグラムの色指定 root [ ] h2->Draw("same")...同じパッドに描画
自分で定義した関数でフィットしたい場合は root [ ] c2->cd(4)....4番目のパッドに移動
root [ ] TF1 *myf = new TF1("myf","[0]*exp(-(pow(x-[1],2)/2/pow([2],2))+[3]))"
... 4パラメータのmyf(定数+ガウス関数)を定義 root [ ] h3->Fit("myf")... myfでh3をフィット
フィットは初期値が悪いと収束しない場合が多く,適切な値を設定する必要がある.
root [ ] myf->SetParameters(1000,90,2,0)...パラメータの[0]∼[3]の初期値をあたえる root [ ] h3->Fit("myf")... もう一度フィット
root [ ] h3->GetFunction("myf")->SetLineColor(2) root [ ] h3->Draw()
などができる. プロットを保存するには,File/Save/c2.eps を選択する.
http://root.cern.ch/にroot使用例やマニュアルがある. また,Linux, Windows, Macなどのプラットホ ームで使用できるコードが無償で配布されている.
ミューオン寿命測定 データ解析の準備
1 解析用端末にログインする
データ解析は,実験室にある解析用Linuxもしくは全学計算機システムを利用して行う.これには,以下2 通りの方法がある.
■実験室にある解析用Linuxを使用する 実験室には,解析用に使用可能なLinux端末が8台ほど用意され ており,ミューオン寿命データの解析を行える.注意:受講生全員が1人1台使えるほどの数は用意されていな いため,もし不足した場合は他の人と交代で使用するか,次項を参照しながら全学計算機システムを使用する こと.
まず,グループアカウントでLinux端末にログインする.ユーザー名はgroup 1∼4 で、パスワードは担当 教員に聞く.
ログインできたら,各自の作業領域を作成する.解析用端末から見えているファイルやディレクトリは,端 末自身のハードディスクではなく,別の計算機のディスクをネットワーク越しに接続しており(Network File
System; FS),同じアカウントを使う限り,どの端末でログインしても共通の領域を操作することになる.し
たがって,自分専用の作業領域を作成しておかないと,同じグループの他の人の作業との衝突が起き,意図せ ずファイル内容が変更されるなどの問題が生じることがある.
$ mkdir directory名 # 作 業 デ ィ レ ク ト リ を 作 成 .
$ cd directory名 # 作 業 デ ィ レ ク ト リ に 移 動 .
directory名は適切につける.特に同じグループの他の人と重複した名前にならないよう注意すること.
■全学計算機システムを使用する場合 全学計算機システムを使用する場合,自分のノートパソコンが必要と なる.必ず実験の授業に持参すること.注意:実験室でインターネット接続するには,大学無線LANシステム を利用する.多くの人が同時に接続すると,回線速度が低下してしまう可能性がある.もし作業に支障をきた すほど速度が低下した場合は,前項「実験室にある解析用Linuxを使用する場合」に従って実験室端末を使用 すること.
まず,以下の手順で大学無線LANシステムに接続する.
1. “utwlan-w”という名前のネットワークを探し,接続する.
2. セキュリーキーを入力.セキュリティーキーはutwla-pubに接続した上でブラウザを開き,「パスフレ ーズを入手」というリンクから調べることができる.
3. ウェブブラウザを開くと,「筑波大学アクセスポイント接続」というページが表示されるので,「日本語 ページはこちら」を選択.
4.「アクセスポイント接続:利用に際しての注意事項」というページに遷移するので,内容を理解した上 で 同意する (accept)をクリック.
5. User ID (UTID)とPasswordを入力してloginをクリック.
これで,インターネットに接続できるようになる.
次に,以下のウェブページにある説明を参考に,Linuxデスクトップにログインできるように設定を行う.
https://www.u.tsukuba.ac.jp/remote/#linux