Revision as of 12:33, 3 Apr 2008 WikiSysop (Talk | contribs) ← Go to previous diff |
Current revision WikiSysop (Talk | contribs) |
||
Line 1: | Line 1: | ||
- | ==Что же такое GEANT4== | + | ==Что такое GEANT== |
- | GEANT4 (сокращенно g4, произносится «джант») — это система библиотек для симуляции прохождения элементарных частиц через вещество. Ее язык — Си++, ее авторы — международная коллаборация при ЦЕРНе. В основном это итальянцы и японцы. Ну и швейцарцы. | + | [[Image:Montecarlo.jpg | right | Monte Carlo]] GEANT4 (сокращенно |
+ | g4, произносится «джант») — это система библиотек для компьютерного | ||
+ | моделирования процессов прохождения элементарных частиц через | ||
+ | вещество, на основе совокупности подходов, вместе называемых «метод | ||
+ | Монте-Карло». GEANT — самая популярный инструмент такого типа. Он | ||
+ | разрабатывается международной коллаборацией с центром в CERN. Наибольший вжлад в разработку внесли ученые из Англии, Италии, Канады, России, США, Франции и Японии. | ||
- | [[Image:0372.JPG | right | Vintage TV set]] | + | Перед GEANT4 был GEANT3, выполнявший те же самые задачи, но |
- | По названию может сложиться неверное впечатление, что это четвертая версия некоего продукта. В реальности это результат полной переработки существовавшего до него GEANT3, написанного на [[Wikipedia:Fortran | Фортране]] и имевшего ограниченную функциональность и расширяемость. В настоящее время разработка GEANT3 прекращена, только иногда исправляются ошибки. Первая версия GEANT3 появилась в 1974 году в ЦЕРНе, | + | сделанный на Фортране. На сегодняшний день он используется довольно |
- | описание физических процессов основано на программах EGS (э/м ливни) и GHEISHA | + | часто, как и другое фортрановское ПО, так уж исторически сложилось, |
- | (адронные ливни). Пакет GEANT3 появился в 1982 году и был использован для моделирования детекторов в экспериментах на LEP (CERN). | + | но большинство современных экспериментов постепенно переходят на |
- | <!--Первая версия GEANT4 появилась не в 1998, а в1995 г. - Lupus--> | + | 4-й. В целом в последнее время GEANT4 считается достаточно надежным |
- | Разработка GEANT4 началась в 1994 году и в 1995 вышла первая версия. Нумерация версий GEANT4 трехуровневая: | + | и корректным для широкого применения. Первое «боевое» применение |
- | #Сначала идет цифра 4, как символ пакета | + | GEANT4 — эксперимент BaBar. C 2004 года GEANT4 — основная программа |
- | #Далее главный номер релиза (major number, на текущий момент — 7-ая) и номер уровнем ниже, minor number. | + | моделирования в экспериментах на LHC. Впрочем, область применения не |
- | #Затем версия патч-сета, т. е. набора исправлений, не несущих новой функциональности. | + | ограничивается моделированием детекторов, где с помощью GEANT4 |
- | В итоге получается нечто вроде geant4.7.0.p01. | + | ведется проектирование установок, рассчитываются эффективности и |
- | Первое “боевое” применение GEANT4 – эксперимент BaBar. C 2004 года GEANT4 – основная программа моделирования в экспериментах на LHC (CERN) (кроме ALICE). | + | загрузки различных подсистем, производится калибровка и т. д. Как и |
+ | другие пакеты Монте-Карло, GEANT4 используется в области | ||
+ | радиационной защиты, в медицине и в различных других прикладных | ||
+ | областях, связанных с радиационным излучением. | ||
- | ==Общие концепции программирования для GEANT4== | + | Разработка GEANT4 началась в 1994 году с переписывания GEANT3.2.1 на |
- | <!--запостил Lupus, автор - Антон Корнеев, НИИ ЯП, Минск, Беларусь--> | + | [[CPP | Си++]]. При этом кардинально изменились архитектура системы и |
- | Использование объектно-ориентированной технологии программирования позволяет достигнуть прозрачности при создании различных модулей программы моделирования. Например, способ, которым вычисляются сечения взаимодействия, полностью отделен от способа, которым эти сечения используются, что позволяет легко изменить или расширить физическую модель интересующих нас взаимодействий. | + | методы работы с ней, но физическая часть (алгоритмы расчета сечений |
- | Пакет состоит из набора классов, которые можно разделить на следующие категории: | + | и т. п.) практически не изменилась. В дальнейшем серьезные изменения |
- | *глобальный ('''''global''''') – содержит систему единиц, констант, генерацию случайных чисел; | + | претерпели модели адронных процессов, расчет электромагнитных |
- | *материалы и частицы ('''''materials & particles''''') – реализует функции необходимые для описания физических свойств частиц и материалов; | + | взаимодействий в основном соответствует GEANT3, но был заметно улучшен и расширен. |
- | *геометрия ('''''geometry''''') – реализует описание геометрии системы и эффективности распространения частиц через объекты системы; | + | Также добавлена возможность моделирования транспортировки оптических фотонов. |
- | *процессы ('''''processes''''') – содержит модели физических взаимодействий: электромагнитных и адронных; | + | |
- | *треки ('''''track''''') – реализует функции необходимые для вычисления треков частиц, и передачи требуемой информации чувствительным объемам (детекторам); | + | |
- | *события ('''''events''''') – управление событиями (запуском начальной частицы и управление всеми образовавшимися вторичными частицами); | + | |
- | *запуск ('''''run''''') – управление группой событий происходящих при одной и той же конфигурации геометрии системы. | + | |
+ | Нумерация версий GEANT4 трехуровневая: | ||
+ | #cначала идет цифра 4, как символ пакета; | ||
+ | #далее главный номер релиза (major number, на текущий момент 9-ая) и номер уровнем ниже, minor number; | ||
+ | #затем версия патч-сета, т. е. набора исправлений, не несущих новой функциональности; | ||
+ | В итоге получается нечто вроде geant4.7.0.p01. | ||
- | Причем, все классы реализуют заложенную в них базовую функциональность. Это значит что программисту использующему библиотеки GEANT4 необходимо изменять лишь те классы, которые своей начальной функциональностью не соответствуют моделируемой задаче. На практике это значит, что ''всегда нужно изменять классы ответственные за геометрию системы и применяемые материалы, описание используемых частиц и взаимодействий, сбор данных моделирования, но практически никогда не требуется изменять классы, реализующие самый трудоемкий (в плане программирования) процесс – непосредственный процесс пролета частиц и их взаимодействие с веществом''. | + | Работа с GEANT4 сводится к написанию программ на С++, связывающих |
- | + | его компоненты между собой определенным образом, моделирующим | |
- | + | некоторую реальную систему. При этом в GEANT заносится трехмерная | |
- | Работа программы написанной с использованием библиотек GEANT4 проходит следующим образом: | + | модель системы, характеристики материалов, из которых она состоит, |
- | + | описываются электромагнитные поля. Также подключаются различные | |
- | + | пакеты физических процессов, такие, как тормозное излучение и | |
- | *конструируется геометрия системы, вычисляются сечения взаимодействия всех используемых частиц со всеми используемыми материалами; | + | ионизация. В процессе работы GEANT4 рассчитывает траектории |
- | *затем происходит запуск требуемого числа частиц; | + | прохождения различных элементарных частиц в заданной системе. Пользователь |
- | *далее идет последовательная обработка движения каждой из частиц – создание трека. При этом движение частицы разбивается на малые шаги; | + | должен обеспечить сохранение данных в удобном уму формате. |
- | **на каждом шаге движения по рассчитанной ранее таблице сечений происходит выбор одного из заданных процессов взаимодействия и его реализация, движение идет до полной потери частицей кинетической энергии; | + | |
- | **если в процессе взаимодействия образуется вторичная частица, то далее идет создание ее трека по тем же самым принципам, а затем возврат к первичной частице. | + | |
- | + | ||
- | + | ||
- | Моделирование идет до тех пор, пока не будут обработаны все частицы. На каждом из основных этапов может быть вызвана заданная программистом функция, при этом ей доступна полная информация о состоянии частицы: ее координаты, импульс, потери энергии на последнем шаге и многое другое. Эту информацию и нужно использовать для построения исследуемых зависимостей. | + | |
- | + | ||
- | Основные используемые классы изображены на рисунке ниже. | + | |
- | + | ||
- | [[Image:Geant4_classes.jpg|Чертеж]] | + | |
- | + | ||
- | <!--Картинку можно скачать с www.soft.belastro.net/files/visual/Geant4_classes.jpg. Как её вставить сюда я не понял --> | + | |
- | + | ||
- | Класс '''''RunManager''''' отвечает за общую организацию процесса моделирования. | + | |
- | + | ||
- | Класс '''''DetectorConstruction''''' используется для описания геометрии системы и используемых материалов. | + | |
- | + | ||
- | С помощью класса '''''PhysicsList''''' указывают используемые частицы и взаимодействия между ними. | + | |
- | + | ||
- | Группа классов обозначенная названием '''''UserActions''''' используется для доступа к информации о процессе моделирования на всех этапах: | + | |
- | + | ||
- | *'''''RunAction''''' – этап создания геометрии системы, используемых частиц и расчета таблицы сечений; | + | |
- | *'''''PrimaryGenerationAction''''' – этап создания первичной частицы, именно здесь задается тип, начальные направление и энергия частицы; | + | |
- | *'''''EventAction''''' – этап запуска/остановки первичной частицы, обычно используется для инициализации/сохранения гистограмм и первичного анализа; | + | |
- | *'''''TrackingAction''''' – этап начала/конца создания трека частицы, позволяет получить информацию о треке частицы, например длину; | + | |
- | *'''''SteppingAction''''' – самый низший уровень в иерархии, позволяет обрабатывать информацию о каждом шаге движения частицы. | + | |
- | + | ||
- | Как сказано выше, библиотека GEANT4 написана с использованием объектно-ориентированной программирования. Таким образом она представляет собой набор классов. Изначально в предоставляемые классы заложена некоторая базовая функциональность. И для того чтобы реализовать с помощью классов GEANT4 собственную систему необходимо унаследовать от необходимых базовых классов свои собственные – пользовательские, и наполнить их необходимой функциональностью. | + | |
- | Общее количество классов в библиотеке порядка 700, но это вовсе не значит что каждый раз нужно наследовать и переопределять их все. | + | |
- | Например, вовсе не требуется переопределять класс, отвечающий за движение частиц – ведь в любых физических системах движение частиц подчиняется одним и тем же законам (и эти законы изначально заложены в этот класс разработчиками GEANT4). В то же время, нам всегда нужно будет переопределять класс, отвечающий за создание геометрии моделируемой системы. | + | |
- | Таким образом, из всего многообразия классов, обычно необходимо переопределить лишь их небольшое количество – обычно не более 7‑8. Поэтому такая организация пакета GEANT4 – а именно, использование ООП – весьма облегчает жизнь программисту, его применяющего. | + | |
- | + | ||
- | Обязательными для наследования являются 3 класса: | + | |
- | + | ||
- | *'''''G4VUserDetectorConstruction''''': в этом классе задается геометрия системы и используемые материалы; | + | |
- | *'''''G4VUserPhysicsList''''': в этом – используемые частицы, и взаимодействия в которых они участвуют; | + | |
- | *'''''G4VUserPrimaryGeneratorAction''''': в этом классе создаются первичные частицы – задается их тип, направление движения, энергия и т.д. | + | |
- | + | ||
- | Также, обычно переопределяют так называемые '''''UserAction-классы''''' – это позволяет выполнять необходимые действия на некоторых этапах моделирования: | + | |
- | *'''''G4UserRunAction''''': позволяет задать действия в начале/конце run-a. Обычно используют для того, чтобы открыть/закрыть файлы в которые будут сохраняться результаты моделирования; | + | |
- | *'''''G4UserEventAction''''': позволяет задать действия в начале/конце event-а. Обычно используется для инициализации/сохранения гистограмм и первичного анализа; | + | |
- | *'''''G4UserStackingAction''''': позволяет задать действия в момент появления вторичных частиц; | + | |
- | *'''''G4UserTrackingAction''''': позволяет задать действия при начале/завершении движения частицы. Используют, например, для получения такой информации, как длинна трека частицы; | + | |
- | *'''''G4UserSteppingAction''''': позволяет задать действия выполняемые на каждом шаге движения частиц. | + | |
- | + | ||
- | Пару слов о терминологии. Весь процесс моделирования делится на '''''events (события)'''''. Каждое событие заключается в испускании первичных частиц и их дальнейшего движения через геометрию системы вплоть до полной остановки этих частиц (и всех образовавшихся вторичных тоже). Процесс движения каждой конкретной частицы от ее появления до остановки называется '''''track'''''. Совокупность событий при неизменной геометрии установки называют '''''run (запуск)'''''. Например, если в моделируемой системе есть радиоактивный источник, то каждое испускание проникающей частицы будет событием, а их совокупность (т.е. испускание, скажем, 1 000 000 частиц) – запуском. | + | |
- | + | ||
- | Посмотрите на приведенный ниже листинг программы моделирования. | + | |
- | <tt> | + | |
- | #include "G4RunManager.hh" | + | |
- | #include "DetectorConstruction.hh" | + | |
- | #include "PhysicsList.hh" | + | |
- | #include "PrimaryGeneratorAction.hh" | + | |
- | #include "EventAction.hh" | + | |
- | #include "RunAction.hh" | + | |
- | #include "SteppingAction.hh" | + | |
- | int main() | + | |
- | { | + | |
- | // (1) | + | |
- | G4RunManager* runManager = new G4RunManager; | + | |
- | // (2) | + | |
- | runManager->SetUserInitialization(new DetectorConstruction); | + | |
- | runManager->SetUserInitialization(new PhysicsList); | + | |
- | runManager->SetUserAction(new PrimaryGeneratorAction); | + | |
- | // (3) | + | |
- | runManager->SetUserAction(new RunAction); | + | |
- | runManager->SetUserAction(new EventAction); | + | |
- | runManager->SetUserAction(new SteppingAction); | + | |
- | // (4) | + | |
- | runManager->Initialize(); | + | |
- | // (5) | + | |
- | runManager->BeamOn(10); | + | |
- | // (6) | + | |
- | delete runManager; | + | |
- | return 0; | + | |
- | } | + | |
- | </tt> | + | |
- | + | ||
- | + | ||
- | Приведенный листинг является главной частью программы, но не единственной. Вообще говоря, он составляет весьма малую долю от всего программного кода. Что же в нем выполняется? | + | |
- | + | ||
- | *(1) Создается экземпляр (<tt>new G4RunManager</tt>) класса, выполняющего функции общего контроля и управления процессом моделирования. Методы этого класса позволяют, например, подключать класс ответственный за геометрию системы, производить непосредственный запуск моделирования. | + | |
- | *(2) Создаются экземпляры обязательных для наследования (переопределения ) классов: | + | |
- | <tt>new DetectorConstruction (геометрия), | + | |
- | new PhysicsList (физические процессы и частицы), | + | |
- | new PrimaryGeneratorAction (первичные частицы). | + | |
- | </tt> | + | |
- | *(3) Создаются экземпляры некоторых '''''UserAction-классов''''' – необходимы для сбора и сохранения данных о ходе процесса моделирования. | + | |
- | Как видно, все экземпляры классов, созданных в пунктах 2-3, подключаются к главному (управляющему) классу. Таким образом он “знает” о всех аспектах моделируемой системы. | + | |
- | *(4) Начальная инициализация процесса моделирования. При этом выполняется, например, построение таблиц сечений. | + | |
- | *(5) Все предварительные действия выполнены – можно начинать моделирование. Метод '''''BeamOn()''''' вызывает генерацию 10 событий. | + | |
- | *(6) Освобождается занимаемая память и происходит выход из программы. | + | |
- | + | ||
- | ==Что он может== | + | |
- | + | ||
- | Работа с GEANT4 сводится к написанию программ на Си++, связывающих компоненты geant между собой определенным образом, моделирующим некоторую реальную систему. GEANT затем запускает свой движок Монте-Карло, и прогоняет элементарные частицы через вашу систему. | + | |
- | + | ||
- | ====Описание геометрии==== | + | |
- | + | ||
- | Geant4 позволяет на очень детальном уровне описывать геометрические характеристики экспериментальной системы. В ядре GEANT4 находится совместимый с CAD-системами (он соответствует стандарту ISO STEP) 3D твердотельный симулятор, которым можно управлять как программно, так и скармливая ему файлы с описанием сцены. В это описание входит задание простейших тел, из которых состоят сложные объекты и сопоставление им конкретных материалов. Материалы также можно описывать произвольно. | + | |
- | + | ||
- | ====Физические процессы==== | + | |
- | Реальные физические процессы, участвующие в «опыте» можно выбирать по одному или целыми предустановленными пакетами. Например, все электромагнитные процессы для средних энергий. Для многих из них существует несколько программных реализаций — например, сечения берутся из аналитических расчетов, или из баз данных, или для разных областей энергии. | + | Также GEANT поддерживает большое количество различных способов |
+ | визуализации своей работы. | ||
- | ====Визуализация==== | + | Существует достаточно много программых оболочек (GATE, GRAS,...) которые обеспечивают удобный интерфейс между пользователями конкретной области применений и GEANT4. Такие оболочки существенно облегчают работу и как правило не требуют програмирования на С++. |
- | GEANT4 поддерживает большое количество различных способов визуализации своей работы: от OpenGL вывода 3D-картинки во время расчета, до создания postscript'а с чертежом установки. | ||
==Ссылки== | ==Ссылки== |
Current revision
Что такое GEANT
GEANT4 (сокращенно g4, произносится «джант») — это система библиотек для компьютерного моделирования процессов прохождения элементарных частиц через вещество, на основе совокупности подходов, вместе называемых «метод Монте-Карло». GEANT — самая популярный инструмент такого типа. Он разрабатывается международной коллаборацией с центром в CERN. Наибольший вжлад в разработку внесли ученые из Англии, Италии, Канады, России, США, Франции и Японии.
Перед GEANT4 был GEANT3, выполнявший те же самые задачи, но сделанный на Фортране. На сегодняшний день он используется довольно часто, как и другое фортрановское ПО, так уж исторически сложилось, но большинство современных экспериментов постепенно переходят на 4-й. В целом в последнее время GEANT4 считается достаточно надежным и корректным для широкого применения. Первое «боевое» применение GEANT4 — эксперимент BaBar. C 2004 года GEANT4 — основная программа моделирования в экспериментах на LHC. Впрочем, область применения не ограничивается моделированием детекторов, где с помощью GEANT4 ведется проектирование установок, рассчитываются эффективности и загрузки различных подсистем, производится калибровка и т. д. Как и другие пакеты Монте-Карло, GEANT4 используется в области радиационной защиты, в медицине и в различных других прикладных областях, связанных с радиационным излучением.
Разработка GEANT4 началась в 1994 году с переписывания GEANT3.2.1 на Си++. При этом кардинально изменились архитектура системы и методы работы с ней, но физическая часть (алгоритмы расчета сечений и т. п.) практически не изменилась. В дальнейшем серьезные изменения претерпели модели адронных процессов, расчет электромагнитных взаимодействий в основном соответствует GEANT3, но был заметно улучшен и расширен. Также добавлена возможность моделирования транспортировки оптических фотонов.
Нумерация версий GEANT4 трехуровневая:
- cначала идет цифра 4, как символ пакета;
- далее главный номер релиза (major number, на текущий момент 9-ая) и номер уровнем ниже, minor number;
- затем версия патч-сета, т. е. набора исправлений, не несущих новой функциональности;
В итоге получается нечто вроде geant4.7.0.p01.
Работа с GEANT4 сводится к написанию программ на С++, связывающих его компоненты между собой определенным образом, моделирующим некоторую реальную систему. При этом в GEANT заносится трехмерная модель системы, характеристики материалов, из которых она состоит, описываются электромагнитные поля. Также подключаются различные пакеты физических процессов, такие, как тормозное излучение и ионизация. В процессе работы GEANT4 рассчитывает траектории прохождения различных элементарных частиц в заданной системе. Пользователь должен обеспечить сохранение данных в удобном уму формате.
Также GEANT поддерживает большое количество различных способов визуализации своей работы.
Существует достаточно много программых оболочек (GATE, GRAS,...) которые обеспечивают удобный интерфейс между пользователями конкретной области применений и GEANT4. Такие оболочки существенно облегчают работу и как правило не требуют програмирования на С++.
Ссылки
- Домашняя страничка GEANT3 (http://wwwasd.web.cern.ch/wwwasd/geant/)
- Сайт GEANT4 (http://geant4.web.cern.ch/geant4/)