Анализ с использованием пакета totan А.Мягков. Общая мотивация Для полноценного анализа необходимо построить много (~1000) гистограмм Всегда приходится.

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



Advertisements
Похожие презентации
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Advertisements

Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Массивы Структура типов данных типы простые структурированные 1.Целые (integer, longint) 2.Вещественные (real) 3.Логические (boolean) 4.Символьные (string,
Массивы Описание массива. Виды и назначение массивов. Заполнение и вывод элементов массива.
ОДНОМЕРНЫЕ МАССИВЫ. СПОСОБЫ ЗАДАНИЯ ОДНОМЕРНЫХ МАССИВОВ. Понятие массива.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Массивы Массив это величины объединенные общим именем и различаемые порядковыми номерами. Номера называются индексами. В зависимости от количества индексов.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Лабораторная работа 4. Подпрограммы. Задание на лабораторную работу Написать программу, реализующую хранение информации, указанной в вариантах индивидуальных.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Одномерные массивы. Задачи Знать: понятия: одномерный массив, элемент массива, индекс элемента, размер; этапы работы с массивами; алгоритмы решения основных.
Массивы Паскаль. Массивы - это Заранее известное число однотипных элементов Элементы (каждое данное массива) имеют общее имя(имя массива) и тип (тип элементов.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Лекция 23. Шаблоны (часть 3) Красс Александр СПбГУ ИТМО, 2008.
Лекция 13. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Объектно-ориентированное программирование С++. Лекция 8 Карпов В.Э.
Массивы Теоретические сведения. Примеры решения задач. Задания для самостоятельного выполнения.
МассивМассив представляет собой совокупность данных одного типа с общим для всех элементов именем. Массив относится к структурированным типам данных (упорядоченная.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Транксрипт:

Анализ с использованием пакета totan А.Мягков

Общая мотивация Для полноценного анализа необходимо построить много (~1000) гистограмм Всегда приходится делать быстро Программы большие и трудночитаемые Хотелось бы иметь конечные распределения (эфективности, точности …)

Общая структура анализа Анализ как правило разбивается на независимые части (отбор электронов, мюонов, работа со струями…) Данные об изучаемых объектах (е,мю,…) – 4-вектор + дополнительная информация – заполним их в 2мерный массив …[nele][k_var_ele] Первые 8 элементов – информация о 4- векторе (Px,Py,Pz,E,m,Pt,eta,phi), далее специфическая информация

Что мы гистограмируем Просто гистограмма (Pt) Min(Max) var_1 Второй Min(Max) var_1 Для другой полусферы Var_1 для Min(Max) var_2 (Pt для струи с наибольшим y)

Что мы гистограмируем Множественность Инвариантную массу (для одинаковых объектов – струй, или разных – струю + лептон) Параметр матчирования Эффективность, чистота, точности по одной переменной в зависимости от другой

Заказ гистограмм Все перечисленные виды гистограмм можно описать типом Переменная для гистограммирования задается адресом в массиве данных Название гистограммы и имя объекта формируется автоматически на основании имени переменной и того, что мы гистограммируем.

Заказ гистограмм Бывает нужно построить гистограммы для тех же переменных повторно (например после отборов по другим переменным) – понятие level. Можно вместо переменной работать с её абсолютной величиной.

Варианты заказа bookan(totan *,Int_t TypeHist,Int_t IVar,Float_t XMin,Float_t XMax,Int_t KLevel); bookan2(totan *t,Int_t type,Int_t Ivar,Float_t XMin,Float_t XMax,Int_t Ivar2,Float_t XMin2,Float_t XMax2,Int_t KLevel); bookanv(totan *,Int_t TypeHist,Int_t IVar,Int_t IVara,Float_t XMin,Float_t XMax,Int_t KLevel) bookanca(totan *,Int_t TypeHist,Int_t IVar,Float_t XMin,Float_t XMax,Int_t KLevel,Int_t NCuts,const char *Namecut); bookanc(totan *,Int_t TypeHist,Int_t IVar,Float_t XMin,Float_t XMax,Int_t KLevel,Int_t NCuts,const char *Namecut); bookanvc(totan *,Int_t TypeHist,Int_t IVar,Int_t IVara,Float_t XMin,Float_t XMax,Int_t KLevel,Int_t NCuts,const char **Namecut); bookanvc(totan *,Int_t TypeHist,Int_t IVar,Int_t IVara,Float_t XMin,Float_t XMax,Int_t KLevel,Int_t NCuts,const char *Namecut)

Конструктор class totan : public TObject { public: totan(); totan(TString **); ~totan(); TH1F * h1[nhistot]; TH2F * h2[nhistot]; TProfile * h2p[nhistot]; TString *varl[nvmax],*hisl[10]; TString *namecut[nhistot]; TString *namelevel[nhistot]; Char_t name[nhistot]; Char_t nameo[nhistot]; Int_t ivar[nhistot],ivar2[nhistot],ivara[nhistot]; Int_t ht[nhistot]; Int_t nbin[nhistot]; Int_t nbin2[nhistot]; Int_t vabs[nhistot]; // 0 - normal,1 abs value for ivar Int_t vabs2[nhistot]; // 0 - normal,1 abs value for ivar2 (2 dim) Int_t vabsa[nhistot]; // 0 - normal,1 abs value for ivara

Конструктор (продолжение) Int_t acc[nhistot]; // 1 - effi, 2 -puri, 3 effi&puri Int_t acci[nhistot]; // 1 - effi, 2 -puri, 3 effi&puri Int_t acch[nhistot]; Float_t mina[nhistot],maxa[nhistot]; Float_t mina2[nhistot],maxa2[nhistot]; Int_t kmat[nhistot]; Int_t level[nhistot]; Int_t numcut[nhistot]; Int_t iopcut[nhistot][ncutmax]; Int_t andor[nhistot][ncutmax]; Int_t ivalcut[nhistot][ncutmax]; Float_t v_valcut[nhistot][ncutmax]; Float_t rmat; Int_t klevel; Int_t nhist; Int_t idebfillan; };

Пример задания гистограмм totan * topq; topq = new totan(); sprintf((topq->name),"%s","topq "); bookan(topq,51,0,0,0,0); // Full mult bookan(topq,60,0,0,1500,0); // Inv mass bookan(topq,0,3,0,1500,0); // E bookan(topq,0,5,0,800,0); // Pt bookan(topq,0,6,-5,5,0); // Y initan(topq);

Заполнение гистограмм Заполнение происходит для одного набора данных одного уровня при помощи вызова fillan (topq,nqt,&vqt[0][0],nvb,&vvb[0][0],0);

Запись гистограмм в файл Все гистограммы для каждого анализа записываются в отдельную директорию, TFile *rout = new TFile("fan.root","RECREATE"); writan(topq,rout);

Где взять? На pleiades ~miagkov/lib totan.C totan.h totan.help