2009年7月17日金曜日

How to use pyROOT 基礎編 その7

Ntuple

ntuple は、 double, triple, quadruple, ・・・ の n番目のこと
Ntuple クラスを使うと、いろいろなヒストグラムを作ることができる


Ntuple の使い方は

1. 空の Ntuple を作成する
ntuple = ROOT.TNtuple("name", "title", "変数リスト" [, バッファサイズ])

変数リストは次のように ':' で区切る
"x:y:z:energy"
"px:py"


2. ファイルからデータを読み込む
ntuple.Fill(px, py)

3. Ntuple の中身を確認する
ntuple.Print()

4. ヒストグラムを作成する
ntuple.Draw("変数リスト" [, "条件"] [, "表示オプション"] )

変数リストは、ヒストグラムを作成するときに使用する式
"x"
"sqrt(x)"
"x+y/z"
"x:y"
"x:y:z"
"x*2:sqrt(y)"


条件は特定のデータからヒストグラムを作成することに使う
"x<0"
"sart(x+y)>4"
"x>0&&z<0"



* 条件用の変数を作成するには TCut を使う
cut1 = ROOT.TCut("x>0 && y>0 && z > 0")

複数の条件を組み合わせる
ntuple.Draw("sqrt(x):y*2", cut1 && cut2)



#/bin/usr/env python

import sys, os
import ROOT


if __name__=='__main__':


if len(sys.argv) < 2 :
sys.exit(1)

if not os.path.exists(sys.argv[1]) :
sys.exit(1)

# read data from file
fin = open(sys.argv[1], "r")
fins = fin.readlines()
fin.close()


# create Ntuple
ntuple = ROOT.TNtuple("n", "Tuple Example", "x:y:z:energy")


# set data point
for data in fins :
item = data.split(None)
ntuple.Fill(float(item[0]), float(item[1]),
float(item[2]), float(item[3]))

# print
ntuple.Print()

cv = ROOT.TCanvas("cv", "Graph Example", 200, 10, 700, 500)

ntuple.Draw("sqrt(x):y*2 >> hist", "z<0", "APL")
cv.Update()


# export
cv.Print("ntuple1.png")




ntuple に データを読み込ませたあと中身を表示するとこんな感じ

$ python ntuple1.py data2.dat
******************************************************************************
*Tree :n : Tuple Example *
*Entries : 5 : Total = 2773 bytes File Size = 0 *
* : : Tree compression factor = 1.00 *
******************************************************************************
*Br 0 :x : *
*Entries : 5 : Total Size= 622 bytes One basket in memory *
*Baskets : 0 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 1 :y : *
*Entries : 5 : Total Size= 622 bytes One basket in memory *
*Baskets : 0 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 2 :z : *
*Entries : 5 : Total Size= 622 bytes One basket in memory *
*Baskets : 0 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*
*Br 3 :energy : *
*Entries : 5 : Total Size= 652 bytes One basket in memory *
*Baskets : 0 : Basket Size= 32000 bytes Compression= 1.00 *
*............................................................................*

0 件のコメント:

コメントを投稿