簡體   English   中英

通過 Python 使用 Root 創建帶有分支的 TTree

[英]Creating a TTree with Branches in Using Root through Python

我正在嘗試通過 python 創建一個在根中帶有分支的樹。 我有一個 .root 文件,我正在嘗試創建分支,這些分支是我的 .root 文件的變量(或數據點)。 這是我的嘗試:

f = ROOT.TFile('event.root', 'read') #opening the file and creating a file object f
T = ROOT.TTree("T", "simple tree")



#ntuple = ROOT.TNtuple("ntuple","Demo ntuple","px:py:pz:m")
T.Scan("px:py:pz:m")

這只是給我:

Error in TTreeFormula::Compile: Bad numerical expression : “px”
Error in TTreeFormula::Compile: Bad numerical expression : “py”
Error in TTreeFormula::Compile: Bad numerical expression : “pz”
Error in TTreeFormula::Compile: Bad numerical expression : “m”

Row * px * py * pz * m *

我明白為什么,因為我沒有定義我的變量。 因此,我正在查看一個示例https://www.niser.ac.in/sercehep2017/notes/RootTutorial_TTree.pdf (幻燈片 3),並嘗試將應包含在我的 .root 文件中的變量定義為:

f = ROOT.TFile('event.root', 'read') #opening the file and creating a file object f
T = ROOT.TTree("T", "simple tree")

px_as_floats = float(px)
py_as_float = float(py)
pz_as_float = float(pz)
m_as_float = float(m)
T.Branch("px",&px,"px/F")
T.Branch("py",&py,"py/F")
T.Branch("pz,&pz,"pz/F")
T.Branch("m",&m,"m/F")

但是,我最終遇到了這個錯誤:

Traceback (most recent call last):
File “”, line 1, in
File “/mnt/c/1/writeroot.py”, line 17
T.Branch(“px”,&px,“px/F”)
              ^
SyntaxError: invalid syntax

有沒有辦法用python寫這個? 寫作:

T.ROOT.Branch(“px”,&px,“px/F”)

也沒有用。

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mnt/c/1/writeroot.py", line 17
  T.ROOT.Branch("pt1",&pt1,"pt/F")
                    ^
 SyntaxError: invalid syntax

我該如何修復語法。 最終,我試圖將 .root 文件中使用的字典加載到我的樹中,然后對字典中的項目進行一些計算。 換句話說,如何從 .root 文件中提取字典?

當我輸入:

當我輸入 gFile->ls() 時,我得到

TFile** rdata.root TFile* rdata.root KEY: TH1F mass;1 mass KEY: TNtuple tnt;1 tnt

除非您嘗試進行按位 AND 運算,否則符號 & 無效。 我假設您想發送指向原始變量的指針。 我們不在 python 中這樣做。 如果是這種情況,請在 google 上查找本地和全局變量。 Tl; dr在python中所有可變類型都是通過引用傳遞的我個人會這樣寫:

T.Branch("px",px,"px/F")
T.Branch("py",py,"py/F")
T.Branch("pz", pz,"pz/F")
T.Branch("m",m,"m/F")

暫無
暫無

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

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