2016-08-07 6 views
0

Ich habe gerade angefangen, pyroot zu verwenden, um root-Dateien zu lesen, und ich kann die Daten aus einer Datei nicht mit jupyter notebook lesen. Hier ist, wie die TBrowser wie folgt aussieht:Lesen einer TTree im Root-Verzeichnis mit PyRoot

enter image description here

ich so begonnen:

import ROOT as root 
import numpy as np 

f = root.TFile("RealData.root") 
myTree = f.Get("tree") 

entries = myTree.GetEntriesFast() 

Bis hierher es funktioniert und wenn ich Einträge drucken bekomme ich die richtige Anzahl von entires Ich habe in die Datei. Aber ich weiß nicht, wie man tatsächliche Daten vom Baum liest (event_number, n_channels, etc.) Wenn ich etwas wie myTree.events oder myTree.event_number versuche, hört der Kern auf zu arbeiten. Was soll ich tun, um die Daten vom Baum zu lesen?

Antwort

0

Normalerweise mit pyROOT, können Sie einfach so etwas wie:

import ROOT as root 
import numpy as np 

f = root.TFile("RealData.root") 
myTree = f.Get("tree") 
for entry in myTree:   
    # Now you have acess to the leaves/branches of each entry in the tree, e.g. 
    events = entry.events 

Ich weiß nicht genug darüber, wie jupyter funktioniert zu wissen, ob das keine besonderen Probleme verursachen würde. Haben Sie versucht, dasselbe Skript mit einem normalen Python-Interpreter auszuführen?

+0

Wenn ich dies tue bekomme ich diesen Fehler: TypeError: angeforderte Klasse 'ROOT :: Event' existiert nicht – Silviu

+0

Klingt, als ob Sie ROOT-Wörterbücher für die Event-Klasse fehlen (Ich nehme an, das ist eine benutzerdefinierte Klasse, die Sie nicht verwenden Kernwurzel eins?). Sie sollten in der Lage sein, eine Zeile wie: 'root.gInterpreter.GenerateDictionary (" \ path \ to \ Event.h ")' hinzuzufügen, damit ROOT das Wörterbuch im laufenden Betrieb generiert. Oder schauen Sie sich http://wlav.web.cern.ch/wlav/pyroot/tpymyclass.html an –