Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
89
Добавлен:
22.08.2013
Размер:
8.45 Mб
Скачать

Гистограммы в ROOT

Гистограммы в ROOT реализованы как иерархия классов, наследующих корневому классу TH1

Наиболее употребляемым на практике классом является TH1F, это класс одномерных гистограмм, на содержимое бина (столбца) которых отводится 4 байта (максимальная точность 7 знаков)

ROOT поддерживает также двумерные и трехмерные гистограммы

Создание гистограммы

Общий синтаксис создания гистограммы

TH1F­*h1­=­new­TH1F("HistName","Histogram­title",Nbins,xmin,xmax)

Создается гистограмма (объект класса TH1F) и указатель h1 на этот объект

5 параметров, передаваемых конструктору гистограммы

HistName

имя гистограммы, без пробелов

Histogram title

заголовок гистограммы

Nbins

число бинов в гистограмме (целая величина)

xmin, xmax

диапазон изменения гистограммируемой величины

Внесение значений в гистограмму

Для внесения значений в гистограмму используется метод Fill(value), где value — значение, которое требуется занести

h1->Fill(24.7)

Метод Fill(value) увеличивает содержимое бина, к которому принадлежит значение value, на единицу

Чтобы внести значение с некоторым весом w, воспользуйтесь методом

Fill(value, w)

Внести значение 7.2 трижды:

h1->Fill(7.2,3)

Вес может быть отрицательной величиной

Рисование гистограммы, опции рисования

Для рисования гистограммы используется метод Draw():

h1->Draw()

В методе Draw() можно задавать различные опции рисования

Например, h1->Draw("C")

С — провести кривую через значения бинов

P — нарисовать маркеры для каждого значения

E — нарисовать погрешности значений

Опции можно совмещать, безо всяких пробелов:

h1->Draw("CP")

Чтобы нарисовать две гистограммы на одном рисунке, следует задать опцию same для второй:

h1->Draw()

h2->Draw("same")

Пример создания, заполнения и рисования гистограммы

Создадим гистограмму

TH1F *h1 = new TH1F("h1", "Example histo",16,-4,4)

Заполним гистограмму, последовательно применяя методы Fill(value) и

Fill(value, w)

h1->Fill(-2.3)

h1->Fill(-0.9)

h1->Fill(0,3)

h1->Fill(1.1,2)

h1->Fill(2.7)

Нарисуем гистограмму:

h1->Draw()

Информация, выводимая по умолчанию

заголовок гистограммы

окно стат. информаци h1 имя объекта

Entries число вхождений Mean среднее значение RMS оценка стандартного отклонения

NB RMS не является среднеквадратичным значением!

Поле для рисования canvas

Поле, на которое выводятся графические объекты в ROOT, называется canvas (класс TCanvas)

Объект, например гистограмма, рисуется на текущем активном canvas. Если canvas не существует, то он создается автоматически и имеет по умолчанию имя c1

Чтобы разделить canvas на несколько частей, можно воспользоваться методом TCanvas::Divide(k,l), где k и l число разбиений по горизонтали и вертикали соответственно

Чтобы выбрать, на какой части canvas’а следует рисовать объект, следует применить метод TCanvas::cd(n), где n — номер части. Разделы нумеруются слева направа, сверху вниз

Пример. Сохранение изображения на диск

Пример

TCanvas *MyC = new TCanvas ("MyC", "Test canvas", 1);

MyC->Divide(2,2) MyC->cd(1) h1->Draw()

Чтобы сохранить текущее изображение на canvas на диск, следует выбрать курсором мыши File menu/Save As… и далее указать желаемый формат файла и его имя

Сложение, деление и умножение гистограмм

Методы Add(), Divide() и Multiply() позволяют

складывать, делить и умножать гистограммы.

Чтобы добавить к гистограмме h1 гистограмму h2

h1->Add(h2)

Можно добавить гистограмму с некоторым весом w

h1->Add(h2,w)

Вычесть одну гистограмму из другой

h1->Add(h2,-1)

Складывать, делить и умножать можно только гистограммы с одинаковым числом бинов!

Деление и умножение осуществляется аналогично

h1->Divide(h2)

h1->Multiply(h2)

Прочие аспекты работы с гистограммами

Создать идентичную копию (клон) гистограммы

TH1F *h1_clone = (TH1F*)h1->Clone()

Копия будет иметь то же имя, чтобы его изменить

h1_clone->SetTitle("h1_clone")

Получить интеграл гистограммы

h1->Integral()

Нормировка гистограммы на величину norm

Double_t scale = norm/h1->Integral()

h1->Scale(norm)

Ребиннинг гистограммы

h1->Rebin(N)

По умолчанию сливаются два соседних бина

Дать имена X и Y осям гистограммы

h1->GetXaxis()->SetTitle("X axis title")

h1->GetYaxis()->SetTitle("Y axis title")

 

Фитирование гистограмм:

 

FitPanel

 

Фитирование с помощью GUI: FitPanel

 

Чтобы запустить FitPanel, кликните правой

 

кнопкой мыши по линии гистограммы и

 

выберите пункт FitPanel

выбор фитирующей функции различные опции фита

опции рисования

ползунок для варьирования диапазонов фита

произвести фит

Соседние файлы в папке UMKD_Metody_obrabotki_dannyh_i_modelirovaniya_dlya_sovr._eksp._v_fizike_vysokih_energij_Bogdanov