CERN ROOT Извлечение данных из TNtuple - PullRequest
1 голос
/ 20 июня 2011

Я использую ROOT-инфраструктуру CERN (обязательно) и хочу взять данные из TNtuple и построить их график.Я могу либо построить график данных при создании TNtuple, либо после записи его в файл .root.В некоторой документации поддержки предлагалось, чтобы я создал TTree, но казалось, что это может быть излишним / обходным, так как я бы не использовал его ни для чего другого (а TNtuple удовлетворяет всем другим моим требованиям).У кого-нибудь есть лучшее предложение о том, как извлечь данные из TNtuple и построить их график?

Ответы [ 3 ]

5 голосов
/ 21 июня 2011

Поскольку TNtuple наследуется от TTree, вы можете использовать все методы, представленные в документации поддержки для TTrees, непосредственно в TNtuple. Это в особенности означает, что вы можете использовать TTree :: Draw (), которого обычно более чем достаточно для быстрого отображения данных. Эта функция задокументирована здесь .

Для более сложных графиков вам придется читать данные из события TNtuple по событию и передавать их в ваш любимый графический инструмент в ROOT. Это снова следует основным принципам дерева. Лучший пример, который я мог найти на домашней странице ROOT, - в руководстве пользователя , раздел деревья в параграфе «Чтение дерева».

1 голос
/ 29 июля 2012

Методы, используемые для создания гистограмм и графиков для TNtuples, по существу такие же, как у TTrees. Код:

ntuple->Draw("var");

создаст гистограмму переменной var, хранящейся в Ntuple. Если вы хотите построить одну переменную в Ntuple как функцию другой, используйте

ntuple->Draw("xVar:yVar");

Вы можете делать причудливые вещи, такие как создание графиков, только тогда, когда логическое условие выполнено. Например, предположим, что вам нужна гистограмма var1, только когда var2 больше 2, а var3 меньше 0.

ntuple->Draw("var","var2 > 2 && var3 < 0");

При таком построении графика ROOT автоматически устанавливает биннинг и диапазон для оси x. Если вы хотите сами управлять этими функциями, используйте

ntuple->Draw("var >> hist(Nbins,xmin,xmax)");

Это создает объект hist, который вы рассматриваете как обычный объект гистограммы в ROOT. Как указано в предыдущем посте, это задокументировано в руководстве ROOT вместе с некоторыми другими функциями и инструментами. К сожалению, руководство не всегда дает четкие объяснения.

0 голосов
/ 02 марта 2015
{
  ntuple->Draw("py:px","px>py","goff");
  TGraph *gr = new TGraph(ntuple->GetSelectedRows(),ntuple->GetV2(), ntuple->GetV1());
  gr->Draw("AP");
}
...