Главная страница
Навигация по странице:

  • Цель работы

  • 1.Теоретические положения 1.1. Описание экспериментальной установки

  • Методические указания к выполнению лабораторной работы Микроскопический метод расчёта прохождения ионизирующих излучений через вещество (метод МонтеКарло, библиотека программ geant 4 )


    Скачать 266 Kb.
    НазваниеМетодические указания к выполнению лабораторной работы Микроскопический метод расчёта прохождения ионизирующих излучений через вещество (метод МонтеКарло, библиотека программ geant 4 )
    Анкорlab4.doc
    Дата29.08.2018
    Размер266 Kb.
    Формат файлаdoc
    Имя файлаlab4.doc
    ТипМетодические указания
    #23757
    страница1 из 4
      1   2   3   4

    Министерство образования и науки Российской Федерации

    Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

    «Юго-западный государственный университет»

    Кафедра КиТ ЭВС


    Методические указания к выполнению лабораторной работы «Микроскопический метод расчёта прохождения ионизирующих излучений через вещество (метод Монте-Карло, библиотека программ GEANT4

    Курск 2012

    Цель работы:

    - получить навыки расчёта прохождения ионизирующих излучений через вещество с помощью библиотек программ Geant4;

    - научиться задавать геометрию среды, в которой будет происходить моделирование;

    - научиться создавать различные вещества и смеси веществ;

    - научиться получать различного рода зависимости.
    1.Теоретические положения

    1.1. Описание экспериментальной установки

    Упрощенная модель любого ядерно-физического эксперимента состоит из трех компонент:

    1. Источник излучения

    2. Объект исследования (образец)

    3. Детектор излучения

    В этой лабораторной работе мы проведем моделирование такой упрощенной системы и познакомимся с каждым шагом создания программы моделирования.



    Рисунок 1. Геометрия экспериментальной системы

    1.3. Описание проекта Geant4

    1.3.1 Описание файла проекта Example_lab.сс

    Программа моделирования состоит из следующих компонент (классов):

    • PhysicsList: содержит список используемых частиц (гамма-кванты, электроны, позитроны) и процессов в которых они могут участвовать (фотоэффект, комптоновское рассеяние, образование электрон-позитронных пар для гамма; рассеяние, ионизация, тормозное излучение, аннигиляция для электронов/позитронов).

    • DetectorConstruction: содержит описание используемых материалов, геометрии системы, детектора, настройки визуализации.

    • PrimaryGenerationAction: в этом классе описывается источник частиц, в нашем случае это точечный источник нейтронов.

    • SensitiveDetector: методы этого класса вызываются при прохождении частиц через детектор и в нашем случае этот класс служит для подсчета количества энергии оставленной частицами в детекторе.

    Определение каждого класса помещается в соответствующий отдельный файл, а в главном файле проекта Example_lab.cc происходит сведение всего воедино и регистрация классов в G4RunManager.

    Файл начинается с подключений заголовочных файлов. В Си++ объявления классов (то есть описание их полей, функций и констант) обычно размещаются в специальных заголовочных файлах с расширением .h или .hh, которые затем подключаются в файлы .cc директивой #include.

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    В списке подключаемых файлов сначала перечислены системные, входящие в состав GEANT4 и компилятора, а затем заголовочные файлы текущего проекта. Они отличаются способом задания имени: не в угловых скобках <>, а в кавычках. Эти файлы должны быть размещены в папке include.

    #include "DetectorConstruction.hh"

    #include "PrimaryGeneratorAction.hh"

    #include "EventAction.hh"

    #include "SteppingAction.hh"

    #include "SteppingVerbose.hh"

    #include "PhysicsList.hh"

    using namespace std;
    const char macros[]="vis.mac";

    Далее следует определение класса RunAction, который наследуется от класса G4UserRunAction и содержит функцию BeginOfRunAction, которая автоматически вызывается в начале каждого запуска. Здесь она просто выводит на экран порядковый номер запуска (0, 1 и т. д.). Для простоты определение этого класса не вынесено в отдельные файлы, а целиком приведено в Example_lab.cc.

    class RunAction: public G4UserRunAction

    {

    public:

    void BeginOfRunAction(const G4Run* aRun)

    {

    G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;

    }

    };

    Далее следует определение функции main(). В Си++ main() является основной функцией программы, с которой начинается ее выполнение. Здесь происходит инициализация GEANT4 и все остальные вспомогательные действия, о которых говорилось выше.

    int main(int argc,char** argv)

    {

    Установка экземпляра класса SteppingVerbose, который отвечает за печать подробной информации о каждом шаге частиц в процессе моделирования. Степень детализации выводимой информации зависит от числового параметра /stepping/verbose в файле vis.mac, 0 соответствует минимально подробной, а 9 максимально подробной информации о каждом шаге. Класс SteppingVerbose определен в файлах SteppingVerbose.hh и SteppingVerbose.cc. Оператор new создает объект — экземпляр этого класса и возвращает указатель на созданный объект.

    G4VSteppingVerbose::SetInstance(new SteppingVerbose);

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

    CLHEP::HepRandom::setTheSeed(time(0)+getpid());

    Далее создается объект G4RunManager, который управляет запуском и остановкой моделирования.

    G4RunManager * runManager = new G4RunManager;

    Создается объект DetectorConstruction (см. класс DetectorConstrucion в файле DetectorConstruction.hh) и регистрируется в G4RunManager.

    DetectorConstruction* detector_c = new DetectorConstruction;

    runManager->SetUserInitialization(detector_c);

    Так же создается и регистрируется в G4RunManager пакет физических процессов PhysicsList.

    G4VUserPhysicsList *p = new PhysicsList;

    runManager->SetUserInitialization(p);

    Также можно использовать стандартные пакеты физических процессов. О них будет рассказано ниже.

    runManager->SetUserInitialization(new QGSP_BIC_HP);

    Далее создается и инициализируется объект класса G4VisExecutive, который позволяет различными способами визуализировать моделирование.

    G4VisManager* visManager = new G4VisExecutive;

    visManager->Initialize();

    runManager->SetUserAction(new PrimaryGeneratorAction);

    runManager->SetUserAction(new RunAction);

    runManager->SetUserAction(new EventAction);

    runManager->SetUserAction(new SteppingAction);

    В конце концов вызывается метод G4RunManager::Initialize() и процесс инициализации GEANT4 завершается.

    runManager->Initialize();

    Печать информации о зарегистрированных материалах.

    cout<<"===============================================================";

    cout<
    cout<< *(G4Material::GetMaterialTable()) << endl;

    cout<<"===============================================================";

    cout<

    Наконец, через объект класса G4UImanager производится выполнение макрокоманд из файла vis.mac (на него указывает определенная выше переменная macros). Это удобно, потому что при изменении vis.mac не нужно перекомпилировать всю программу. В vis.mac находятся команды, непосредственно запускающие моделирование.

    G4UImanager * UI = G4UImanager::GetUIpointer();

    G4UIsession * session = new G4UIterminal();

    UI->ExecuteMacroFile(macros);

    Моделирование закончено. Освобождается память и программа завершается.

    delete session;

    delete visManager;

    delete runManager;

    return 0;

    }



      1   2   3   4


    написать администратору сайта