Required before go ahead:
- Ubuntu or Bash on Ubuntu on Windows (Windows Subsystem Linux)
- X window server (X ming)
- cmake: > version 3.5
About installing Bash on Ubuntu on Windows, view here
1. What is Geant4
Geant4 is a toolkit for the simulation of the passage of particles through matter. It is mostly used for particle experiment.
2. Install Geant4
At now (2017/08/30), 10.03.p02 is the newest version of Geant4. If you want to install another version one, edit numbers and patches
Preparation:
sudo apt-get install libxerces-c3-dev qt4-dev-tools freeglut3-dev libmotif-dev tk-dev cmake libxpm-dev libxmu-dev libxi-dev
1. Make work directory
cd /opt
sudo mkdir path/geant4
cd geant4
2. Downlaod sourch
sudo wget http://geant4.web.cern.ch/geant4/support/source/geant4.10.03.p02.tar.gz
sudo tar -zxf geant4.10.03.p02.tar.gz
3. Build
$ sudo mkdir geant4.10.03.p02-build
$ cd geant4.10.03.p02-build
$ sudo cmake
-DCMAKE_INSTALL_PREFIX=../geant4.10.03.p02-install
-DGEANT4_INSTALL_DATA=ON
-DGEANT4_USE_OPENGL_X11=ON
-DGEANT4_USE_GDML=ON
-DGEANT4_USE_XM=ON
-DGEANT4_USE_QT=ON
-DGEANT4_BUILD_MULTITHREADED=ON
../geant4.10.03.p02
After cmake, make
$ make -j
After make、make install
$ make install -jN
4. Add Path
After Install, add path to .bashrc on your home directory (~/.bashrc)
##
# GEANT4
##
source /opt/geant4/geant4.10.03-install/bin/geant4.sh"
5. Test
Use example/basic
$ mkdir workspace
$ mkdir workspace/g4work
$ mkdir workspace/g4work/basic
$ cd workspace/g4work/basic
$ cp -r /opt/geant4/geant4.10.03.p02/examples/basic/B2
$ mkdir B2-build
$ cd B2-build
$ cmake ../B2
$ make -j
$ cd B2b
$ ./exampleB2b
references:
- Geant4 Installation Guide – CERN
- G4Training < Main < TWiki
Содержание
- Установка Geant4
- Где скачать исходники
- Куда установить Geant4
- Настраиваем установку Geant4
- Если возникли ошибки при установке Geant4
- Первая ошибка
- Вторая ошибка
- Третья ошибка
- Четвертая ошибка
- Компиляция и установка Geant4
- Поздравляю, Geant4 установлен!
- Сборка и запуск примера на Geant4
- Подготовка к компиляции примера на Geant4
- Создание файла CmakeLists.txt для CMAKE
- Сборка программы Geant4
- Запуск программы на Geant4
- Не заданы переменные среды
- Нет внешних дополнительных данных
- «Мистическое» поведение программы в процессе разработки
- Geant4 Introduction Course
- Friday, February 27, 2015
- 7 comments:
- Installing Pre-Compiled Geant4 on Windows
- Prerequisites
- Unpacking Geant4
- Полный рабочий пример на Geant4 с визуализацией
- Запуск примера
- Схема установки примера
- Исходный код проекта
- Задание геометрии детектора
- Классы инициализации проекта
- Make файл
- Визуализация и консольный запуск
Установка Geant4
Для установки Geant4 нам понадобится Linux и Cmake. В данном примере установка проходила на Ubuntu 16.04 и cmake 3.5.1.
Описанный способ установки подходит для версии Geant4 начиная с 9.6, только необходимо проследить, какая версия cmake потребуется для установки Джанта.
Где скачать исходники
Официальный сайт Geant4 сейчас находится по адресу http://geant4.web.cern.ch и на нем можно скачать последнюю версию Geant4. Установочные файлы предоставляются в виде исходных кодов в разделе «Source files» в виде архива tar или zip.
Можно еще устанавливать из предварительно скомпилированных исходников, это раздел «Pre-compiled Libraries», но советую устанавливать именно из исходников, так как тогда конечные программы будет работать быстрее.
Итак, скачиваем исходник, файл geant4.10.03.p03.tar.gz
Куда установить Geant4
Далее, для удобства выделяем специальную папку в домашней директории, где будет установлен Geant4 и будут находится все файлы его касающиеся.
Назвать директорию можно как угодно, но лучше избегать пробелов и если у вас локаль в системе не UTF8, тогда путь должен быть весь только английскими буквами и цифрами, иначе могут начаться проблемы из-за отличия в кодировках.
Что бы установить Geant4 создадим еще две директории
Как понятно из названия, папка с build предназначена для компиляции, а с install для установки.
Настраиваем установку Geant4
Открываем консоль и заходим в папку geant4.10.03-build
Для начала необходимо запустить cmake и с полноценными параметрами запуска команда будет выглядеть так:
В принципе можно запустить только этого тоже должно хватить для установки Geant4.
Вывод получился такой:
Сообщение об успешной сборке Geant4
Самое важное, или есть в конце эти строчки
они говорят об успешной отработке cmake и если они есть, то можно далее приступать к компиляции. Если есть ошибки, смотрите следующий раздел.
Если возникли ошибки при установке Geant4
Однако на свежей установке Ubuntu может выдать ошибки, когда не хватает некоторых пакетов, вот примеры
Первая ошибка
Не найден пакет EXPAT
Решение поставить пакет expat через synaptic или командой
Иногда это не работает, тогда попробуем команду:
Вторая ошибка
Не хватает файлов QT
Решение установить QT4
Третья ошибка
Не хватает файлов исходных файлов или пакета разработки для QT
Четвертая ошибка
Не хватает файлов разработки для X11
На чистой установке Ubuntu 18.04 LTS потребовалось установить немного больше, команда:
При чистой установке Ubuntu больше ошибок не возникает, проверено на Ubuntu 18.04 LTS в июне 2018 года.
Компиляция и установка Geant4
Далее после успешного выполнения cmake компилируем командой
Что бы процесс проходил быстрее компиляцию можно проводить не нескольких ядрах процессора, у меня 4 потока, поэтому компилирую командой
После компиляции выполняем установку
Поздравляю, Geant4 установлен!
Для того что бы использовать именно эту установку Geant4, установите пути в консоли в которой будете собирать и выполнять проект на Geant4 командой:
Более кратко, нужно указать путь к файлу geant4.sh в директории установки
Источник
Сборка и запуск примера на Geant4
В этом уроке разберем как собирать и запускать проект на Geant4 для Ubuntu, линукса. Для Windows разбор будет опубликован позже, однако принцип тот же самый.
Подготовка к компиляции примера на Geant4
Следует понимать, что проект или программа Geant4 работает используя его как библиотеку, берет из него необходимые классы, данные сечений, параметров частиц и так далее. Поэтому, для компиляции нужно предварительно указать где лежит Джант, и все необходимые исходные данные.
Для данного разбора возьмем установку по пути
описание которой было дано ранее в этой статье.
Итак, нам нужно указать директорию, в которой компилятор сможет найти все необходимые пути
Для примера, директория другой версии Geant
Схематично этот путь выглядит так:
Создание файла CmakeLists.txt для CMAKE
Для сборки проекта используется CMAKE, это специальная утилита для автоматической сборки приложений. Она существенно упрощает сборку и компиляцию программ.
В файлах примеров с этого сайта и в примерах Geant4 присутствует файл CmakeLists.txt, который необходим для работы CMAKE. В нем присутствуют инструкции для сборки примеров. Перед сборкой убедитесь, что в системе присутствует установленный CMAKE нужной версии.
Проверка версии CMAKE, как правило нужна версия выше 2.6
В примерах требуется CMAKE версии новее 2.6. В качестве исходника можно использовать файл из статьи о простом примере на Geant4.
При минимальной правке стоит обратить внимание только на следующие строчки из CmakeLists.txt файла:
В частности /src/*.cpp — в какой папке в проекте находятся файлы исходного кода и их расширение, а так же /include/*.hh — в какой директории находятся заголовочные файлы.
Сборка программы Geant4
Итак, немножко затронем культуру программирования, как компилировать программу с CMAKE правильно.
Т.е. пусть все наши проекты будут в папке
и в дальнейшем будем работать в ней, но команды попробуем сделать все относительные, что бы не зависеть от того, где лежит проект.
Итак, важное правило программирования: директории, где находятся исходники проекта, где собирается проект и где он устанавливается, должны быть разными!
В статье, где описывается установка Geant4, сделано по этому принципу.
Мы пока просто учимся и устанавливать проект не будем, поэтому пока обойдемся двумя папками — исходников и сборки.
Итак, рядом с папкой, где лежат исходники, создадим папку для сборки.
В консоли команды выглядят так:
можем проверить что находимся в нужной папке командой
Подготовка к компилированию программы на Geant4
Далее собираем проект с помощью команды CMAKE
Можем компилировать в много поточном режиме
В результате сборки появится исполняемый файл проекта — программа, про её запуск читайте далее.
Запуск программы на Geant4
Для запуска исполняемого файла необходимо задать переменные среды для Geant4.
Для этого в консоли задаем команду
Если у вас другая версия Geant4, то схема команды
Пройдемся по основным ошибкам запуска
Не заданы переменные среды
Если просто запустить исполняемый файл — экзешник или бинарник, зачастую появится ошибка.
Для исправления нужно указать на файл geant4.sh в папке bin/ в директории установки
Т.е. открываем консоль, выполняем команду выше, исправив путь установки Джанта на свой, и в этой же консоли запускать программу.
Имя пользователя у меня black (производная от моего ника black-bycel, что по белоруски звучит как «чорны бусел» или по русски «чёрный аист». Это редкий вид аиста, живущего на Полесье, в глухих лесах и болотах, где людей практически нет.)
Нет внешних дополнительных данных
«Мистическое» поведение программы в процессе разработки
Иногда бывает «мистическое» поведение, когда программа то не видит новые файлы, то какие то классы, или ведет себя совершенно не понятно.
Возможно это проблема в коде, но очень часто так же и результат кэширования при компиляции. Команда очистить кэш компиляции
Если вы добавили новые файлы к проекту, то нужно еще раз запускать CMAKE.
Был случай, когда проект копировали в другую папку на другой компьютер и запуск CMAKE не помогал, просто поменялись все пути, а система сборки этого не видела. Вот здесь и важно правило программирования, что папка с исходными файлами и файлы компиляции находятся в разных папка. Мы просто удаляем все что находится в папке сборки, в консоли это можно сделать командой
Источник
Geant4 Introduction Course
The brief introductory course for MSU students involving my own experience
Friday, February 27, 2015
Здравствуйте! У меня уже второй раз при попытке собрать g4 выскакивает вот такая ошибка. Не знаете, с чем может быть проблема?
https://yadi.sk/i/mKnB9x_Meynq5
Да, ручная загрузка помогла. Спасибо!
Но теперь еще одна проблема: скрипт, что мы пишем (myqtcreator.sh) открывается как обычный текстовый файл, и там, хм, негде нажать RUN. Может, надо что-то еще сделать, чтобы он стал исполняемым?
Народ! Если у вас вылетает сборка с какой-нибудь такой ошибкой:
с++: internal compile error: Killed (program cc1plus) и т.д.
Это означает, что у вас не хватает оперативной памяти!
Попробуйте два варианта решения проблемы. Первый: Запустите Task Manager и почистите свои фоновые процессы. Постарайтесь сделать так, чтобы объем свободной оперативы соответствовал величине, которую вы заявили для виртуальной машины.
После того, как вы это сделали и не помогло, переустановите виртуалку, увеличив объем выделяемой под нее опретивной памяти. Должно помочь.
Молодца! Все работает! Красава!
Всем привет!
А вот у меня после запуска примера b1 через Qt вылезает следующая ошибка, как быть?
Источник
Installing Pre-Compiled Geant4 on Windows
Prerequisites
To compile and use Geant4 under windows some additional tools are required. First you need Microsoft Visual Studio version 6 (with service pack 5 or later). This is commercial software that you will need to purchase and install. When installing Visual Studio you will be asked whether you want to allow it to modify your environment variables. I find it best to answer No to this question, and instead set the variables in my cygwin startup script (see below).
Secondly you will need to install cygwin, a Unix emulation layer for windows. The cygwin software is freely available from http://www.cygwin.com/. It can be quite tricky to install the correct components of the cygwin toolkit, but Norman Graf has written detailed installation instructions which are included on this CD. I find the easiest way to set up visual studio to run under cygwin is to modify my cygwin.bat file (normally in c:cygwin) as follows:
You may need to change the path to vcvars32.bat if you installed visual studio in a different location.
Unpacking Geant4
Open the ZIP file containing the pre-compiled Geant4:
Unpack the entire file into c: (or somewhere else if you prefer).
Start a cygwin shell, by clicking on the cygwin icon on your desktop:
Then issuing something like the following commands:
cd c:
cd geant4
source geant4-setup.sh
(If you unpacked Geant4 somewhere other than c: you will need to modify the geant4-setup.sh script appropriately)
Your done! Now you are ready to continue with the rest of the installation exercise.
Источник
Полный рабочий пример на Geant4 с визуализацией
Рассмотрим полностью рабочий пример на Geant4 с визуализацией, который «хоть что-то делает». Этот проект является более сложным, чем первый пример на Geant4, однако этот пример позволяет полноценно провести моделирование установки, записать спектр в файл, угловое распределение при попадании в детектор. Так же предыдущий пример существенно более прост, в том числе и для понимания основных частей проекта на Джанте.
Запуск примера
Для запуска проекта в консоли смотрите сюда. Если же вы хотите все сделать «по человечески», с возможностью отлаживать программу, тогда вам нужно посмотреть статью об интеграции QtCreator и Geant4.
Схема установки примера
И начнем мы разбирать этот пример со схемы установки.
Схема моделируемой установки, P — источник частиц, протоны, 1 — мишень, 2 — чувствительная область, детектор.
У нас есть некий источник начальных частиц, из которого вылетают протоны. Обозначено через вектор P на рисунке. Далее частицы попадают на мишень 1, которая представляет собой некую пластинку. Первичные частицы взаимодействуют с мишенью и вместе с вторичными частицами попадают на детектор 2.
В детекторе у нас размещена чувствительная область, в которой мы и регистрируем частицы, узнаем их энергию и направление полета. Так как далее они нам не нужны, то все их «убиваем», т.е. уничтожаем. И после моделирование выводим спектр протонов и их угловое распределение.
Исходный код проекта
Основной файл проекта example2.cpp
В нем мы подключаем физику, геометрию системы и интерфейс пользователя и многое другое.
Задание геометрии детектора
Далее заголовочный файл класса создания установки, детектора и объявления всех необходимых материалов ExG4DetectorConstruction01.hh
И заголовочные файлы класса чувствительной области детектора, где снимаются параметры частиц ExG4DetectorSD.hh
Однако следует помнить, что таким образом можно снимать параметры только для проекта не использующего распаралеливание.
А теперь файл реализации конструкции установки и детектора ExG4DetectorConstruction01.cpp
И файл реализации чувствительного объема ExG4DetectorSD.cpp
Классы инициализации проекта
Далее идут важные и обязательные файлы инициализации проекта ExG4ActionInitialization01.hh
И файл класса задания начальных частиц ExG4PrimaryGeneratorAction01.hh
Файл реализации инициализации ExG4ActionInitialization01.cpp
И файл реализации задания начального источника частиц ExG4PrimaryGeneratorAction01.cpp
Make файл
Так как изменилось имя проекта, то соответственно немного изменился CMakeLists.txt
Визуализация и консольный запуск
Для визуализации используется следующий файл vis.mac
А для простого, консольного запуска файл run1.mac
В других статья будут подробней разбираться команды отрисовки и запуска примеров Geant4.
Весь представленный код примера находится здесь.
Источник
Build Geant4 (including OpenGL visualization) using Cygwin on Windows
[Updated on Nov 15, 2019]
There has been a lack of official documentation on how to build Geant4 using Cygwin on Windows. This post is intended to fill the gap. All we need to do is to install several Cygwin packages, modify a couple of cmake scripts, and change a few lines of Geant4 source code.
Test conditions
- Geant4 10.5.1
- Windows 10 (64-bit)
- Cygwin 64 version 3.0.7
- gcc and g++ version 7.4.0
- cmake version 3.14.5
The following Cygwin packages are required to build C++ project under CMake.
- gcc-g++
- cmake
- make
The following Cygwin packages are required to build Geant4 core engine.
- expat, libexpat-devel
- zlib, zlib-devel
The following Cygwin packages are required to build Geant4 OpenGL visualization module.
- libX11-devel
- libXmu-devel
- libGL-devel
- xinit
- xorg-server
- xorg-x11-fonts-*
Steps
- Modify cmake scripts.
- In both
cmakeModulesG4BuildSettings.cmake
andcmakeModulesG4ConfigureCMakeHelpers.cmake
, changeCMAKE_CXX_EXTENSIONS
fromOFF
toON
, i.e.set(CMAKE_CXX_EXTENSIONS ON)
The above steps are crucial in that they let the compiler flag
-std=gnu++11
be automatically added in place of the initial flag-std=c++11
. On Cygwin-std=c++11
will make the Posix functionposix_memalign()
inaccessible, which will cause Geant4 compile errors.
- In both
- Modify source code.
- In
sourceprocesseselectromagneticdnautilsincludeG4MoleculeGun.hh
, add declaration of explicit specialization immediately after class definition:template<typename TYPE> class TG4MoleculeShoot : public G4MoleculeShoot { public: TG4MoleculeShoot() : G4MoleculeShoot(){;} virtual ~TG4MoleculeShoot(){;} void Shoot(G4MoleculeGun*){} protected: void ShootAtRandomPosition(G4MoleculeGun*){} void ShootAtFixedPosition(G4MoleculeGun*){} }; // Above is class definition in Geant4 // We need to add three lines of code here // to declare explicit specialization template<> void TG4MoleculeShoot<G4Track>::ShootAtRandomPosition(G4MoleculeGun* gun); template<> void TG4MoleculeShoot<G4Track>::ShootAtFixedPosition(G4MoleculeGun* gun); template<> void TG4MoleculeShoot<G4Track>::Shoot(G4MoleculeGun* gun);
Otherwise the compiler would complain about multiple definition.
- In
sourceglobalmanagementsrcG4Threading.cc
, comment outsyscall.h
include. Apparently Cygwin does not offer the OS specific header filesyscall.h
, and thus do not support multithreading in Geant4 that relies onsyscall.h
.// #include // comment out this line
- In
- Create out-of-source build script. Due to lack of
syscall.h
in Cygwin, only single-threaded Geant4 can be built.- Release build
cmake ../geant4_src -DCMAKE_C_COMPILER=/usr/bin/gcc.exe -DCMAKE_CXX_COMPILER=/usr/bin/g++.exe -DCMAKE_INSTALL_PREFIX=/opt/geant4/release -DCMAKE_BUILD_TYPE=Release -DGEANT4_USE_SYSTEM_EXPAT=ON -DGEANT4_USE_SYSTEM_ZLIB=ON -DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_OPENGL_X11=ON
- Release build
- Build.
make
For faster compile, use
make -j6
which uses 6 parallel processes. - Install.
make install
- Visualization
To visualize B1 example, in one Cygwin terminal:startxwin
In another terminal:
export DISPLAY=:0.0 ./exampleB1.exe
- Have fun with Geant4 !!! … and remember: If you love something, set it free.
Acknowledgement
Thanks to Charlie for making me aware of the issues in newer Geant4.
Premise
Since I found some difficulties in installing Geant4 on my Windows Subsystem for Linux (WSL), I decided to make an installation guide of Geant4, for myself (so that I can check all the passages when I format my PC) and for you, that are reading this blog article. If you already took a look at the article “How to install ROOT on Windows Subsystem for Linux“, you’ll notice that the first half of this article is perfectly identical. This happens because the first passages are common to the installation of ROOT on the WSL and because Geant4 uses almost the same libraries.
This guide will show how to make a clean installation on your Windows 10 PC of a powerful tool which is Linux. Keep in mind that not only Geant4 can be installed in this Windows Subsystem for Linux, but any linux-based software. You’ll also learn how to enable the Graphic User Interface, in order perform some simulations. Details on how to compile and run a Geant4 example are reported in another article of this blog.
Requirements
A Windows 10 PC
Preparing for the WSL
First of all, you have to go to Settings and click on Apps. On the right side of the window, you’ll find Programs and Features. If you click on that, the window will change and you’ll find on the left Turn Windows features on or off. By clicking on that, a pop-up will open with many option. Be sure to put the check on Windows Subsystem for Linux, then hit Ok and Restart Now.
Installing the WSL
Open the Microsoft Store and search for Ubuntu. Be sure to install the latest version (by now the last one is Ubuntu 20.04) by clicking, first on Get and then on Install. Follow the instructions and create a username with a password, which will be your account for the WSL.
You can start Ubuntu by searching Ubuntu or bash in the start menu.
The first thing to do with a new linux system is to bring it up-to-date, so open the terminal and hit:
sudo apt update && sudo apt upgrade
Then hit Y or Yes every time is asked to. Don’t forget to clean your system of the useless packages by hitting:
sudo apt autoclean && sudo apt autoremove
Once the upgrade is finished.
Enabling the Graphic User Interface (GUI) with XMing
You have noticed for sure that until now you only interacted with your linux system by hitting commands in the terminal, with no programs which have a graphic user interface. You’ll also notice that if you start any software you know has a GUI, you’ll receive an error (for instance calling gedit in the terminal or firefox).
You have to install an external graphic server that can manage the Ubuntu graphics, which is XMing. You can download it here. It’s very easy to install, just follow the installer instructions.
Now, if you kept open the terminal windows during the installation, you’ll notice that hitting firefox won’t get better. In fact, the XMing server has to be opened before the terminal is. So, to test it, you can open it by calling in the Start menu XMing and only then opening the terminal by calling Ubuntu.
If you don’t want to bother about it, I suggest to set XMing as a Start App, so that you don’t have to remember to open it before the terminal because it will be automatically executed.
Preparing for GEANT4 installation
First of all, you have to install the dependencies by hitting:
sudo apt-get install dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev
libxft-dev libxext-dev libxmu-dev python
I also suggest to install the optional packages:
sudo apt-get install gfortran libssl-dev libpcre3-dev
xlibmesa-glu-dev libglew1.5-dev libftgl-dev
libmysqlclient-dev libfftw3-dev libcfitsio-dev
graphviz-dev libavahi-compat-libdnssd-dev
libldap2-dev python-dev libxml2-dev libkrb5-dev
libgsl0-dev libqt5opengl5-dev qt5-default libxerces-c-dev
python3-dev python3-numpy-dev
Once is done, move to the Download area and choose a release which is compatible with your WSL. I chose the release 4.10.07.p2 for Ubuntu 20.04, which you can download here.
Once the compressed package is downloaded, open the terminal and hit:
sudo mv /mnt/c/Users/YOURUSERNAME/Downloads/geant4.10.07.p02.tar.gz /opt/
Be sure to change YOURUSERNAME with the name of the user you are logged in. If you don’t know, after Users/ start hitting the Tab button to enable the suggestions.
Now change your directory with:
cd /opt/
If you hit ls or ll you’ll obtain the name of the root package. Hit:
gunzip geant4.10.07.p02.tar.gz
It may not work for two reasons: gunzip is not installed (which you can solve by hitting sudo apt install gunzip) or because you did not use the super user command, so repeat the previous command putting at the top of the line “sudo“.
Now you’ll have a package named “geant4.10.07.p02.tar“. Extract it by hitting:
tar -xvf geant4.10.07.p02.tar
Usually you will obtain a folder named geant, but sometimes it can have the full name, so something like geant4.10.07.p02. Be sure to check with an ls command because the last part of the installation process will need the name of the folder.
Now we are going to compile the source code into the Geant4 libraries, so we can start creating two directories: one for the code building instructions, that will be named geant4-build, and one where Geant4 will be installed, called Geant4.
mkdir geant4-build && mkdir Geant4
Installing CLHEP and DAWN
Now, before starting the installation, I’d consider installing some other libraries that are very useful when coupled with Geant4, such as CLHEP (A Class Library for High Energy Physics) and DAWN (Drawer for Academic WritiNgs).
Go in /opt/ with:
cd /opt/
And then create a directory named CLHEP:
sudo mkdir CLHEP
Then, on CLHEP website, the appropriate version can be downloaded, I chose clhep-2.4.4.2. We now can move the package in the right directory and untar it by hitting:
sudo mv /mnt/c/Users/YOURUSERNAME/Downloads/clhep-2.4.4.2.tgz /opt/CLHEP/
sudo gunzip clhep-2.4.4.2.tgz && sudo tar -xvf clhep-2.4.4.2.tar
You should now have a folder named 2.4.4.2 containing CLHEP source file. Let’s create a build directory and compile the code with cmake:
sudo mkdir build && cd build
sudo cmake -DCMAKE_INSTALL_PREFIX=/opt/CLHEP ../2.4.4.2/CLHEP
sudo make
sudo make install
Now we can clean the CLHEP directory by hitting:
sudo rm -r /opt/CLHEP/build
sudo rm -r /opt/CLHEP/clhep-2.4.4.2.tgz
sudo rm -r /opt/CLHEP/2.4.4.2
You should now have only three folders named “bin“, “include” and “lib” if you hid ls in your terminal. Installation of CLHEP is now done and we can move on DAWN. Let’s download from here, I chose the 3.91a version and insert the following instructions to create a directory, build the code and install DAWN in /opt/. Paste the following commands line by line, as you should have done till now.
cd /opt/
sudo mkdir DAWN
cd DAWN
sudo mv /mnt/c/Users/YOURUSERNAME/Downloads/dawn_3_91a.tgz .
sudo gunzip dawn_3_91a.tgz
sudo tar -xvf dawn_3_91a.tar
sudo mv dawn_3_91a/* .
sudo make clean
sudo make guiclean
sudo make
sudo make install
Finishing GEANT4 installation
Now we are finally ready to conclude Geant4 installation. Let’s get back to the build directory with:
cd /opt/geant4-build
Let’s now give instructions for Geant4 installation. You can activate or deactivate some extensions or libraries by using cmake instructions, so be aware of what you are doing now. We are going to install Geant4 in the folder with the same name under /opt/ and we are going to link both CLHEP and DAWN with the appropriate commands. Before hitting cmake let’s tell our WSL that CLHEP is installed by giving it the paths. Hit:
sudo nano /home/YOURUSERNAME/.bashrc
And paste the following at the end of the file:
sudo nexport CLHEP_DIR=/opt/CLHEP/
export CLHEP_INCLUDE_DIR=${CLHEP_DIR}/include/
export CLHEP_LIBRARY=${CLHEP_DIR}/lib/
export LD_LIBRARY_PATH=${CLHEP_LIBRARY}:${LD_LIBRARY_PATH}
export PATH=$CLHEP_DIR/bin/:$PATH
Then Ctrl+O to save and Ctrl+X to quit. To load the instructions you can close the WSL and reopen it. Then go back to the build directory with “cd /opt/geant4-build”. Once you have returned to the build directory, insert:
sudo cmake -DCMAKE_INSTALL_PREFIX=/opt/Geant4 -DGEANT4_USE_QT=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_RAYTRACER_X11=ON -DGEANT4_USE_GDML=ON -DGEANT4_USE_SYSTEM_CLHEP=ON -DGEANT4_INSTALL_EXAMPLES=ON /opt/geant4.10.07.p02
Carefully read if there is any error. If not hit:
sudo make
This process is the longest of all the installation. And finally:
sudo make install
Now Geant4 should be correctly installed on your WSL. Reopen .bashrc:
sudo nano /home/YOURUSERNAME/.bashrc
and paste the following at the end of the file:
# geant4
source /opt/Geant4/bin/geant4.sh
Now you are ready to build and run your first example!
Ph.D. student in chemistry?? Homebrewer? Japanese language student ?? Webdesigner ? Amateur cook ? What else? ☕️
Find out in a brief overview which describes the project. More detail is provided in the Introduction to Geant4, and in full journal articles NIM A 506 (2003) 250-303, IEEE Nuc. Sci. 53 No. 1 (2006) 270-278 and NIM A 835 (2016) 186-225.
As you encounter questions or problems, please consult the FAQ or take advantage of the user support provided by Geant4 developers.
Installing Geant4
You can begin installing Geant4 by downloading the code from the distribution page. Next, consult the Installation Guide for the instructions required to set up Geant4 in your computing environment.
Building an Application
Once you have installed the toolkit, the Application Developers Guide will provide information and examples for building your own simulation application.
Getting Help
As problems arise, try browsing the user forum to see whether or not your problem has already been encountered. If it hasn’t, you can post it and Geant4 developers will do their best to find a solution. This is also a good place to discuss Geant4 topics in general.
В этом уроке разберем как собирать и запускать проект на Geant4 для Ubuntu, линукса. Для Windows разбор будет опубликован позже, однако принцип тот же самый.
Подготовка к компиляции примера на Geant4
Следует понимать, что проект или программа Geant4 работает используя его как библиотеку, берет из него необходимые классы, данные сечений, параметров частиц и так далее.
Поэтому, для компиляции нужно предварительно указать где лежит Джант, и все необходимые исходные данные.
Для данного разбора возьмем установку по пути
/home/black/geant4/install_path/geant4.10.03-build
описание которой было дано ранее в этой статье.
Итак, нам нужно указать директорию, в которой компилятор сможет найти все необходимые пути
/home/black/geant4/install_path/geant4.10.03.p03-install/lib/Geant4-10.3.3
Для примера, директория другой версии Geant
/home/black/geant4/install_path/geant4.10.05-install/lib/Geant4-10.5.1
Схематично этот путь выглядит так:
install path/installed Geant4 folder/lib/Geant4-10.x.x
Создание файла CmakeLists.txt для CMAKE
Для сборки проекта используется CMAKE, это специальная утилита для автоматической сборки приложений. Она существенно упрощает сборку и компиляцию программ.
В файлах примеров с этого сайта и в примерах Geant4 присутствует файл CmakeLists.txt, который необходим для работы CMAKE. В нем присутствуют инструкции для сборки примеров.
Перед сборкой убедитесь, что в системе присутствует установленный CMAKE нужной версии.
В примерах требуется CMAKE версии новее 2.6. В качестве исходника можно использовать файл из статьи о простом примере на Geant4.
При минимальной правке стоит обратить внимание только на следующие строчки из CmakeLists.txt файла:
# Расположение исходного кода и заголовочных файлов этого проекта
# Заголовочные файлы подключаются, значит что они будут показаны в
# IDE - среде разработки
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cpp)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
В частности /src/*.cpp
— в какой папке в проекте находятся файлы исходного кода и их расширение, а так же /include/*.hh
— в какой директории находятся заголовочные файлы.
И строчки
# Добавление исполняемого файла и линковка его с библиотеками Geant4
add_executable(example1 example1.cpp ${sources} ${headers})
target_link_libraries(example1 ${Geant4_LIBRARIES})
где следует поменять название основного файла проекта, если у вас он отличается от example1.cpp
.
И таким образом уже сформированный файл CmakeLists.txt подойдет практически под любой проект для Джанта.
Сборка программы Geant4
Итак, немножко затронем культуру программирования, как компилировать программу с CMAKE правильно.
Пусть наш проект лежит где-то в папке example1_rus
,
для совсем новичков приведем полный путь
/home/black/geant4/projects/example1_rus
Т.е. пусть все наши проекты будут в папке
/home/black/geant4/projects/
и в дальнейшем будем работать в ней, но команды попробуем сделать все относительные, что бы не зависеть от того, где лежит проект.
Итак, важное правило программирования: директории, где находятся исходники проекта, там, где собирается проект и где он устанавливается, должны быть разными!
В статье, где описывается установка Geant4, сделано по этому принципу.
Мы пока просто учимся и устанавливать проект не будем, поэтому пока обойдемся двумя папками — исходников и сборки.
Итак, рядом с папкой, где лежат исходники, создадим папку для сборки.
- Исходники
example1_rus
- Создаем папку сборки
example1_rus-build
и в неё заходим.
В консоли команды выглядят так:
cd /home/black/geant4/projects
создаем папку
mkdir example1_rus-build
в нее заходим
cd example1_rus-build/
можем проверить что находимся в нужной папке командой
pwd
Далее собираем проект с помощью команды CMAKE
cmake -DGeant4_DIR=/home/black/geant4/install_path/geant4.10.05-install/lib/Geant4-10.3.3 ../example1_rus
где через параметр -DGeant4_DIR
передаем папку из устанвоки Geant4, в которой находятся нужные файлы для сборки проекта. Вторым параметром указываем папку с исходниками. Так как она находится на директорию выше, указываем выйти выше и зайти в папку с исходниками example1_rus
.
Далее компилируем
make
Можем компилировать в много поточном режиме
make -j4
В результате сборки появится исполняемый файл проекта — программа, про её запуск читайте далее.
Запуск программы на Geant4
Для запуска исполняемого файла необходимо задать переменные среды для Geant4.
Для этого в консоли задаем команду
source /home/black/geant4/install_path/geant4.10.03.p03-install/bin/geant4.sh
Если у вас другая версия Geant4,
то схема команды
source path to Geant4 install/bin/geant4.sh
Пройдемся по основным ошибкам запуска
Не заданы переменные среды
Если просто запустить исполняемый файл — экзешник или бинарник, зачастую появится ошибка.
black@black-bycel:~/geant4/projects/example1_rus-build$ ./example1
./example1: error while loading shared libraries: libG4processes.so: cannot open shared object file: No such file or directory
Для исправления нужно указать на файл geant4.sh в папке bin/
в директории установки
source path to Geant4 install/bin/geant4.sh
Т.е. открываем консоль, выполняем команду выше, исправив путь установки Джанта на свой,
и в этой же консоли запускать программу.
Что бы не нужно было постоянно задавать переменные среды, можно эту команду поместить в файл .bashrc
в родительском каталоге вашего пользователя.
У меня например в
/home/black
Имя пользователя у меня black (производная от моего ника black-bycel, что по беларуски звучит как «чорны бусел» (ударение на о и у) или по русски «чёрный аист». Это редкий вид аиста, живущего на Полесье, в глухих лесах и болотах, где людей практически нет.)
Нет внешних дополнительных данных
Иногда не до конца скачиваются дополнительные данные Geant4, необходимые для моделирования. Можно много времени потратить разбираясь в чем проблема, однако самый простой и быстрый рецепт — очищаем все содержимое папок сборки и установки Geant4. Переустанавливаем его и не забываем указать параметр -DGEANT4_INSTALL_DATA=ON
для CMAKE
.
«Мистическое» поведение программы в процессе разработки
Иногда бывает «мистическое» поведение, когда программа то не видит новые файлы, то какие то классы, или ведет себя совершенно не понятно.
Возможно это проблема в коде, но очень часто так же и результат кэширования при компиляции.
Команда очистить кэш компиляции
make clean
Я бы рекомендовал ее выполнять каждый раз перед make
.
Если вы добавили новые файлы к проекту, то нужно еще раз запускать CMAKE.
Был случай, когда проект копировали в другую папку на другой компьютер и запуск CMAKE не помогал, просто поменялись все пути, а система сборки этого не видела. Вот здесь и важно правило программирования, что папка с исходными файлами и файлы компиляции находятся в разных папка. Мы просто удаляем все что находится в папке сборки, в консоли это можно сделать командой
rm -r *
где команда rm
— удалить, -r
— удалять рекурсивно, т. е. папки и все что в них тоже, *
— маска, в таком виде означает удалить все, так как подходит к любому файлу и папке. И заново собираем проект.
Рассмотрим процесс установки GEANT4.
- Скачиваем архив отсюда download page.
-
Создаем директорию GEANT4 в своем домашнем каталоге.
- Распаковываем в неё скачанный архив.
- В директории GEANT4 создаем папки build и install. В папке build мы будем собирать GEANT4, а в папку install устанавливать.
- Опционально: можно скачать data-файлы, и разместить их в директории data, что бы затем использовать их при установке. Это совершенно необязательно, так как GEANT4 может скачать их сам при сборке.
Установка на Ubuntu
Сборка без дополнительных опций
-
Устанавливаем необходимые утилиты для сборки: компилятор С++, cmake и консольный конфигуратор ccmake, а ткаже необходимые библиотеки:
apt-get install g++ cmake cmake-curses-gui apt-get install libexpat1 libexpat1-dev
-
Переходим в директорию build:
-
Открываем ccmake:
Здесь в качетсве аргумента команды ccmake используется путь до диретории распакованной из скаченного нами архива с GEANT4. ccmake читает расположенной в этой директории файл CMakeLIsts.txt, для того чтобы настроить параметры сборки.
- После того как ccmake открылся, жмем клавишу c, если все нормально, то ccmake выдаст предупреждение об отсутствии data-файлов, которое можно смело проигнорировать. Так же может выдать ошибку если в системе не установлена какая-либо библиотека, тогда её надо доустановить.
- Если ccmake успешно сконфигурировался, отредактируем следующие параметры:
CMAKE_INSTALL_PREFIX — по умолчанию он пытается установить GEANT4 в системную директорию, однако я предлагаю прописать здесь путь до папки install.
GEANT4_INSTALL_DATA — установим значение ON, для того чтобы GEANT4 сам скачал data-файлы. Если у вас уже есть эти файлы, укажаите к ним путь в параметре GEANT4_INSTALL_DATADIR. -
Жмем клавишу c , до тех пор пока не появиться опция нажать клавишу g. Жмем g. ccmake создаст makefile и закроется.
-
Собираем GEANT4:
make -jN #где N количество ядер которое вы хотите задействовать, посмотреть количество ядер можно в htop (apt-get install htop)
-
Устанавливаем GEANT4:
make install #если вы не изменяли параметр CMAKE_INSTALL_PREFIX, то используйте sudo make install, еще лучше воспользуетесь checkinstall
-
Устанавливаем переменные окружения:
source /path/to/install/bin/geant4.sh #Для автоматического установление переменных среды, данную команду нужно прописать в .bashrc (только для консольных приложений) или в .xsessionrc (и для графических тоже).
-
Проверяем работоспособность на примерах:
cd ~ mkdir temp cd temp mkdir build cd build cmake ../../GEANT4/install/share/Geant4-10.3.0/examples/basic/B1/ #путь до примера make ./exampleB1
- PROFIT
- Папку build мы не удалаем, так как она пригодится нам когда мы захотим пересобрать GEANT4 с другими опциями. Это позовлит нам в дальнейшем пересобирать только те файлы которые будут изменены.
Anaconda
Иногда при сборке cmake пытается использовать не системные библиотеки, а бибилиотеки anaconda. Это решается удаление пути к anaconda из переменной PATH. Или смотрим раздел Установка с помощью conda.
Сборка дополнительных опций
Подключение GDML
Для загрузки геометрии из внешних gdml-файлов, на потребуется подключить GDML.
-
Устанавливаем необходимые библиотеки:
apt-get install libxerces-c3.1 libxerces-c-dev
- Запускаем ccmake в папке build.
- Установим значение ON для параметра GEANT4_USE_GDML.
- Конфигурируем, генерируем, собираем и устанавливаем.
Подключение GUI
Для GUI будем использовать qt — установим значение параметра GEANT4_USE_QT равным ON. Если хотим использовать qt4, то установите значение параметра GEANT4_FORCE_QT4 равным ON.
apt-get install qt5-default #или apt-get install qt4-default libqt4-opengl-dev
Установка с помощью conda (cross-linux)
Если вы не имеет прав суперпользователя, или системные репозитории безнадежно устарели, или вы просто не хотите с ними связываться, то можно использовать пакетный менеджер conda для установки дополнительных библиотек.
- Устанавливаем Anaconda или Miniconda c официального сайта.
-
Устанавливаем необходимые пакеты:
conda install -c anaconda gcc conda install libgcc conda install -c anaconda xerces-c conda install -c anaconda cmake conda install -c anaconda qt # если ставили miniconda
- Конфигурируем, генерируем, собираем и устанавливаем.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env bash | |
sudo apt-get -y install | |
autotools-dev | |
axel | |
binutils | |
build-essential | |
cmake | |
console-setup | |
dpkg-dev | |
expat | |
freeglut3-dev | |
ftp | |
g++ | |
g++-6 | |
gcc | |
gfortran | |
imagemagick | |
libblas-dev | |
libblas3 | |
libblas3gf | |
libboost-all-dev | |
libboost-dev | |
libboost-signals-dev | |
libcuda1 | |
libcudart9.1 | |
libexpat1 | |
libexpat1-dev | |
libfftw3-3 | |
libfftw3-bin | |
libfftw3-dev | |
libfftw3-long3 | |
libfftw3-quad3 | |
libgsl-dev | |
libhdf5-dev | |
liblapack-dev | |
liblapack3 | |
liblapack3gf | |
libmpich-dev | |
libmpikmeans-dev | |
libmpikmeans1 | |
libopenblas-base | |
libopenblas-dev | |
libopengl0 | |
libopenmpi-dev | |
libopenmpi3 | |
libtbb-dev | |
libtiff-dev | |
libwt-common | |
libwt-dev | |
libwt38 | |
libwt40 | |
libx11-dev | |
libxerces-c-dev | |
libxext-dev | |
libxft-dev | |
libxi-dev | |
libxmu-dev | |
libxpm-dev | |
libz3-dev | |
mpich | |
mpikmeans-tools | |
nmap | |
nvidia-cuda-dev | |
nvidia-cuda-doc | |
nvidia-cuda-gdb | |
nvidia-cuda-mps | |
nvidia-cuda-toolkit | |
nvidia-smi | |
openssh-server | |
perl-tk | |
qt5-assistant | |
qt5-default | |
qtbase5-dev | |
qtbase5-dev-tools | |
qtcreator | |
xzdec | |
mkdir ~/Sources | |
cd ~/Sources | |
wget -c http://cern.ch/geant4-data/releases/geant4.10.04.p02.tar.gz | |
tar -xzvf geant4.10.04.p02.tar.gz | |
mkdir geant4.10.04.p02-build | |
cd geant4.10.04.p02-build | |
cmake | |
-DGEANT4_INSTALL_DATA=ON | |
-DGEANT4_USE_HDF5=ON | |
-DGEANT4_BUILD_MUONIC_ATOMS_IN_USE=ON | |
-DGEANT4_USE_SYSTEM_ZLIB=ON | |
-DGEANT4_USE_QT=ON | |
-DGEANT4_USE_GDML=ON | |
-DGEANT4_BUILD_MULTITHREADED=ON | |
-DCMAKE_INSTALL_PREFIX=/opt/geant4 | |
../geant4.10.04.p02 | |
make | |
sudo make install |