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]))
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 件のコメント:
コメントを投稿