簡體   English   中英

將C ++轉換為pyroot:如何從pyroot中的文件獲取文件對象?

[英]Converting C++ to pyroot: How to get a file object from a file in pyroot?

  1. 我正在進行中微子研究,需要我通過疊加直方圖進行數據分析。 我們正在使用ROOT。 我目前正在嘗試將以下代碼從C ++轉換為pyroot:

     #include "TFile.h" #include "TH1F.h" #include "TCanvas.h" #include "TString.h" void myscript() { //get a histogram named vtx_0 from the file 5A_data TFile* file = TFile::Open("5A_data"); TH1F* hist = file->Get("vtx_0"); TCanvas* canvas = new TCanvas("c1", "Dynamic Filling Example", 200, 10, 700,500); hist->Draw(); } 
  2. 這是我到目前為止用python重新編寫的代碼:

     from ROOT import TFile, TH1F, TCanvas, TString def myscript(): #get vtx_0 from 5A_data TFile file1 = open("5A_data") TH1F hist = 
  3. 我對Python的接觸有限。 上面的Python代碼主要是通過查看各種在線示例創建的,因此,我什至不確定我到目前為止編寫的內容是否正確。

  4. 我最需要和不能在網上找到的是如何將C ++中的下一行隱藏到Python中的等效行中。

     TH1F* hist = file->Get("vtx_0"); 

如何做到這一點?

  1. 此外,如果您發現到目前為止我編寫的Python代碼有任何問題,請告訴我我做錯了什么以及如何解決。 謝謝。

變量聲明不需要類型,這樣的操作可能會讓您入門:

from ROOT import TFile, TH1F, TCanvas, TString
def myscript():
    tf = TFile("5A_data")
    print(dir(tf))
    #tree = tf.Get("vtx_0")
    fo = tf.GetObject("vtx_0")
    print(dir(fo))
    for x in fo:
        print(x)
    import pdb;pdb.set_trace()

引用:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM