1 基本概念
1.1 需要创建一个类继承 G4ModularPhysicist
每个physics都是继承 G4PhysicsConstruct
Physicslist 由很多 physics组成,physics里面包含很多的process,也就是物理过程,光电效应就是一个process
1.2 model的概念:实现proces,一个process可以对应多个model,也就是有多种实现方式
一个model最重要的两个方法,
ComputeCrossSectionPerAtom():计算反应截面,反应截面越大,发生反应的概率越大,例如,2kv的电子,在这个地方是发生哪种反应,是靠这个函数决定的
SampleSecondaries(): 模拟粒子发生的过程,比如产生光子,吸收电子的过程
不同model实现的细节和考虑的东西可能不一样;以及考虑的数据库可能不一样,有些model,比如光电效应,在低能的时候模拟得比较好,但是有些model在高能的情况下模拟得比较好,这种时候就需要同时去调用两个model来实现更好的模拟
例如下面两个model都是处理光电效应的,但是后者是偏重低能的光电效应
G4LivermorePhotoElectricModel
G4PenelopePhotoElectricModel
二 如何自定义physics list
2.1 为什么要自定义 physics list
虽然geant4自定义了很多physics list,但是里面所含有的反应太多太完备,很多都用不到,在知道自己的实验发生哪种物理反应的情况下,就可以自定义一个自己的physics list
三 、gps/pos/rot1 和 gps/pos/rot2理解
没有添加 gps/pos/rot1
gps/pos/rot2 0 0 1
没有添加 gps/pos/rot1
gps/pos/rot2 0 1 0
没有添加 gps/pos/rot1
gps/pos/rot2 1 0 0
四 production cut,tracking cut 以及step length的区别
(1) production cut
A . production cut的定义:
production cut设置的是距离,如果次级例粒子的运行距离小于这个距离,他们就不会被产生,而是以能量沉积的形式被沉积下来。粒子在不同的物体里面,这个距离就会被转换成具体的能量值,本质来说这个是个能量,在判断次级粒子会不会产生的时候,是根据这个转换的能量来判断的,也就数判断次级粒子的能量是不是大于这个转换能量,从而判断次级粒子是产生还是直接转换成能量沉积
下面是在打印的log文件里面的这个地方可以查看所设置的距离(production cut)在具体的物体里面对应的能量是多少
加速程序运行效率的一种方式:比如光电效应里面,如果不关心很低能的一些电子的运动过程,就可以设置这个阈值,让他
以能量沉积的形式沉积下来,节省计算时间
B. 对gamma,e-,e+,proton四种粒子同时设置他们的 production cut,只需要下面一句
/process/em/applyCuts true %光电效应,康普顿要加这个
/run/setCut 10 nm
如果要对指定的粒子设定 production cut
/process/em/applyCuts true %光电效应,康普顿要加这个
/run/setCutForAGivenParticle gamma 10 nm
不考虑 production cut时,可以设置如下语句,那么不管你设置多少,都不会考虑这个值。
默认情况是不忽略的。
/process/em/deexcitationIgnoreCut true
C. /process/em/applyCuts true
if false
D /cuts/setLowEdge 使用
producton cut 阈值设置过程中,默认的最低阈值是990eV,如果要设置的阈值低于这个值,就需要加上这个语句 /cuts/setLowEdge
(2) tracking cut
以前的旧版本里面,设置 tracking cut是为了使得粒子低于这个能量时,就停止最终,不再设置。
新版的geant4
一般来说,现在的geant4里面,不再设置tracking cut了,粒子轨迹结束停止下来的条件是能量变成0.