Преобразование C ++ в Pyroot: Как получить объект файла из файла в 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, который я написал до сих пор, пожалуйста, скажите мне, что я сделал неправильно и как я могу это исправить. Спасибо.

1

Решение

типы не нужны для объявления переменных, и что-то вроде этого может помочь вам начать:

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()

ссылка:

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]