Я работаю с C ++ и ROOT. Я создал простое дерево в отдельном файле / коде. C (он называется tree_ex1. c), и я пытаюсь получить содержимое этого дерева и построить гистограмму в другом файле. C (он называется tree_ex2. c). Я ожидаю, что при использовании tree_ex1. c, если я построю гистограмму одной из переменных в дереве, это будет та же самая гистограмма, которую я построил бы со вторым файлом. C, tree_ex2. c
В моем файле tree_ex1. c я создал простое дерево и построил гистограмму одной из ветвей дерева. Я могу получить гистограмму от tree_ex1. c. Затем в моем файле tree_ex2. c я пытаюсь вызвать содержимое моего дерева в первом файле для построения той же переменной. Однако моя гистограмма из tree_ex2. c выглядит не так.
Ниже моя попытка. Я получаю сюжет, который в основном выглядит пустым. Количество записей равно 10000, но среднее значение и стандартное отклонение равно 0.
void tree_ex2()
{
//Filling Histograms
//TH1F *hist = new TH1F("hist", "", 100, 0., 2.); (worked)
TH2F *h_pxpy = new TH2F("h_pxpy", "py Vs px", 100, -2.0, 2.0, 100, -2.0, 2.0);
TH1F *h_pt = new TH1F("h_pt", "pt", 100, 0., 5.0);
TFile *f = new TFile("new.root"); //new.root is name of file that was "RECREATED" in tree_ex1
//TFile *f = TFile::Open("new.root");
TTree *tree1 = (TTree*) f->Get("T");
//Set up the variables
Float_t px, py, pz, pt;
Double_t random;
Int_t i;
//Set Variables to Tree's Branches
tree1->Branch("px", &px);
tree1->Branch("py", &py);
tree1->Branch("pz", &pz);
tree1->Branch("pt", &pt);
tree1->Branch("random", &random);
Int_t nentries = (Int_t)tree1->GetEntries();
for (i = 0; i < 10000; i++)
{
tree1->GetEntry(i);
h_pxpy->Fill(px, py);
h_pt->Fill(pt);
}
TCanvas *c1 = new TCanvas();
h_pxpy->Draw("colz");
//c1->SaveAs("tree_example2_pxpy.png");
TCanvas *c2 = new TCanvas();
//c1->Update();
h_pt->Draw();
//c2->SaveAs("tree_example2_pt.png");
//f->Write();
f->Close();
}
Что вызывает эту проблему?