example of macro to read data from an ascii file and create a root file with a Tree.
NOTE: comparing the results of this macro with those of staff.C, you'll notice that the resultant file is a couple of bytes smaller, because the code below strips all white-spaces, whereas the .C version does not.
import os
import ROOT
from ROOT import TFile, TTree, addressof, gROOT
gROOT.ProcessLine(
"""struct staff_t {
Int_t Category;
UInt_t Flag;
Int_t Age;
Int_t Service;
Int_t Children;
Int_t Grade;
Int_t Step;
Int_t Hrweek;
Int_t Cost;
Char_t Division[4];
Char_t Nation[3];
};"""
)
def staff():
staff = ROOT.staff_t()
f =
TFile(
"staff.root",
"RECREATE")
tree =
TTree(
"T",
"staff data from ascii file")
tree.Branch("staff", staff, "Category/I:Flag:Age:Service:Children:Grade:Step:Hrweek:Cost")
tree.Branch("Divisions", addressof(staff, "Division"), "Division/C")
tree.Branch("Nation", addressof(staff, "Nation"), "Nation/C")
fname = os.path.join(str(ROOT.gROOT.GetTutorialDir()), "io", "tree", "cernstaff.dat")
with open(fname) as file:
for line in file.readlines():
t = line.split()
staff.Category =
int(t[0])
staff.Service =
int(t[3])
staff.Children =
int(t[4])
staff.Division = t[9]
staff.Nation = t[10]
tree.Fill()
tree.Print()
tree.Write()
f.Close()
if __name__ == "__main__":
staff()
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
A TTree represents a columnar dataset.
- Author
- Wim Lavrijsen
Definition in file staff.py.