内部资料 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