Это старая версия документа!
Система 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 или выше. Структура проекта выглядит следующим образом: * PandaRoot/ - папка внешнего пакета PandaRoot (стараться делать как можно меньше изменений здесь) * U70ecal/ - исходные коды электромагнитного калориметра * U70guard/ - исходные коды охранной системы * U70hcal/ - исходные коды адронного калориметра * U70magnet1/ - исходные коды магнита мишени * U70muon/ - исходные коды мюонной системы * U70mwpc/ - исходные коды пропорциональных камер * cmake/ - скрипты для конфигурирования (создания) Makefiles для утилиты cmake * gconfig/ - конфигурационные макро для fluka, geant3, geant4, pythia6, pythia8, geane, root (для начала скопированы из PandaRoot, но их можно смело править) * geometry/ - файлы с описанием геометрии детекторов (.geo, .root, .dat) * input/ - входные файлы для различных генераторов частиц, карты магнитных полей, матрицы ошибок и тп * macro/ - root макро для запуска задач (моделирование, дигитизация, реконструкция, pid, анализ и тп) * CMakeLists.txt - основной файл описания конфигурации SpascharmRoot для утилиты cmake * CTestCustom.cmake Предполагается вести разработку в директориях U70xxx (для детекторов) - любые алгоритмы/коды из PandaRoot можно смело копировать и/или наследовать и модифицировать в своем классе. ===== Как установить SpascharmRoot ===== Чтобы установить SpascharmRoot у себя на машине нужно проделать несколько шагов: - Установить external packages (fairroot), который является внешним для всех систем в FAIR. На данный момент последней версией является dec13. Установка описана по приведенным ссылкам. - Скачать на локальную машину исходные коды системы SpascharmRoot (в первый раз потребуется ввести имя пользователя и пароль svn): <code Bash> svn co http://star-kes.ihep.su/svn/SpascharmRoot/trunk SpascharmRoot/trunk </code> - Перейти в директорию с исходниками: <code Bash> cd SpascharmRoot/trunk </code> - Установить переменную среды SIMPATH на путь до директории, где установлен FairRoot (директория инсталляции, не исходники!). Например: <code Bash> bash</code> <code Bash> export SIMPATH=/path_to_fairroot/fairsoft/Install </code> - Создать директорию для компиляции системы: <code Bash> cd ../.. </code> <code Bash> mkdir spascharmroot_build </code> <code Bash> cd spascharmroot_build </code> - Выполнить конфигурацию (создание Makefile) с помощью утилиты cmake: <code Bash> cmake /path_to_dir/SpascharmRoot/trunk </code> - Выполнить компиляцию: <code Bash> make </code> ===== Как обновить SpascharmRoot ===== Чтобы обновить исходные коды в рабочей копии (в своей рабочей директории - кто-то другой мог что-то изменить в репозитории), необходимо выполнить команду: <code Bash> cd SpascharmRoot/trunk </code> <code Bash> svn update </code> Чтобы посмотреть состояние рабочей копии (узнать какие изменения есть по сравнению с последней редакцией на сервере можно выполнить команду: <code Bash> svn status </code> Чтобы получить общую информацию о svn репозитории (тип, пути до рабочей копии, репозитория, номер, дату и пользователя последней редакции) можно выполнить команду <code Bash> svn info </code> ===== Как зафиксировать сделанные изменения в коде SpascharmRoot ===== После того, как работа на кодом завершена можно выкладывать свои изменения на сервер svn (репозиторий). Внимание! Большая просьба! Выкладывать изменения только, если вы убедились, что код компилируется!. Для фиксирования своих изменений достаточно выполнить команду: <code Bash> svn commit </code> Замечание: При этом могут возникнуть конфликты, которые необходимо будет справить (svn сообщит какие и где). В документации по subversion написано как это делать. ===== Использование IDE Eclipse для разработки ===== Довольно удобно (даже очень) использовать для разработки такого большого проекта интегрированную среду разработки (IDE), например eclipse. Eclipse снабжен такими полезными функциями как: * Удобное перемещение по коду с активными взаимными ссылками, то есть можно переходить в текст с описанием типа переменной, функции и тп. просто кликнув в том месте где такой объект используется. Другими словами все типы, классы, методы классов индексируются для такой возможности. * Автодополнение кода - то есть, среда сама покажет какие методы есть у данного класса, когда вы объявили объект данного класса. * Проверка синтаксиса налету. * Интеграция с множеством систем компоновки (в том числе с cmake). * Интеграция с svn - все команды svn можно выполнять декларативно, кликая по пунктам меню. * Списки ToDo - если вставлен комментарий вида <code c++>!TODO </code> среда напомнит об этом.
Приведем пример, как настроить проект SpascharmRoot в eclipse. Пример описан для Eclipse версии «Kepler» 4.3.1. Для более старых версий процесс примерно похож.
Необходимо установить C++ версию на вашей системе:
./eclipse
. Можно также запустить его из меню.
Для того, чтобы иметь доступ к описаниям классов ROOT (для автозаполнения и тд) нужно сделать следующее:
Для удобства работы с кодом и отладки в редакторе хорошо бы видеть номера строк. Для этого надо сделать следующее:
Если Eclipse уже имеет плагин поддержки SVN то среда сама разберется, что папка проекта, который вы добавили находится под контролем версий SVN и сама подцепится к репозиторию. При этом в «Структуре проекта» напротив файлов будут показаны номер ревизии, дата и автор последнего изменения, кроме этого файлы и папки будут иметь иконки, указывающие на различные состояния svn (есть, нет отличий от версии в репозитории и тп). И также становятся доступны все команды svn из меню Team.
Как говорится в подобных случаях: «Happy coding!»
В системе реализована пакетная обработка файлов. Существует два варианта такой обработки:
Для запуска варианта 1) необходимо выполнить следующие команды (пример приведен для машины lab3onl):
cd spascharmroot_exec
./batchRawToRoot.sh test
, где «test» - директория для обработки. Директория, переданная как параметр будет обрабатываться рекурсивно. То есть, можно например указать весь run0XX и обработаются также файлы из поддиректорий, в которых лежат файлы, разбитые по часам.
Для запуска варианта 2), то есть отображение онлайн-гистограмм на уже записанных данных, необходимо выполнить:
root 'online_gui_sm.C(kFALSE, "test")'
, где первый параметр: kTRUE/kFALSE - мода работы (online или пакетная обработка), второй параметр - директория из которой брать файлы. Директория также обрабатывается рекурсивно.