- ROOT (CERN)
-
ROOT
Пример графика построенного ROOT, который показывает интересные регионы в 2D распределенииТип Анализ данных
Разработчик Написана на Операционная система Последняя версия 5.30/00 (June 28, 2011)
Лицензия Сайт ROOT — пакет объектно-ориентированных программ и библиотек, разработанных в Европейском центре ядерных исследований. Пакет был разработан специально для использования в качестве платформы обработки экспериментальных данных физики высоких энергий и содержит специфичные для этой области продукты, однако также может быть использованы для анализа других данных, например, в астрономии.
Содержание
Описание
CERN поддерживал свою программную библиотеку, написанную на языке Фортран 77; разработка и поддержка была прекращена в 2003 году в пользу ROOT, написанного на C++.
Разработка ROOT была инициирована сотрудниками CERNа Рене Брюном и Фонсом Рэйдмэйкерсом в 1994 году. Некоторые части пакета опубликованы под лицензией LGPL, некоторые — под GPL, таким образом весь проект базируется на свободном программном обеспечении. Он предоставляет кроссплатформенный интерфейс к графической подсистеме и операционной системе используя механизмы абстракции данных. Частями абстрактной платформы являются:
- графический интерфейс пользователя,
- графический интерфейс разработки,
- классы-контейнеры,
- система средств самоизменения программ,
- скриптовый язык на основе C++,
- командный интерпретатор (CINT),
- система сериализации объектов,
- система долговременного сохранения данных (persistence).
Пакеты, включённые в ROOT, содержат:
- средства для создания гистограмм и графиков функций для визуализации и анализа вероятностных распределений и функций;
- средства «подгонки» (фитирования) теоретических кривых под экспериментальные данные и минимизации функций (для подборки наиболее простой зависимости, описывающей экспериментальные данные);
- инструменты статистического анализа;
- инструменты матричной алгебры;
- средства для четырёхвекторных вычислений (четырёхмерное пространство Минковского удобно применяется в физике высоких энергий);
- стандартные математические функции;
- инструменты многовариантного анализа данных, то есть использования нейронных сетей;
- средства обработки изображений, используемые, например, для анализа астрономических снимков;
- средства доступа к распределённым данным (в контексте таблиц баз данных);
- инструменты распределённых вычислений, параллелизации обработки данных;
- средства сериализации и долговременного сохранения объектов;
- инструменты доступа к базам данных;
- средства геометрической 3D-визуализации;
- инструменты для создания файлов в различных графических форматах, таких как PostScript, JPEG, SVG;
- двусторонние интерфейсы к языкам Python и Ruby (возможности использования средств ROOT из кода на Python или Ruby и использование модулей, написанных на Python или Ruby, из ROOT);
- интерфейсы к Монте-Карло-генераторам событий физики элементарных частиц.
Ключевой возможностью пакета ROOT является специальный контейнер данных, называемый деревом (Tree), вместе с его подмножествами ветвями (Branch) и листьями (Leaf). Дерево может быть представлено как удобное средство чтения и записи данных в файле. Следующий элемент данных, записанный в файле, может быть получен инкрементированием индекса дерева. Такой подход позволяет избежать проблем с выделением памяти при создании объектов, и даёт возможность дереву выступать в качестве «лёгкого» контейнера при буферизации данных.
ROOT разрабатывался как высокопроизводительная вычислительная библиотека, необходимая для обработки данных Большого Адронного Коллайдера, поток которых достигает нескольких петабайт в год. С 2009 года ROOT используется в подавляющем большинстве экспериментов физики высоких энергий; абсолютное большинство современных результатов и иллюстраций в этой области науки получено именно с использованием ROOT.
Включение в пакет интерпретатора C++ CINT значительно увеличило гибкость пакета, так как позволило использовать средства ROOT в интерактивном режиме или посредством написания скриптов, что сделало его похожим на MATLAB.
Основная критика ROOT связана с утверждениями о том, что для начинающих пользователей достаточно сложно освоить этот продукт, его широкие возможности и средства.[1] Периодически эти проблемы обсуждаются пользователями и разработчиками ROOT в специальном списке рассылки.[2][3]
Применения ROOT
Многие экспериментальные лаборатории физики высоких энергий используют программное обеспечение, основанное на ROOT, иногда вопреки более стандартным программным решениям (например, использование контейнеров ROOT вместо классов STL).
- Программное обеспечение, основанное на ROOT, используется в экспериментах:
- Будущие эксперименты, которые на данный момент разрабатывают своё программное обеспечение с использованием ROOT:
- NOνA
- CBM
- PANDA
- BELLE II
- Астрофизические проекты использующие ROOT:
- AMS
- ANTARES
- Fermi
- IceCube
- H.E.S.S.
- MAGIC
- Milagro (experiment)
- Pierre Auger Observatory
- VERITAS
- PAMELA
- PoGOLite
См. также
- Matplotlib — система анализа данных и графопостроения для Python
- SciPy — научная система анализа данных для Python, использующая классы NumPy
- HippoDraw — альтернативная система анализа данных на C++
- Java Analysis Studio — система анализа данных на Java, совместимая с AIDA
- JHepWork — Java-фреймворк, основанный на библиотеках FreeHEP
- R (язык программирования)
- AIDA (ПО) — набор открытых интерфейсов и форматов для обработки данных в физике элементарных частиц
- PAW
- IGOR Pro
- Scientific computing
- OpenDX
- CERN Program Library — старая программная библиотека CERN написанная на Fortran77 (ещё доступна, но не обновляется)
Примечания
Ссылки
- Официальный сайт пакета ROOT
- Список рассылки для пользователей ROOT
- Сайт проекта Qt/ROOT
- GSI Object Oriented On-line Off-line system, альтернативный графический интерфейс пользователя для ROOT, основанный на QT/ROOT.
- OpenScientist система анализа данных на C++, совместимая с AIDA.
- The RooFit Toolkit for Data Modeling, расширение для ROOT с функциями анализа методом максимального правдоподобия
- Perl Binding using SWIG
- The Karma Rootra
- краткое руководство для начинающих
Категории:- Физическое программное обеспечение
- Свободное графическое программное обеспечение
- Свободное статистическое программное обеспечение
- Свободное программное обеспечение, написанное на C++
Wikimedia Foundation. 2010.