2011-06-20 26 views
1

我正在使用CERN的ROOT框架(必需),並且我想從TNtuple中獲取數據並繪製它。我可以在創建TNtuple時繪製數據,也可以在將其寫入.root文件後繪製數據。一些支持文檔建議我創建一個TTree,但是似乎它可能是過度殺傷/迂迴,因爲我不會將它用於其他任何事情(並且TNtuple滿足我的所有其他要求)。有沒有人有更好的建議如何從TNtuple中提取數據並繪製它?CERN ROOT從TNtuple中提取數據

回答

5

由於TNtuple繼承自TTree,因此您可以直接在TNtuple上使用支持文檔中提供的所有TTrees方法。 這尤其意味着您可以使用TTree :: Draw(),這通常足以快速繪製數據。該功能記錄在here

如需更詳細的繪圖,您將不得不通過事件讀取TNtuple事件中的數據,並將其送入ROOT中您最喜愛的繪圖工具。這再次遵循樹中的基本原則。我在ROOT主頁上找到的最好例子是​​的「閱讀樹」一節。

1

用於創建TNtuples的直方圖和圖的方法與TTrees基本相同。的代碼:

ntuple->Draw("var"); 

將創建存儲在所述n元組可變var的直方圖。如果你想在n元組繪製一個變量的另一個功能,使用

ntuple->Draw("xVar:yVar"); 

你可以做票友的東西,如只有當一個邏輯條件滿足創建地塊。例如,假設你想要的var1直方圖僅當var2是大於2且var3小於0

ntuple->Draw("var","var2 > 2 && var3 < 0"); 

通過以這種方式繪製,ROOT自動設置裝倉和範圍的x軸。如果你想自己控制這些功能,使用

ntuple->Draw("var >> hist(Nbins,xmin,xmax)"); 

這將創建對象hist,你當作根通常柱狀圖對象。如前一篇文章所述,這在ROOT手冊中有記錄,以及其他一些功能和工具。不幸的是,手冊並不總是給出明確的解釋。

0
{ 
    ntuple->Draw("py:px","px>py","goff"); 
    TGraph *gr = new TGraph(ntuple->GetSelectedRows(),ntuple->GetV2(), ntuple->GetV1()); 
    gr->Draw("AP"); 
}