Я занимаюсь исследованием нейтрино, которое требует от меня анализа данных с наложением гистограмм. Мы используем 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();
}
Это код, который я переписал на python:
from ROOT import TFile, TH1F, TCanvas, TString
def myscript():
#get vtx_0 from 5A_data
TFile file1 = open("5A_data")
TH1F hist =
У меня было ограниченное воздействие Python. Приведенный выше код Python был создан в основном на основе просмотра различных онлайн-примеров, и поэтому я даже не уверен, что то, что я написал до этого момента, является правильным.
Что мне больше всего нужно, и что я не смог найти в Интернете, так это как преобразовать следующую строку в C ++ в ее эквивалент в Python.
TH1F* hist = file->Get("vtx_0");
Как это сделать?
типы не нужны для объявления переменных, и что-то вроде этого может помочь вам начать:
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()
ссылка:
Других решений пока нет …