Содержание |
Использование стандартных пакетов физики в GEANT4
Зачем?
В третьем, фортрановском, geant (http://wwwasd.web.cern.ch/wwwasd/geant/)'е никогда не возникало необходимости детально подстраивать работу неэлектромагнитных процессов. Да и вообще практически не нужно было менять внутренние параметры физики, поскольку основной задачей пакета было корректно моделировать распространение частиц в веществе — оно обусловлено, в основном, электромагнитным взаимодействием. Конечно, существовал еще пакет адронной физики GHEISHA, но и он был не особенно сложен в использовании.
В GEANT4 все изменилось существенным образом. Система теперь должна с максимальной точностью описывать по возможности все явления, происходящие в реальных детекторах, а это значит, что к простым электромагнитным моделям добавили еще множество разных других: оптические, адронные, возможно, еще какие-нибудь, о которых я даже не слышал. Более того, почти для каждого отдельного физического явления, сегодня существует несколько расчетных моделей (здесь под словом «модель» прежде всего понимается класс на [[Си++]], входящий в состав G4, численно описывающий тем или иным образом некоторое явление), и для корректной симуляции реальной установки необходимо попробовать их все, с тем чтобы понять, какая больше подходит в данном конкретном случае.
Но и это еще не все. Многие модели просто несовместимы друг с другом на программном уровне, а некоторые из них совсем никак не документированы. Например, для стандартной задачи GEANT4, моделирования прохождения частиц не очень большой энергии (порядка МэВов) через вещество, существует как минимум четыре разных набора процессов:
- стандартный, включающий G4eIonisation и т. п.;
- набор процессов LowEnergy, использующий базу данных экспериментальных сечений, куда входят такие процессы, как G4LowEnergyeIonisation;
- стандартные процессы из версий 5.2 и 7.1
Однако для этих вещей в документации четко сказано, когда их должны применять, и проблем с их применением, на моей памяти, не возникало.
Дело обстоит гораздо хуже с адронными процессами. На картинке показана лишь часть из имеющихся моделей и их рабочая область энергии. Набор моделей так широк, что запутаться в них проще простого, плюс каждая имеет какой-нибудь параметр, который неизвестно из каких-соображений устанавливать. Например модель G4LElastic имеет параметры MinEnergy и MaxEnergy, и черт его разберет, во что их устанавливать. Плюс ко всему, количество процессов и частиц, которые необходимо зарегистрировать для корректного описания жизни, совершенно сумасшедшее. В общем, подводя черту, можно резюмировать: руками описывать адронную физику чревато. Ошибками, усталостью, головной болью и т. п.
Как?
Проблемы обозначены, поговорим о решении. Оно существует и, притом, удивительно простое и удобное. В папке G4INSTALL вы найдете директорию physics_lists, а в ней — еще две: electromagnetic и hadronic. Это и есть то, что нам необходимо, уже включенное в состав GEANT4, начиная с версии 7. Electromagnetic — это разнообразные пакеты электомагнитных процессов, они не так интересны, а вот hadronic… О, там больше десятка различных наборов физики для самых разных применений. А как применять, о том я расскажу. Но сначала, коротко, о представленном разнообразии моделей.
Все пакеты в наборе hadronic снабжены именами. Это в общем-то не оригинально. Выгодно отличает их на фоне всеобщей серости тот факт, что в имени каждого закодирована его суть. Вот как ее расшифровать:
- LHEP: Low and High Energy Parameterized, это самая быстрая адронная модель, основанная на параметризации некоторых экспериментальных сечений;
- QGSP: Quark Gluon String, эта модель немного медленнее, но и результат значительно точнее
- FTFP: как расшифровывается, не знаю, но F точно отвечает за Fragmentation. Это как-то связвано со следующим заклинанием вуду: diffractive string excitation. Что это такое, я не знаю. Утверждается, что результат получается похожим на QGSP.
Плюс к этому в названии пакета обычно имеется еще несколько приставок.
- BIC и BERT — это соответственно Binary Cascade и Bertini Cascade. Первый лучше, но значительно медленнее.
- HP означает использование базы данных по прохождению нейтронов в веществе. Ее необходимо скачать отдельно с сайта G4.
- Что такое PRECO, LBE, EMV и LEAD для меня так и осталось полнейшей загадкой.
Как выбрать, глаза разбегаются
При таком разнообразии, как выбрать нужный, единственный и неповторимый, пакет, лучше всего нам подходящий? А очень просто. Скажем, необходимо нам промоделировать рождение всяческих разнообразных частиц в водородной мишени при попадании в нее пучка электронов с энергией, скажем, 12 ГэВ. Не теряя времени на бабские причитания, мы идем на этот (http://geant4.web.cern.ch/geant4/physics_lists/), очень полезный сайт, который Ханс-Петер Веллих (J. P. Wellisch) для нас специально сделал. Там, в табличке, видим, что наша задачка отлично подходит под категорию «Medium Energy Production Targets», идем по ссылке, и выясняется, что для счастья ничего нам не надо, а только подавай пакет QGSP.
Ну а как его подключить?
Да проще простого. Предположим, вы выбрали, как и я, пакет QGSP и желаете теперь использовать его в своей революционной высоконаучной работе. Для этого вам надо просто подключить его, как вы раньше подключали свой PhysicsList. В основном файле программы включаете необходимый заголовочный файл
#include <QGSP.hh>
А дальше, в коде, вместо
runManager->SetUserInitialization(new PhysicsList); // было
делаете
runManager->SetUserInitialization(new QGSP); // стало
А потом добавляете еще вот в мейкфайл:
CPPFLAGS+=-I$(G4INSTALL)/physics_lists/hadronic/QGSP/include \ -I$(G4INSTALL)/physics_lists/hadronic/Packaging/include EXTRALIBS+=-L$(G4INSTALL)/lib/plists/Linux-g++/ -lQGSP -lPackaging
И все! Вуаля, получаете безо всяких усилий оттестированный и отлаженный пакет адронной физики. В него при этом включены еще и электромагнитные процессы.
Еще можно задавать каты. В vis.mac добавляете строчку
/run/setCuts 10 mm
и все у вас работает с катами 10 мм.
Естественно все, здесь описанное, удивительным образом работает не только с QGSP, а и с любым из пакетов, только не забудьте поменять его имя в коде.
И последнее
Если линкер вопит об ошибках, зайдите в папку $G4INSTALL/source/physics_lists и наберите команду make.
Еще ссылки по теме
- Очень полезная и поучительная презентация (http://vserv.sinp.msu.ru/w/images/static/LCG4Physics.ppt)
- Еще одна (http://vserv.sinp.msu.ru/w/images/static/tutorial.had.g4.ppt)
- И еще (http://vserv.sinp.msu.ru/w/images/static/wellisch_3.pdf)
Но первая, конечно, вне конкуренции.