#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);
}
|