Содержание

SpascharmRoot

Введение

Система SpascharmRoot основана на PandaRoot, используемая сотрудничеством ПАНДА. На данный момент за основу взят последний релиз PandaRoot → jan16. По мере выходов новых релизов PandaRoot, планируется обновлять этот «базовый» для нас пакет.

Для удобства совместной разработки создан репозиторий subversion, который расположен по адресу: svn+ssh://svn.ihep.su/svn/SpascharmRoot/trunk (основная ветка разработки) (старый адрес http://star-kes.ihep.su/svn/SpascharmRoot/trunk вскоре будет отключен. Не делайте коммиты пожалуйста сюда). Для работы с репозиторием рекомендуется установить на локальную машину svn версии 1.7 или выше.

Структура проекта выглядит следующим образом:

Предполагается вести разработку в директориях U70xxx (для детекторов) - любые алгоритмы/коды из PandaRoot можно смело копировать и/или наследовать и модифицировать в своем классе.

Как установить SpascharmRoot

Чтобы установить SpascharmRoot у себя на машине нужно проделать несколько шагов:

  1. Установить external packages (fairroot), который является внешним для всех систем в FAIR. На данный момент они состоят из двух подпакетов и последние их версии таковы: FairSoft - nov15, FairRoot - v-15.11a (Для ревизии SpascharmRoot 109 и ниже основной версией внешних пакетов была dec13). Установка описана на wiki PandaRoot PandaRoot wiki.
  2. Скачать на локальную машину исходные коды системы SpascharmRoot (потребуется ввести имя пользователя и пароль на кластере ИФВЭ):
     svn co svn+ssh://<username>@svn.ihep.su/svn/SpascharmRoot/trunk SpascharmRoot/trunk 

    , где <username> необходимо заменить на свое имя пользователя на КЛАСТЕРЕ ИФВЭ.

  3. Перейти в директорию с исходниками:
     cd SpascharmRoot/trunk 
  4. Установить переменную среды SIMPATH на путь до директории, где установлен FairSoft (директория инсталляции, не исходники!). Например:
     bash
     export SIMPATH=/path_to_fairroot/fairsoft_nov15/buildFairSoft 
  5. Установить переменную среды FAIRROOTPATH на путь до директории, где установлен FairRoot (директория инсталляции, не исходники!). Например:
     bash
     export FAIRROOTPATH=/path_to_fairroot/fairsoft_nov15/buildFairRoot 
  6. Создать директорию для компиляции системы:
     cd ../.. 
     mkdir spascharmroot_build 
     cd spascharmroot_build 
  7. Выполнить конфигурацию (создание Makefile) с помощью утилиты cmake:
     cmake /path_to_dir/SpascharmRoot/trunk 
  8. Выполнить компиляцию:
     make 

Как обновить SpascharmRoot

Чтобы обновить исходные коды в рабочей копии (в своей рабочей директории - кто-то другой мог что-то изменить в репозитории), необходимо выполнить команду:

 cd SpascharmRoot/trunk 
 svn update 

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

 svn status 

Чтобы получить общую информацию о svn репозитории (тип, пути до рабочей копии, репозитория, номер, дату и пользователя последней редакции) можно выполнить команду

 svn info 

Как зафиксировать сделанные изменения в коде SpascharmRoot

После того, как работа на кодом завершена можно выкладывать свои изменения на сервер svn (репозиторий).

Внимание! Большая просьба! Выкладывать изменения только, если вы убедились, что код компилируется!.

Для фиксирования своих изменений достаточно выполнить команду:

 svn commit 

Замечание: При этом могут возникнуть конфликты, которые необходимо будет справить (svn сообщит какие и где). В документации по subversion написано как это делать.

Использование IDE Eclipse для разработки

Довольно удобно (даже очень) использовать для разработки такого большого проекта интегрированную среду разработки (IDE), например eclipse. Eclipse снабжен такими полезными функциями как:

Приведем пример, как настроить проект SpascharmRoot в eclipse. Пример описан для Eclipse версии «Kepler» 4.3.1. Для более старых версий процесс примерно похож.

Инсталляция

Необходимо установить C++ версию на вашей системе:

Создание проекта SpascharmRoot, начиная с текущей рабочей версии из svn

Настройка системы компоновки (компилятора)

Добавление в проект исходных кодов ROOT

Для того, чтобы иметь доступ к описаниям классов ROOT (для автозаполнения и тд) нужно сделать следующее:

Некоторые дополнения

Номера строк в редакторе

Для удобства работы с кодом и отладки в редакторе хорошо бы видеть номера строк. Для этого надо сделать следующее:

Поддержка SVN

Если Eclipse уже имеет плагин поддержки SVN то среда сама разберется, что папка проекта, который вы добавили находится под контролем версий SVN и сама подцепится к репозиторию. При этом в «Структуре проекта» напротив файлов будут показаны номер ревизии, дата и автор последнего изменения, кроме этого файлы и папки будут иметь иконки, указывающие на различные состояния svn (есть, нет отличий от версии в репозитории и тп). И также становятся доступны все команды svn из меню Team.

Если этого не произошло, то самый простой способ такой - сделать checkout проекта напрямую из svn:

  1. Подключить новый репозиторий через subversive
  2. Сделать checkout проекта: меню Создать → Проект → SVN → Project from SVN.

Как говорится в подобных случаях: «Happy coding!» 8-O

Запуск пакетной обработки файлов для анализа

В системе реализована пакетная обработка файлов. Существует два варианта такой обработки:

  1. Чтение .dat файлов («сырые» файлы из daq) и запись деревьев в .root файлы;
  2. Чтение деревьев из .root файлов для отображения гистограмм в online-мониторе online_gui_sm.

Для запуска варианта 1) необходимо выполнить следующие команды (пример приведен для машины lab3onl):

 cd spascharmroot_exec 
 ./batchRawToRoot.sh test 

, где «test» - директория для обработки. Директория, переданная как параметр будет обрабатываться рекурсивно. То есть, можно например указать весь run0XX и обработаются также файлы из поддиректорий, в которых лежат файлы, разбитые по часам.

Для запуска варианта 2), то есть отображение онлайн-гистограмм на уже записанных данных, необходимо выполнить:

 root 'online_gui_sm.C(kFALSE, "test")' 

, где первый параметр: kTRUE/kFALSE - мода работы (online или пакетная обработка), второй параметр - директория из которой брать файлы. Директория также обрабатывается рекурсивно.