Итак, сначала, в соответствии с инструкциями руководства, создаем новую директорию geant4.9.5-builld/ на том же уровне файловой иерархии, что и корневая директория распакованных исходников (хотя конкретные название и местоположение новой директории не имеют особого значения). После этого переходим в эту директорию. Теперь следует сконфигурировать билд с помощью cmake. Я использовал для этого стандартную псевдографическую оболочку ccmake - в ней удобней настраивать параметры билда:
ccmake ../geant4.9.5В открывшемся окне выбираем те параметры, которые следует изменить. Клавиша Enter позволяет переключать toggle-параметры и переводит в режим редактирования строковые параметры. В частности, я изменил значение CMAKE_INSTALL_PREFIX с /usr/local на /usr/local/geant4, кроме того, я установил параметры GEANT4_INSTALL_DATA, GEANT4_USE_GDML, GEANT4_USE_OPENGL_X11 и GEANT4_USE_QT в ON. Второй параметр в этом списке нужен для компиляции модуля GDML, а последние два - для компиляции модулей OpenGL и Qt. Забегая вперед отмечу, что GDML будет нужен для компиляции одного из advanced examples - ChargeExchangeMC (GDML используется в нем для описания геометрии физической установки), а OpenGL и Qt нужны для качественной визуализации установки и частиц (картинка, приведенная ниже, создана с помощью драйвера визуализации OpenGL/Qt). После настройки всех параметров жмем на клавишу с и ждем, пока cmake сконфигурирует билд. Если в процессе конфигурации не возникло ошибок, то в нижнем окне ccmake появится подсказка Press [g] to generate and exit. Далее жмем на g, а после выхода из ccmake запускаем make и make install.
Все, Geant4 построен и установлен. Теперь нужно сделать так, чтобы конфигурация Geant4 (переменные среды и т.п.) автоматически настраивалась при входе в систему. Для этого необходимо, чтобы в файле $HOME/.bash_profile (если вы используете bash в качестве оболочки) сорсились файлы /usr/local/geant4/bin/geant4.sh и /usr/local/geant4/share/Geant4-9.5.0/geant4make/geant4make.sh. И здесь возникает первая проблема: из-за бага в исходном коде Geant4, файл /usr/local/geant4/bin/geant4.sh содержит мусор в shebang-строке (самой первой строке скрипта). Соответственно
#!@GEANT4_TC_SHELL_PROGRAMследует заменить на
#!/bin/shВ файл $HOME/.bash_profile помещаем следующие строки:
export G4ROOT=/usr/local/geant4 export G4ROOTMAKE=$G4ROOT/share/Geant4-9.5.0/geant4make export G4WORKDIR=$HOME/geant4 [ -f $G4ROOT/bin/geant4.sh ] && . $G4ROOT/bin/geant4.sh [ -f $G4ROOTMAKE/geant4make.sh ] && . $G4ROOTMAKE/geant4make.shВторая проблема заключается в том, что в файле /usr/local/geant4/share/Geant4-9.5.0/geant4make/geant4make.sh настраивается переменная среды LD_LIBRARY_PATH, но почему-то не настраивается PATH, а эта переменная нужна для поиска пользовательских программ и скомпилированных примеров из исходного кода Geant4. Поэтому ниже в $HOME/.bash_profile добавляем строку
PATH=$PATH:$G4WORKDIR/bin/$G4SYSTEMТеперь вернемся к проекту ChargeExchangeMC, исходный код которого поставляется вместе с исходниками Geant4 в директории examples/advanced/ChargeExchangeMC. Эта программа использовалась для моделирования отклика детекторов в реальных физических экспериментах по изучению реакции пион-нуклонной перезарядки. Однако, программа может быть легко адаптирована для изучения фактически любых адронных реакций на почти произвольных физических установках (так, геометрия установки описывается в формате GDML и ее легко изменять без перекомпиляции программы). Подробности здесь.
В обновленной версии ChargeExchangeMC проведена серьезная работа по улучшению производительности программы, в частности, значительно оптимизирован расчет физических величин, исправлены ошибки, добавлены новые алгоритмы реконструкции событий. Одна из важных новинок - специализированный фреймворк для создания и отображения произвольных графических примитивов (scene primitives). Фреймворк основан на run-duration модели G4VModel. В рамках этого фреймворка реализованы 3 графических примитива: подсветка центральных кристаллов детекторов, вспомогательные радиальные линии, которые могут быть размещены на графической сцене в любом количестве под разными углами относительно центра мишени, маркер центра мишени.
На картинке представлено одно разыгранное событие: пи-мезон, падающий справа на мишень (красная линия), нейтрон, вылетающий из мишени (темно-зеленая линия) и два гамма-кванта, также вылетающие из мишени и образующие внутри кристаллов детекторов гамма-ливни (голубые линии). Кроме того, на картинке присутствуют маркер центра мишени (оранжевая точка), четыре вспомогательные радиальные линии (вишневого цвета), исходящие из центра мишени, и подсветка центральных кристаллов детекторов (желтого цвета).
1. Для конфигурации cmake мне более удобным показался cmake-gui. Уж если и связываться с графическими конфигураторами, то уж хоть не с псевдографикой.
ОтветитьУдалить2. При первом запуске ccmake / cmake-gui никаких настроек не появляется. Необходимо сначала сделать сonfigure, а уж потом ставить галочки и прописывать пути. А затем опять жать сonfigure, смотреть на ошибки и снова вносить правки в пути и доставлять пакеты. И так до полного удовлетворения конфигуратора.
3. На Ubunt'e почему-то не подхватился qt4, хотя все пути компилятор видел верно. Пришлось сделать 4 линка на заголовочные файлы и 2 линка на директории из /usr/include/qt4 в ...geant4/include/Geant4. После этого qt запустился.
4. И по Ubuntu'шному обыкновению пришлось доставить десяток различных пакетов - пару на стадии конфигурации cmake и остальные после установки.
1. ccmake входит в состав стандартного пакета cmake, во всяком случае в Fedora, поэтому я его и использовал. По идее выбор конкретного фронтенда не должен влиять на результат, но на практике разное случается :)
ОтветитьУдалить2. В моем случае, насколько я помню, основные параметры конфигурации сразу отобразились в окне ccmake, но после первичной конфигурации их стало больше - это верно.
3. Возможно настройка билда опирается на старую добрую переменную среды $QTDIR, но я не уверен, во всяком случае в моем .bash_profile эта переменная установлена и проблем при сборке не возникло.
4. Установка дополнительных пакетов - нормальное дело, зато при следующем обновлении Geant4 этого делать уже не придется.