Geant4入门指导与安装 联系客服

发布时间 : 星期二 文章Geant4入门指导与安装更新完毕开始阅读

内部资料 Geant4安装和入门 //////////////////////////////////////////////////////////////////////////////////// ii) 调用物理过程

以ConstructProcess()方式为G4Geantino类调用输运物理过程如下: //////////////////////////////////////////////////////////////////////////////////// void ExN01PhysicsList::ConstructProcess() {

// Define transportation process AddTransportation(); }

//////////////////////////////////////////////////////////////////////////////////// 为gamma射线添加物理过程如下:

//////////////////////////////////////////////////////////////////////////////////// void MyPhysicsList::ConstructProcess() {

// Define transportation process AddTransportation(); // electromagnetic process ConstructEM(); }

void MyPhysicsList::ConstructEM() {

// Get the process manager for gamma

G4ParticleDefinition* particle = G4Gamma::GammaDefinition(); G4ProcessManager* pmanager = particle->GetProcessManager();

// Construct process for gamma

G4PhotoElectricEffect * thePhotoElectricEffect = new G4PhotoElectricEffect(); G4ComptonScattering * theComptonScattering = new G4ComptonScattering(); G4GammaConversion * theGammaConversion = new G4GammaConversion();

// Register process to gamma's process manager pmanager->AddDiscreteProcess(thePhotoElectricEffect); pmanager->AddDiscreteProcess(theComptonScattering); pmanager->AddDiscreteProcess(theGammaConversion); }

////////////////////////////////////////////////////////////////////////////////////

7. 产生初始事件

17 Geant4安装和入门 内部资料 1) 初始事件

G4VUserPrimaryGeneratorAcrion可以让用户创建自己的初始事件类. 用户提供初始事件的状态, 如: 出射粒子的种类, 出射能量, 方向等. 如下: //////////////////////////////////////////////////////////////////////////////////// #include \

#include \ #include \ #include \ #include \ #include \

ExN01PrimaryGeneratorAction::ExN01PrimaryGeneratorAction() {

G4int n_particle = 1;//设定每次事件出射粒子的数量 particleGun = new G4ParticleGun(n_particle);

G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); G4String particleName;

particleGun->SetParticleDefinition(particleTable->FindParticle(particleName=\设定出射粒子的种类

particleGun->SetParticleEnergy(1.0*GeV);//设定出射粒子的动能

particleGun->SetParticlePosition(G4ThreeVector(-2.0*m, 0.0, 0.0));//设定出射粒子的出射位置 }

ExN01PrimaryGeneratorAction::~ExN01PrimaryGeneratorAction() {

delete particleGun; }

void ExN01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) {

G4int i = anEvent->GetEventID() % 3; G4ThreeVector v(1.0,0.0,0.0); switch(i) {

18 内部资料 Geant4安装和入门 case 0: break; case 1: v.setY(0.1); break; case 2: v.setZ(0.1); break; }

particleGun->SetParticleMomentumDirection(v);//设定出射粒子的方向 particleGun->GeneratePrimaryVertex(anEvent); }

////////////////////////////////////////////////////////////////////////////////////

2) G4VPrimaryGenerator

Geant4中有两个G4VPrimaryGenerator的独立的类, 一个是G4ParticleGun, 另一个是G4HEPEvtInterface. G4ParicleGun用来给用户确定出射粒子的动能和位置. 方式如下: void SetParticleDefinition(G4ParticleDefinition*) void SetParticleMomentum(G4ParticleMomentum) void SetParticleMomentumDirection(G4ThreeVector) void SetParticleEnergy(G4doule) void SetParticleTime(G4double) void SetParticlePosition(G4ThreeVector) void SetParticlePolarization(G4ThreeVector) void SetNumberOfParticles(G4int)

8. 创建可执行程序

以在$G4INSTALL/examples/novice/N01/目录下的程序代码为例, 使用GNUmake编译该程序代码, 生成可执行程序.

1) Geant4中的GNUmake

Geant4中GNUmake过程主要有以下几个GNUmake 控制(*.gmk在$G4INSTALL/config目录下):

acrchitecture.gmk (调用和定义$G4INSTALL/config/sys目录下所有确定了设置和路径的结构)

common.gmk (为建立obj和lib文件定义GNUmake规则) globlib.gmk (为建立复合的lib文件定义GNUmake规则) binmake.gmk (为建立可执行文件定义GNUmake规则)

19 Geant4安装和入门 内部资料 GNUmakefile (每一个Geant4的目录下都有, 确定lib文件路径, 定义可执行程序)

2) 创建可执行程序

> cd $G4WORKDIR/examples/novice/N01 > gmake(make)

在bash下输入上面两行命令, 将在$G4BIN目录下建立可执行文件exampleN01.用以下命令执行该程序:

> $G4BIN/exampleN01

四. 执行模拟程序

1. 命令总目录

/control/ UI 控制命令. /units/ 单位.

/geometry/ 几何形状控制命令. /tracking/ 轨迹和步长控制命令. /event/ 事件控制命令. /run/ 运行控制命令.

/random/ 随机数状态控制命令. /particle/ 粒子控制命令. /process/ 物理过程控制命令. /hits/ 灵敏区和采样 /gun/ 粒子源控制命令. /vis/ 可视化命令.

2. 一些常用命令 1) /control/execute 说明:执行一个宏文件.

参数: filename 参数类型: s 可/否省略: 否

2) /control/loop 说明:多次执行宏文件

参数: macroFile

20