GEANT4

Revision as of 14:44, 9 Oct 2007
Lupus (Talk | contribs)
Общие концепции программирования для GEANT4
← Go to previous diff
Revision as of 14:47, 9 Oct 2007
Lupus (Talk | contribs)
Общие концепции программирования для GEANT4
Go to next diff →
Line 44: Line 44:
Класс '''''RunManager''''' отвечает за общую организацию процесса моделирования. Класс '''''RunManager''''' отвечает за общую организацию процесса моделирования.
 +
Класс '''''DetectorConstruction''''' используется для описания геометрии системы и используемых материалов. Класс '''''DetectorConstruction''''' используется для описания геометрии системы и используемых материалов.
 +
С помощью класса '''''PhysicsList''''' указывают используемые частицы и взаимодействия между ними. С помощью класса '''''PhysicsList''''' указывают используемые частицы и взаимодействия между ними.
 +
Группа классов обозначенная названием '''''UserActions''''' используется для доступа к информации о процессе моделирования на всех этапах: Группа классов обозначенная названием '''''UserActions''''' используется для доступа к информации о процессе моделирования на всех этапах:

Revision as of 14:47, 9 Oct 2007

Содержание

Что же такое GEANT4

GEANT4 (сокращенно g4, произносится «джант») — это система библиотек для симуляции прохождения элементарных частиц через вещество. Ее язык — Си++, ее авторы — международная коллаборация при ЦЕРНе. В основном это итальянцы и японцы. Ну и швейцарцы.

По названию может сложиться неверное впечатление, что это четвертая версия некоего продукта. В реальности это результат полной переработки существовавшего до него GEANT3, написанного на Фортране и имевшего ограниченную функциональность и расширяемость. В настоящее время разработка GEANT3 прекращена, только иногда исправляются ошибки.

Разработка GEANT4 началась в 1994 году и в 1998 вышла первая версия. Нумерация версий GEANT4 трехуровневая:

  1. Сначала идет цифра 4, как символ пакета
  2. Далее главный номер релиза (major number, на текущий момент — 7-ая) и номер уровнем ниже, minor number.
  3. Затем версия патч-сета, т. е. набора исправлений, не несущих новой функциональности.

В итоге получается нечто вроде geant4.7.0.p01

Общие концепции программирования для GEANT4

Использование объектно-ориентированной технологии программирования позволяет достигнуть прозрачности при создании различных модулей программы моделирования. Например, способ, которым вычисляются сечения взаимодействия, полностью отделен от способа, которым эти сечения используются, что позволяет легко изменить или расширить физическую модель интересующих нас взаимодействий. Пакет состоит из набора классов, которые можно разделить на следующие категории:

  • глобальный (global) – содержит систему единиц, констант, генерацию случайных чисел;
  • материалы и частицы (materials & particles) – реализует функции необходимые для описания физических свойств частиц и материалов;
  • геометрия (geometry) – реализует описание геометрии системы и эффективности распространения частиц через объекты системы;
  • процессы (processes) – содержит модели физических взаимодействий: электромагнитных и адронных;
  • треки (track) – реализует функции необходимые для вычисления треков частиц, и передачи требуемой информации чувствительным объемам (детекторам);
  • события (events) – управление событиями (запуском начальной частицы и управление всеми образовавшимися вторичными частицами);
  • запуск (run) – управление группой событий происходящих при одной и той же конфигурации геометрии системы.


Причем, все классы реализуют заложенную в них базовую функциональность. Это значит что программисту использующему библиотеки GEANT4 необходимо изменять лишь те классы, которые своей начальной функциональностью не соответствуют моделируемой задаче. На практике это значит, что всегда нужно изменять классы ответственные за геометрию системы и применяемые материалы, описание используемых частиц и взаимодействий, сбор данных моделирования, но практически никогда не требуется изменять классы, реализующие самый трудоемкий (в плане программирования) процесс – непосредственный процесс пролета частиц и их взаимодействие с веществом.


Работа программы написанной с использованием библиотек GEANT4 проходит следующим образом:


  • конструируется геометрия системы, вычисляются сечения взаимодействия всех используемых частиц со всеми используемыми материалами;
  • затем происходит запуск требуемого числа частиц;
  • далее идет последовательная обработка движения каждой из частиц – создание трека. При этом движение частицы разбивается на малые шаги;
    • на каждом шаге движения по рассчитанной ранее таблице сечений происходит выбор одного из заданных процессов взаимодействия и его реализация, движение идет до полной потери частицей кинетической энергии;
    • если в процессе взаимодействия образуется вторичная частица, то далее идет создание ее трека по тем же самым принципам, а затем возврат к первичной частице.


Моделирование идет до тех пор, пока не будут обработаны все частицы. На каждом из основных этапов может быть вызвана заданная программистом функция, при этом ей доступна полная информация о состоянии частицы: ее координаты, импульс, потери энергии на последнем шаге и многое другое. Эту информацию и нужно использовать для построения исследуемых зависимостей.

Основные используемые классы изображены на рисунке ниже.

Missing image
Geant4_classes.jpg
Чертеж

Класс RunManager отвечает за общую организацию процесса моделирования.

Класс DetectorConstruction используется для описания геометрии системы и используемых материалов.

С помощью класса PhysicsList указывают используемые частицы и взаимодействия между ними.

Группа классов обозначенная названием UserActions используется для доступа к информации о процессе моделирования на всех этапах:

  • RunAction – этап создания геометрии системы, используемых частиц и расчета таблицы сечений;
  • PrimaryGenerationAction – этап создания первичной частицы, именно здесь задается тип, начальные направление и энергия частицы;
  • EventAction – этап запуска/остановки первичной частицы, обычно используется для инициализации/сохранения гистограмм и первичного анализа;
  • TrackingAction – этап начала/конца создания трека частицы, позволяет получить информацию о треке частицы, например длину;
  • SteppingAction – самый низший уровень в иерархии, позволяет обрабатывать информацию о каждом шаге движения частицы.

Что он может

Работа с GEANT4 сводится к написанию программ на Си++, связывающих компоненты geant между собой определенным образом, моделирующим некоторую реальную систему. GEANT затем запускает свой движок Монте-Карло, и прогоняет элементарные частицы через вашу систему.

Описание геометрии

Geant4 позволяет на очень детальном уровне описывать геометрические характеристики экспериментальной системы. В ядре GEANT4 находится совместимый с CAD-системами (он соответствует стандарту ISO STEP) 3D твердотельный симулятор, которым можно управлять как программно, так и скармливая ему файлы с описанием сцены. В это описание входит задание простейших тел, из которых состоят сложные объекты и сопоставление им конкретных материалов. Материалы также можно описывать произвольно.

Физические процессы

Реальные физические процессы, участвующие в «опыте» можно выбирать по одному или целыми предустановленными пакетами. Например, все электромагнитные процессы для средних энергий. Для многих из них существует несколько программных реализаций — например, сечения берутся из аналитических расчетов, или из баз данных, или для разных областей энергии.

Визуализация

GEANT4 поддерживает большое количество различных способов визуализации своей работы: от OpenGL вывода 3D-картинки во время расчета, до создания postscript'а с чертежом установки.

Ссылки

  1. Домашняя страничка GEANT3 (http://wwwasd.web.cern.ch/wwwasd/geant/)
  2. Сайт GEANT4 (http://cern.ch/geant4)
Edit page