====== GEANT4 ======
[[http://geant4.web.cern.ch/geant4/ | GEANT4]] --- это программный пакет для моделирования прохождения частиц через вещество методом Монте-Карло. Является одним из основных программных инструментов, используемых в [[http://home.web.cern.ch/ | CERN]].
====== Установка ======
===== Из исходников =====
Будем следовать рецепту((https://geant4-userdoc.web.cern.ch/UsersGuides/InstallationGuide/html/installguide.html)) с официального сайта GEANT4. Установим пакеты, которые потребуются для сборки GEANT4:
apt-get install build-essential cmake libexpat1-dev
Если планируется использовать поддержку OpenGL, то:
apt-get install libglu1-mesa-dev libxmu-dev
Если планируется использовать интерфейс Qt5, то:
apt-get install qtbase5-dev libqt5opengl5-dev
Если планируется использовать описание геометрии в формате [[https://gdml.web.cern.ch/GDML/|GDML]], то:
apt-get install libxerces-c-dev
mkdir /home/user/GEANT4-download
cd /home/user/GEANT4-download
wget -cS 'https://geant4-data.web.cern.ch/releases/geant4.10.07.p02.tar.gz'
tar -xvf geant4.10.07.p02.tar.gz
mkdir geant4.10.07.p02-build
cd geant4.10.07.p02-build/
Без поддержки OpenGL (или интерактивного графического интерфейса вообще? FIXME ) :
cmake -DCMAKE_INSTALL_PREFIX=/home/user/GEANT4 -DGEANT4_BUILD_MULTITHREADED=ON /home/user/GEANT4-download/geant4.10.07.p02
Для поддержки OpenGL для X11: ''-DGEANT4_USE_OPENGL_X11=ON''
Для поддержки интерфейса Qt: ''-DGEANT4_USE_QT=ON''
Для поддержки файлов GDML: ''-DGEANT4_USE_GDML=ON''
==== Файлы данных ====
Если при конфигурировании отображается следующее предупреждение:
*WARNING*
Geant4 has been pre-configured to look for datasets
in the directory:
/home/user/GEANT4/share/Geant4-10.7.2/data
but the following datasets are NOT present on disk at
that location:
G4NDL (4.6)
G4EMLOW (7.13)
PhotonEvaporation (5.7)
RadioactiveDecay (5.6)
G4PARTICLEXS (3.1.1)
G4PII (1.3)
RealSurface (2.2)
G4SAIDDATA (2.0)
G4ABLA (3.1)
G4INCL (1.0)
G4ENSDFSTATE (2.3)
If you want to have these datasets installed automatically
simply re-run cmake and set the GEANT4_INSTALL_DATA
variable to ON. This will configure the build to download
and install these datasets for you. For example, on the
command line, do:
cmake -DGEANT4_INSTALL_DATA=ON
The variable can also be toggled in ccmake or cmake-gui.
If you're running on a Windows system, this is the best
solution as CMake will unpack the datasets for you
without any further software being required
Alternatively, you can install these datasets manually
now or after you have installed Geant4. To do this,
download the following files:
https://cern.ch/geant4-data/datasets/G4NDL.4.6.tar.gz
https://cern.ch/geant4-data/datasets/G4EMLOW.7.13.tar.gz
https://cern.ch/geant4-data/datasets/G4PhotonEvaporation.5.7.tar.gz
https://cern.ch/geant4-data/datasets/G4RadioactiveDecay.5.6.tar.gz
https://cern.ch/geant4-data/datasets/G4PARTICLEXS.3.1.1.tar.gz
https://cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz
https://cern.ch/geant4-data/datasets/G4RealSurface.2.2.tar.gz
https://cern.ch/geant4-data/datasets/G4SAIDDATA.2.0.tar.gz
https://cern.ch/geant4-data/datasets/G4ABLA.3.1.tar.gz
https://cern.ch/geant4-data/datasets/G4INCL.1.0.tar.gz
https://cern.ch/geant4-data/datasets/G4ENSDFSTATE.2.3.tar.gz
and unpack them under the directory:
/home/user/GEANT4/share/Geant4-10.7.2/data
As we supply the datasets packed in gzipped tar files,
you will need the 'tar' utility to unpack them.
Nota bene: Missing datasets will not affect or break
compilation and installation of the Geant4
libraries.
это означает, что файлы данных ещё не установлены. Их можно установить прямо во время сборки, передав cmake параметр ''-DGEANT4_INSTALL_DATA=ON''. Но это потребует скачивания из интернета (несколькосот МБ). Если эти файлы уже скачаны, их можно вручную распаковать в нужную папку, как и подсказывает нам текст предупреждения. Для этого:
mkdir -p /home/user/GEANT4/share/Geant4-10.7.2/data
cd /home/user/GEANT4/share/Geant4-10.7.2/data
tar -xvf /home/user/GEANT4-download/G4ABLA.3.1.tar.gz
tar -xvf /home/user/GEANT4-download/G4EMLOW.7.13.tar.gz
tar -xvf /home/user/GEANT4-download/G4ENSDFSTATE.2.3.tar.gz
tar -xvf /home/user/GEANT4-download/G4INCL.1.0.tar.gz
tar -xvf /home/user/GEANT4-download/G4NDL.4.6.tar.gz
tar -xvf /home/user/GEANT4-download/G4PARTICLEXS.3.1.1.tar.gz
tar -xvf /home/user/GEANT4-download/G4PhotonEvaporation.5.7.tar.gz
tar -xvf /home/user/GEANT4-download/G4PII.1.3.tar.gz
tar -xvf /home/user/GEANT4-download/G4RadioactiveDecay.5.6.tar.gz
tar -xvf /home/user/GEANT4-download/G4SAIDDATA.2.0.tar.gz
tar -xvf /home/user/GEANT4-download/G4RealSurface.2.2.tar.gz
После чего можно заново запустить cmake, как это делалось ранее, чтобы убедиться, что он находит все установленные файлы данных. Если это так, можно переходить к компиляции и установке:
time make -j4
make install
===== G4MPI =====
Для использования технологий MPI в GEANT4, нужно скомпилировать и установить библиотеку G4MPI. Она поставляется в архиве последних версий GEANT4 в разделе примеров((http://geant4.web.cern.ch/geant4/UserDocumentation/Doxygen/examples_doc/html/Examples_MPI.html)).
mkdir G4MPI.build && cd G4MPI.build
cmake -DGeant4_DIR=/home/user/GEANT4/lib/Geant4-10.2.1 -DCMAKE_INSTALL_PREFIX=/home/user/GEANT4/G4MPI /home/user/GEANT4-download/geant4.10.02.p01/examples/extended/parallel/MPI/source
make
Если компилятор выдаёт ошибку, приведённую ниже, это означает, что в системе установлена старая версия MPI.
/home/user/GEANT4-download/geant4.10.02.p01/examples/extended/parallel/MPI/source/src/G4MPIscorerMerger.cc: In member function ‘void G4MPIscorerMerger::Pack(const G4VScoringMesh*)’:
/home/user/GEANT4-download/geant4.10.02.p01/examples/extended/parallel/MPI/source/src/G4MPIscorerMerger.cc:309:37: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
&outputBufferPosition,comm);
^
Чтобы собрать G4MPI в таком случае нужно добавить параметр ''-DG4MPI_OLD_MPI=ON''
После этого можно установить G4MPI в указанную ранее папку:
make install
====== Использование ======
Список встроенных команд рабочей среды GEANT4 можно просмотреть [[http://geant4.web.cern.ch/geant4/G4UsersDocuments/UsersGuides/ForApplicationDeveloper/html/Control/UIcommands/_.html | здесь]].
===== Пример B1 =====
В этом примере моделируется прохождение γ-квантов с энергией 6 МэВ через мягкие ткани и кость человека, помещённые в водную среду.
cd /home/user/geant/
cp -r geant4.10.00.p02/examples/basic/B1 ./
mkdir B1-build
cd B1-build/
. /home/user/geant/geant4.10.00.p02-install/bin/geant4.sh
С использованием графического интерфейса OpenGL:
cmake -DWITH_GEANT4_UIVIS=ON -DGeant4_DIR=/home/user/geant/geant4.10.00.p02-install/lib/Geant4-10.0.2/ ../B1
make
cd /home/user/geant/B1-build/
./exampleB1
После запуска видим приглашение. Запустим в нём процесс моделирования пролёта частиц. Для того, чтобы просчитать траектории 10 частиц вводим((http://geant4.web.cern.ch/geant4/UserDocumentation/Doxygen/examples_doc/html/ExampleB1.html)):
Idle> /run/beamOn 10
Если используется графический интерфейс, в нём должны появиться траектории 10 частиц.
{{::g4-b1-opengl-10particles-screenshot.png?200 |}}
Как видим, кроме зелёных траекторий исходных частиц появились ещё и красные траектории частиц, образовавшихся в результате взаимодействия исходных частиц со средой. Разными цветами GEANT4 показывает частицы разного заряда. Так траектории //положительно// заряженных частиц отображаются **синим** цветом, //отрицательно// заряженных -- **красным**, а //нейтральных// -- **зелёным**((http://geant4.web.cern.ch/geant4/G4UsersDocuments/UsersGuides/ForApplicationDeveloper/html/TrackingAndPhysics/tracking.html#5.1.6)).\\
Полученное изображение можно экспортировать в файл. Для интерфейса OpenGL это делается так:
Idle> /vis/ogl/printEPS
File G4OpenGL_0.eps has been saved
Просмотреть EPS-файл можно при помощи команды ''display'', входящей в пакет [[http://imagemagick.org/ | ImageMagick]]:
display G4OpenGL_0.eps
А можно преобразовать в какой-нибудь другой формат. Например,
convert G4OpenGL_0.eps G4OpenGL_0.png
==== Модификация примера ====
Некоторая модификация поставленной в примере задачи возможна даже без перекомпиляции примера, а только используя его внутренние команды. Например, можно легко изменить энергию налетающих частиц:
Idle> /gun/energy 1 GeV
Idle> /run/beamOn 10
{{::g4-b1-opengl-10particles-gamma1gev.png?200 |}}
Как видим, после увеличения энергии исходных γ-частиц до 1 ГэВ на рисунке появились траектории синего цвета, а это означает, что при таких энергиях становится возможным рождение положительно заряженных частиц, чего не наблюдалось в этом примере ранее.\\
Обратим также внимание на то, что жёлтые точки, обозначающие места взаимодействия частиц со средой, на красных и синих траекториях разположены гораздо гуще, чем на зелёных. Это вполне соответствует действительности, так как длина свободного пробега заряженных частиц меньше, чем у нейтральных частиц.
Включим отображение границ объёма, в который помещены исследуемые тела. В рассматриваемом примере B1 существует некий общий объём с названием ''World'', заполненный воздухом, в котором выделен другой объём под названием ''Envelope'', заполненный водой. Включим отображение их границ:
Idle> /vis/geometry/set/visibility/ World 0 true
Idle> /vis/geometry/set/visibility/ Envelope 0 true
После этого появятся границы указанных объёмов, но они будут непрозрачными. Чтобы сделать их прозрачными, изменим стиль отображения логических объёмов:
Idle> /vis/viewer/set/style w
Однко теперь и внутренние исследуемые тела также стали прозрачными. Чтобы вернуть непрозрачность только этим исследуемым телам, делаем так:
Idle> /vis/geometry/set/forceSolid Shape1 0 true
Idle> /vis/geometry/set/forceSolid Shape2 0 true
{{::g4-b1-opengl-10particles-alpha500mev.png?200 |}}
Теперь попробуем изменить тип и энергию налетающих частиц:
Idle> /gun/particle alpha
Idle> /gun/energy 500 MeV
И снова запустим моделирование:
Idle> /run/beamOn 10
===== Параллельные вычисления =====
==== G4MPI ====
Согласно [[http://geant4.web.cern.ch/geant4/UserDocumentation/Doxygen/examples_doc/html/Examples_MPI.html | документации G4MPI]], программа на GEANT4, использующая технологии MPI может иметь примерно такую структуру:
#include "G4MPImanager.hh"
#include "G4MPIsession.hh"
int main(int argc,char** argv)
{
// Создание диспетчера G4MPImanager
G4MPImanager* g4MPI= new G4MPImanager(argc,argv);
// Создание сессии MPI (G4MPIsession) вместо G4UIterminal
G4MPIsession* session= g4MPI-> GetMPIsession();
// Далее следует стандартный код программы на GEANT4
G4RunManager* runManager= new G4RunManager();
...
// После установки всех параметров программы нужно запустить сессию MPI.
// MPIsession может работать как в интерактивном, так и в пакетном режиме.
session->SessionStart();
// В конце выполнения программы
delete g4MPI;
delete runManager;
}
Компилировать такую программу нужно следующим образом (предполагается, что все пользовательские программы на GEANT4 находятся в каталоге ''/home/user/geant/'', а текущая программа - в подкаталоге ''MPItest'').
Сначала нужно указать в ''CMakeLists.txt'' для нашей программы пути к файлам MPI. Для этого нужно отредактировать или добавить такие строки:
# Поиск пакета MPI в системе:
find_package(MPI REQUIRED)
# Установка флагов компилятора и компоновщика:
set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})
set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS})
# Путь к заголовочным файлам:
include_directories(${MPI_INCLUDE_PATH} "/home/user/GEANT4/G4MPI/include/")
# Путь к библиотекам для компоновки окончательного исполнимого файла программы:
target_link_libraries(MPItest-program.bin ${MPI_LIBRARIES} ${G4mpi_DIR}/libG4mpi.so)
Затем собственно компиляция:
cd /home/user/geant/
mkdir MPItest.build
cd MPItest.build
. /home/user/GEANT4/bin/geant4.sh
cmake -DGeant4_DIR=/home/user/GEANT4/lib/Geant4-10.2.1 -DG4mpi_DIR=/home/user/GEANT4/G4MPI/lib ../MPItest
make
Запускать полученную программу можно в стандартном окружении MPI. Например,
mpirun -n 4 ./MPItest-program.bin
===== Анимация =====
При использовании интерфейса Qt правым щелчком мыши по изображению эксперимента вызывается меню, в котором можно выбрать пункт ''Actions'' → ''Movie parameters...''
{{::movie_parameters.png?200 || }}
В этом окне можно выбрать параметры записи анимации, а также запустить и остановить её.
Для того, чтобы этим воспользоваться, необходимо установить пакет [[http://netpbm.alioth.debian.org/ | netpbm]], который будет собирать из отдельных снимков в формате PPM((При этом сами снимки помещаются в подкаталог с именем вида ''QtMovie_12-09-2014_09-27-35'' (имя, по-видимому, соответствует дате и времени запуска) каталога, указанного в окне настроек видео под параметром ''Temporary folder path'')) видеофайл в формате MPEG:
sudo apt-get install netpbm
====== Ссылки ======
[[http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/index.html | Geant4 User's Guide for Application Developers]]
[[https://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch06.html | Chapter 6. User Actions]]
[[https://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch06s02.html | Optional User Actions]]
[[https://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch03s03.html | System of Units]]
[[http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/BackupVersions/V9.6/html/ch11s04.html | FAQ.4. Tracks and steps]]
[[https://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch03s04.html#sect.Run.Basic.Manage | Run]]
[[http://www.geant4.org/geant4/support/training.shtml | GEANT4 Training Courses]]
http://wiki.opengatecollaboration.org/index.php/Users_Guide_V6:Introduction
http://geant4.slac.stanford.edu/tutorial/mcgill06/HandsOn3/HandsOn3.htm
[[http://geant4.cern.ch/G4UsersDocuments/UsersGuides/PhysicsReferenceManual/html/PhysicsReferenceManual.html | Physics Reference Manual]]
http://www.jlab.org/conferences/geant4/
http://en.wikipedia.org/wiki/Geant4
http://geant4.web.cern.ch/geant4/UserDocumentation/Welcome/IntroductionToGeant4/html/introductionToGeant4.html#1.
http://geant4.org/geant4/index.shtml
[[http://content.lib.utah.edu/utils/getfile/collection/etd3/id/2106/filename/2096.pdf | MCNP5 AND GEANT4 COMPARISONS FOR PRELIMINARY FAST NEUTRON PENCIL BEAM DESIGN AT THE UNIVERSITY OF UTAH TRIGA SYSTEM]] by Christian Amevi Adjei
===== На русском языке =====
http://mipt.jinr.ru/edu/course/view.php?id=23
http://vserv.sinp.msu.ru/wiki/GEANT4
http://code.google.com/p/geant4-labs/