Невозможно получить / заполнить гистограмму, начиная с ntuple, используя ROOT.
Я искал предыдущие ответы, и все они используют ttree, включая корневую документацию. У меня его нет. Не новичок в использовании root, но мне очень трудно его использовать. Ни один из найденных методов не работает с моим кодом (или я не знаю, как их реализовать).
Это примерно то, что я нашел повсюду:
https://root.cern.ch/root/roottalk/roottalk03/2620.html
но нет, я использую TH1F и у меня нет дерева (см. код ниже)
{
gROOT->Reset();
#include "Riostream.h"
#include <iostream>
#include <fstream>
in.open( "somefile.dat");
TNtuple *ntuple = new TNtuple("ntuple","some data from ascii file","index1:index2:index3");
//declare variables, create histograms
Double_t x,y,Price[215000],Diff[215000],Ret[215000],trend, Data[215000];
TFile *f = new TFile("TrendsCountBove.root","RECREATE");
TH1F *h1 = new TH1F("h1","Retornos",100,-0.3,0.3);
TH1F *histo = new TH1F ("hist_from_ntuple", "some title", nbins, min,max);
//do some stuff (didn't paste all calculations i do, but that works fine)
for (Int_t i = 0; i+1 < nlines-1; i++) {
Diff[i] = Price[i+1]-Price[i];
Ret[i] = TMath::Log(Price[i+1])-TMath::Log(Price[i]);
h1->Fill(Ret[i]);
ntuple->Fill(i*1.0,Ret[i],Price[i+1]);
}
Итак, все работает нормально, никаких проблем. Но опять же, пожалуйста, кто-нибудь мог бы объяснить мне как можно подробнее, как я могу заполнить histo, скажем, index1, или 2, или 3. Я отстой в C ++, и мне это не очень нравится, и я не понимаю его.
Я ожидаю красивой гистограммы, где я могу установить все вещи, такие как заголовок, максимум и минимум, поле статистики и т. Д. По умолчанию root делает это через ntuple, но это не то, что мне нужно.
Большое спасибо заранее.
ntuple->Draw("branchname>>histname");
. - person pseyfert   schedule 26.03.2019