Логашенко И.Б. Современные методы обработки экспериментальных данных ROOT – программная оболочка для обработки данных.

Презентация:



Advertisements
Похожие презентации
Немного об обработке данных Введение в root Игорь Алексеев, ИТЭФ Основной объект изучения почти любого эксперимента в физике частиц – события. root – программа.
Advertisements

Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
1 Записи 2 Запись – это тип данных, который может включать в себя несколько полей – элементов разных типов (в том числе и другие структуры). Свойства:
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
Потоки Язык C++ не обеспечивает средств для ввода/вывода Ему это и не нужно; такие средства легко и элегантно можно создать с помощью самого языка Традиционно.
Подбор материала и презентация: Сазонов Д.О. Кафедра ПМиЭММ ВГТА Динамические объекты, ссылки.
Click to edit Master title style IDK1011 Основы программирования Диалоговые окна Чтение файлов и директорий.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Использование пакета Microsoft Office Посредством написания макросов для Excel.
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Двумерные массивы. Задачи обработки двумерных массивов.
Маршрутный лист «Числа до 100» ? ? ?
Глава 2 Интерфейс Конфигурационное управление с применением ClearCase Интерфейс ClearCase.

Название системы - iTest Текущая версия Официальный сайт - Лицензия -GPL v2 Компоненты системы iTestServer серверная.
Date: File:System_VBSc_8.1 SIMATIC HMI Siemens AG All rights reserved. SITRAIN Training for Automation and Drives Гибкость.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Транксрипт:

Логашенко И.Б. Современные методы обработки экспериментальных данных ROOT – программная оболочка для обработки данных

Логашенко И.Б.Современные методы обработки экспериментальных данных 2 Что такое ROOT? ROOT – объектно-ориентированная (С++) программная оболочка (библиотека), предоставляющая большое количество инструментов, необходимых для обработки данных.

Логашенко И.Б.Современные методы обработки экспериментальных данных 3 Почему ROOT Бесплатная Открытый код Кросс-платформенная Может использоваться и как приложение, и как библиотека Огромное количество иструментов - гистограммы, функции, подгонка - сохранение и обработка больших объемов данных - научная графика - математическая библиотека - многопараметрический анализ данных (например, нейронные сети) - интеграция с Python, Ruby, Mathematica

Логашенко И.Б.Современные методы обработки экспериментальных данных 4 Документация Веб-страница Руководство пользователя Подробное описание классов Примеры Описание пакета TMVA

Логашенко И.Б.Современные методы обработки экспериментальных данных 5 Запуск ROOT Настройка переменных окружения (bash) export ROOTSYS=… export PATH=${PATH}:${ROOTSYS}/bin export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ROOTSYS}/lib Запуск ROOT из командной строки Usage: root [-l] [-b] [-n] [-q] [file1.C... fileN.C] Options: -b : run in batch mode without graphics -n : do not execute logon and logoff macros as specified in.rootrc -q : exit after processing command line macro files -l : do not show splash screen Пример: root –l

Логашенко И.Б.Современные методы обработки экспериментальных данных 6 ROOT как интерпретатор C++ В качестве командного языка ROOT использует CINT – интерпретатор С++ root[0] TH1D *h = new TH1D(h1,Test histogram,100,0,10); root[1] TF1 *f = new TF1(f1,x-x*x,0,1); root[2] h->FillRandom(f1,1000); root[3] h->Draw(); root[4] char *axis_title = x, cm; root[4] h->GetXaxis()->SetTitle(axis_title); root[5].q

