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)


  1. #/bin/usr/env python  
  2.   
  3. import sys, os  
  4. import ROOT  
  5.   
  6.   
  7. if __name__=='__main__':  
  8.   
  9.   
  10.     if len(sys.argv) < 2 :  
  11.         sys.exit(1)  
  12.   
  13.     if not os.path.exists(sys.argv[1]) :  
  14.         sys.exit(1)  
  15.   
  16.     # read data from file  
  17.     fin = open(sys.argv[1], "r")  
  18.     fins = fin.readlines()  
  19.     fin.close()  
  20.   
  21.   
  22.     # create Ntuple  
  23.     ntuple = ROOT.TNtuple("n""Tuple Example""x:y:z:energy")  
  24.       
  25.           
  26.     # set data point  
  27.     for data in fins :  
  28.         item = data.split(None)  
  29.         ntuple.Fill(float(item[0]), float(item[1]),  
  30.                     float(item[2]), float(item[3]))  
  31.   
  32.     # print   
  33.     ntuple.Print()  
  34.   
  35.     cv  = ROOT.TCanvas("cv""Graph Example"20010700500)  
  36.   
  37.     ntuple.Draw("sqrt(x):y*2 >> hist""z<0""APL")  
  38.     cv.Update()  
  39.   
  40.   
  41.     # export  
  42.     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 件のコメント:

コメントを投稿