• 検索結果がありません。

付録 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は同じ入力データを読み込めるが,これらをdummy1dummy2として読み取ってはいるもののその後

は使っていない(だから適当に値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台ほど用意され ており,ミューオン寿命データの解析を行える.注意:受講生全員が11台使えるほどの数は用意されていな いため,もし不足した場合は他の人と交代で使用するか,次項を参照しながら全学計算機システムを使用する こと.

まず,グループアカウントで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

関連したドキュメント