Логашенко И.Б.Современные методы обработки экспериментальных данных 7 Расширение C++ в CINT Дополнительные возможности интерпретатора: автоматически дополняет имя класса и показывает список методов root[0] TBrow root[1] TH1D( Декларация переменных не обязательна root[0] h = new TH1D(h1,Test histogram,10,0,10) Возможность использования как., так и -> root[0] h = new TH1D(h1,Test histogram,10,0,10) root[1] h.Draw() Обращение к объекту по имени root[0] new TH1D(h1,Test histogram,10,0,10) root[1] h1->Draw()

Логашенко И.Б.Современные методы обработки экспериментальных данных 8 Дополнительные команды CINT В интерпретаторе определено несколько встроенных команд, начинающихся с. root[0].? список всех дополнительных команд CINT root[1].X [filename] загрузить [filename] и выполнить функцию [filename] root[2].L [filename] загрузить [filename] root[3].! ls выполнить команду shell root[4].files список загруженных файлов root[5].class [name] определение класса [name] root[6].g список всех глобальных объектов root[7].ls список объектов в текущей директории root[8].pwd имя текущей директории, графического окна и графического стиля

Логашенко И.Б.Современные методы обработки экспериментальных данных 9 Глобальные переменные В CINT определено несколько глобальных переменных: gRandom - генератор случайных чисел gRandom->Gaus(1,2) gRandom->Rndm() gRandom->Poisson(4) gFile – указатель на текущий рабочий файл gFile->GetName() gDirectory – указатель на текущую рабочую директорию gDirectory->GetName() gSystem – системная информация о текущей сессии ROOT gSystem->HostName() gROOT – доступ к внутренней информации текущей сессии ROOT gROOT->GetListOf () gROOT->ProcessLine(.! ls) gROOT->LoadMacro(myutil.cc) TH1D *h1 = (TH1D*)gROOT->FindObject(h1)

Логашенко И.Б.Современные методы обработки экспериментальных данных 10 TGraph Int_t n = 20; Double_t x[n], y[n]; for (Int_t i=0; iDraw(ALP);

Логашенко И.Б.Современные методы обработки экспериментальных данных 11 TCanvas и TPad Для рисования графиков создается графическое окно – TCanvas. Собственно отрисовка производится в специальных областях – TPad. Внутри одного TCanvas может быть несколько TPad. TCanvas *c1 = new TCanvas(c1,Example,10,10,800,400); c1->Divide(2,1); c1->cd(1); h1->Draw(); c1->cd(2); h2->Draw(); c1->Update();

Логашенко И.Б.Современные методы обработки экспериментальных данных 12 Гистограммы - классы

Логашенко И.Б.Современные методы обработки экспериментальных данных 13 Гистограммы – пример C++ // Создание гистограмм TH1D *h1 = new TH1D(h1,Test 1-D histo,40,0,1); TH1D *h2 = new TH2D(h2,Test 2-D histo,40,0,1,40,0,1); TH1D *hp = new TProfileD(h1,Test profile histo,40,0,1,0,1); // Заполнение гистограмм for( int i=0; iRndm(); h1->Fill(x*x); for( int j=0; jGaus(0.5,0.2); h2->Fill(x,y); hp->Fill(x,y); } // Отрисовка гистограмм h1->Draw() h2->Draw(lego)

Логашенко И.Б.Современные методы обработки экспериментальных данных 14 Гистограммы - графика

Логашенко И.Б.Современные методы обработки экспериментальных данных 15 Функции Функции без параметров TF1 *f1 = new TF1("f1","sin(x)/x",0,10); f1->Draw(); Функции с параметрами TF1 *f1 = new TF1("f1", "[0]*x*sin([1]*x)", -3,3); f1->SetParameter(0,10); f1->SetParameter(1,5); f1->Draw();

Логашенко И.Б.Современные методы обработки экспериментальных данных 16 Функции Используя пользовательскую С-функцию Double_t MyFunction(Double_t *x, Double_t *par){ Float_t xx =x[0]; Double_t val= TMath::Abs(par[0]*sin(par[1]*xx)/xx); return val; } TF1 *f1 = new TF1("f1",MyFunction,0,10,2); f1->SetParameters(2,1); f1->Draw(); количество параметров

Логашенко И.Б.Современные методы обработки экспериментальных данных 17 Подгонка гистограммы Double_t par[9]; Double_t err[9]; TF1 *total = new TF1("total","gaus(0)+gaus(3)+gaus(6)",85,125); total->SetLineColor(2); h->Fit(total); for( int i=0; iGetParameter(i); err[i] = total->GetParError(i); }

Логашенко И.Б.Современные методы обработки экспериментальных данных 18 ROOT scripts File script1.c: { #include cout

Логашенко И.Б.Современные методы обработки экспериментальных данных 19 TObject Все объекты ROOT наследуют от общего базового класса – TObject. Функции TObject: Object I/O (Read(), Write()) Error handling (Warning(), Error(), SysError(), Fatal()) Sorting (IsSortable(), Compare(), IsEqual(), Hash()) Inspection (Dump(), Inspect()) Printing (Print()) Drawing (Draw(), Paint(), ExecuteEvent()) Bit handling (SetBit(), TestBit()) Memory allocation (operator new and delete, IsOnHeap()) Access to meta information (IsA(), InheritsFrom()) Object browsing (Browse(), IsFolder())

Логашенко И.Б.Современные методы обработки экспериментальных данных 20 ROOT I/O ROOT сохраняет данные в файлах специального формата (обычно, бинарных файлах прямого доступа). Любой объект, отнаследованный от TObject, можно сохранить в файле ROOT с помощью object->Write(). Внутренняя структура файлов ROOT напоминает UNIX-подобную структуру директорий, в которой отдельные объекты играют роль файлов. TFile f(demo.root, recreate); TH1F *h = new TH1F(h1,Demo histo,100,-4,4); h->FillRandom("gaus",1000); h->Write(); f.Close();

Логашенко И.Б.Современные методы обработки экспериментальных данных 21 ROOT trees Специальный класс TTree предназначен для сохранения и анализа большого количества однородных объектов. Возможности TTree: сохранять объекты сложной структуры – древесная организация данных встроенные механизмы компрессии данных встроенные механизмы обратной совместимости файлов при изменении структуры объектов возможность селективного доступа к данным возможность прозрачного объединения деревьев из разных файлов TNtuple – упрощенная версия TTree (электронная таблица с float)

Логашенко И.Б.Современные методы обработки экспериментальных данных 22 ROOT tree - создание void tree1w() { TFile f("tree1.root","recreate"); TTree t1("t1","a simple Tree with simple variables"); Float_t px, py, pz; Double_t random; Int_t ev; t1.Branch("px",&px,"px/F"); t1.Branch("py",&py,"py/F"); t1.Branch("pz",&pz,"pz/F"); t1.Branch("ev",&ev,"ev/I"); for (Int_t i=0; iRannor(px,py); pz = px*px + py*py; random = gRandom->Rndm(); ev = i; t1.Fill(); } t1.Write(); }

Логашенко И.Б.Современные методы обработки экспериментальных данных 23 ROOT tree – чтение в C++ void tree1r() { TFile *f = new TFile("tree1.root"); TTree *t1 = (TTree*)f->Get("t1"); Float_t px, py, pz; Double_t random; Int_t ev; t1->SetBranchAddress("px",&px); t1->SetBranchAddress("py",&py); t1->SetBranchAddress("pz",&pz); t1->SetBranchAddress("random",&random); t1->SetBranchAddress("ev",&ev); TH2F *hpxpy = new TH2F("hpxpy","py vs px",30,-3,3,30,-3,3); Int_t nentries = (Int_t)t1->GetEntries(); for (Int_t i=0; iGetEntry(i); hpxpy->Fill(px,py); }

Логашенко И.Б.Современные методы обработки экспериментальных данных 24 ROOT tree – получение информации tree->Print(); Распечатать структура дерева (ветви) tree->Show(10); Распечатать значение всех переменных (листьев) для записи номер 10 ва tree->Scan(px:py); Распечатать таблицу значений px и py для всех записей в таблице tree->Scan(px:py,abs(pz)>0.1); Распечатать таблицу значений px и py для тех записей в таблице, для которых выполняется условие abs(pz)>0.1

Логашенко И.Б.Современные методы обработки экспериментальных данных 25 ROOT tree – анализ данных tree->Draw(px); Отобразить распределение переменной px tree->Draw(px:py,abs(pz)>0.1); Отобразить двумерное распределение переменных px и py при условии, что abs(pz)>0.1 tree->Draw((px*px) >> h_px); Отобразить распределение переменной px 2 и сохранить его в гистограмму с именем h_px tree->Draw(px:py,,lego); Отобразить двумерное распределение переменных px и py, полученное по всем событиям, записанным в дереве. Использовать графическое представление в виде LEGO-plot.

Логашенко И.Б.Современные методы обработки экспериментальных данных 26 Анализ нескольких файлов При обработки больших массивов данных часто возникает необходимость обработать большое количество файлов, в которых сохранены деревья одинаковой структуры. Для прозрачного доступа к цепочке файлов в ROOT предусмотрен класс TChain. root[0] TChain chain("T"); root[1] chain.Add("Event.root") root[2] chain.Add("Event50.root") root[3] chain.Draw("fTracks.fPx")

Логашенко И.Б.Современные методы обработки экспериментальных данных 27 Математическая библиотека

Логашенко И.Б.Современные методы обработки экспериментальных данных 28 Коллекции объектов

Логашенко И.Б.Современные методы обработки экспериментальных данных 29 PyROOT В стандартный дистрибутив ROOT входит PyROOT – модуль, позволяющий использовать объекты ROOT из интерпретатора python. Используя PyROOT, можно быстро интегрировать ROOT с другими программными продуктами, для которых существует модуль для python. Примеры: графические приложения с использованием Qt, генерация динамических веб-страниц и т.п. from ROOT import gRandom,TCanvas,TH1F c1 = TCanvas('c1','Example',200,10,700,500) hpx = TH1F('hpx','px',100,-4,4) for i in xrange(25000): px = gRandom.Gaus() hpx.Fill(px) hpx.Draw() c1.Update()