
- •1.Теоретические положения
- •1.1. Описание экспериментальной установки
- •1.3. Описание проекта Geant4
- •1.3.1 Описание файла проекта Example_lab.Сс
- •1.3 Класс DetectorConstruction
- •Объявление класса DetectorConstruction, наследуемого от g4vUserDetectorConstruction.
- •1.4 Класс SenstiveDetector
- •1.5 Класс PhysicsList
- •1.6 Класс PrimaryGeneratorAction
- •Задания
- •3. Контрольные вопросы
- •4. Содержание отчета
- •Приложение Материалы доступные в Geant4
- •1.Простые материалы
- •2. Nist (National Institute Standarts and Technology) соединения
- •10.3. Hep материалы
1.5 Класс PhysicsList
В GEANT4 все используемые в моделировании физические процессы должны быть заранее подключены. Делается это в классе PhysicsList, то есть пакет физики. В нем должны создаваться определения всех частиц и для каждой частицы должны выбираться процессы, которые с ней могут происходить. Но так как создание такого пакета вручную довольно сложное дело, где надо учесть массу деталей, обычно используются готовые пакеты. Основное преимущество их использования – это удобство(необходимо писать и поддерживать меньше кода), также эти списки частиц/процессов прошли проверку временем и позволяют получать похожие на правду результаты. Однако, не во всех случаях они применимы, так как не всегда позволяют достигнуть требуемую точность (остро эта проблема стоит для адронной физики, где еще нет устоявшихся моделей (идет их постоянная разработка)), или скорость вычислений.
Geant4 содержит следующие списки:
•LHEP – Low and High Energy Parameterized, это самая быстрая адронная модель, основанная на параметризации некоторых экспериментальных сечений. Включает стандартные электромагнитные процессы; адронные процессы основаны на эмпирических моделях, построенных с помощью параметризации имеющихся экспериментальных данных. Наиболее “быстрый” и проверенный (но не для точных вычислений) список. С него разработчики рекомендуют начинать, и он используется в сегодняшней лабораторной работе.
•QGSP – Quark Gluon String, включает стандартные электромагнитные процессы; для адронных процессов больших энергий(> 20 ГэВ) используется кварк-глюонная струнная модель, для меньших– параметризованные модели(как в LHEP). Так же добавленны гамма-ядерные процессы для энергий< 3.5 ГэВ.
•LBE – стандартные электромагнитные процессы для позитронов, низкоэнергетичные электромагнитные процессы для электронов, ионов и адронов; оптические процессы; радиоактивный распад.
1.6 Класс PrimaryGeneratorAction
PrimaryGeneratorAction отвечает за создание первичной частицы, с которой начинается процесс моделирования события. Первичной частицей может быть электрон из ускорителя, фотон, излученный из радиоактивного источника, или вообще любая другая частица.
PrimaryGeneratorAction.hh
-
#ifndef PrimaryGeneratorAction_h
#define PrimaryGeneratorAction_h 1
#include <G4VUserPrimaryGeneratorAction.hh>
class G4ParticleGun;
class G4Event;
Класс PrimaryGeneratorAction должен наследоваться от G4VUserPrimaryGeneratorAction.
-
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
~PrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event*);
private:
Задается объект G4ParticleGun, который позволяет ставить частицу в любой точке.
-
G4ParticleGun* particleGun;
};
#endif
PrimaryGeneratorAction.сс
-
#include "PrimaryGeneratorAction.hh"
#include<G4Event.hh>
#include<G4ParticleGun.hh>
#include<G4ParticleTable.hh>
#include<G4ParticleDefinition.hh>
#include<globals.hh>
Конструктор класса. Здесь удобно создать G4ParticleGun и настроить его на определенный тип частиц. В данном случае это электроны с энергией 5 МэВ, а точка старта -100 см по оси Z. Кроме того задается направление импульса вдоль Z, а сам импульс вычисляется автоматически.
-
PrimaryGeneratorAction::PrimaryGeneratorAction()
{
G4int n_particle = 1;
particleGun = new G4ParticleGun(n_particle);
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* particle = particleTable->FindParticle("neutron");
particleGun->SetParticleEnergy(5*MeV);
particleGun->SetParticleDefinition(particle);
particleGun->SetParticlePosition(G4ThreeVector(0, 0, -100*cm));
}
В деструкторе G4ParticleGun удаляется.
-
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete particleGun;
}
GeneratePrimaries — это основная функция класса PrimaryGeneratorAction. Она вызывается в начале каждого события, чтобы сгенерировать первичные частицы, с которых начинается моделирование. Параметры частиц были раз и навсегда заданы в конструкторе, а здесь производится запуск ParticleGun.
-
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
double E;
particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
particleGun->GeneratePrimaryVertex(anEvent);
}