Как нарисовать COLZ TH2F из TTree? - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь нарисовать график COLZ, то есть 2D-гистограмму с цветной полосой, из дерева, и могу сам определить количество бинов. Мое дерево называется событие:

Я пробовал:

event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");

и

event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();

Но ни одна из них не нарисует гистограмму.

Это нарисует точечный график:

event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();

Это нарисует график COLZ, но, используя этот метод, я не могу сам определить размеры бинов:

 event->Draw("x:y", "x>100", "COLZ");

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Не могу воспроизвести проблему, у меня работает ваша первая попытка:

event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");

Может также работать в одной строке:

event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");

В вашем третьем случае, если hist1->Draw(); рисует точечный график, тогда hist1->Draw("COLZ"); также должно работать. Ты бежал точно так же? Если да, можете ли вы предоставить Минимальный, Полный и Проверяемый пример ?

Примечание: результат hist1->Draw(); является , а не точечной диаграммой (здесь ROOT вводит в заблуждение), это гистограмма, в которой содержимое ячейки представлено точками. Смотрите, например этот сюжет , где вы можете угадать лежащие в основе корзины.

0 голосов
/ 13 марта 2019

Спасибо за ваш ответ, Келдорн, но проблема заключалась в части моего кода, которую я не опубликовал.

Я обращался к своему корневому файлу с помощью:

 TFile f("file.root"); 
 TTree* event = (TTree*)f.Get("EventTree");

Изменив это на:

TFile *f = new TFile("file.root");
TTree* event = (TTree*)f->Get("EventTree");

исправлены все мои проблемы с гистограммой!

...