4. 关于获得粒子状态
获得粒子的总能量:
G4Track *pTrack = pStep->GetTrack(); const G4DynamicParticle *pParticle = pTrack->GetDynamicParticle(); pParticle->GetTotalEnergy();
在Step中获得例子名称:
G4Track *pTrack = pStep->GetTrack(); const G4DynamicParticle *pParticle = pTrack->GetDynamicParticle(); G4String particleName = pParticle->GetDefinition()->GetParticleName();
.
其他状态信息(用户手册内容,摘一些常用的)
<1>在一个Step中获得指向前一或后一个Step状态的指针
G4StepPoint* point1 = step->GetPreStepPoint(); G4StepPoint* point2 = step->GetPostStepPoint();
<2>获得粒子坐标位置
G4ThreeVector pos1 = step->GetPosition();
<3>获得粒子所在物理体
G4TouchableHandle touch1 = point1->GetTouchableHandle(); G4VPhysicalVolume* volume = touch1->GetVolume();
进一步获得物理体名称和拷贝号
G4String name = volume->GetName(); G4int copyNumber = touch1->GetCopyNumber();
进一步获得物理体对应的逻辑题
G4LogicalVolume* lVolume = volume->GetLogicalVolume();
进一步获得物理体的上级物理体
G4VPhysicalVolume* mother = touch1->GetVolume(depth=1);
同理 depth=2 ...可以获得上上级物理体...
<4>判断粒子刚刚进入当前物理体
if (point1->GetStepStatus() == fGeomBoundary)
判断粒子即将离开当前物理体
if (point2->GetStepStatus() == fGeomBoundary)
<5>获得当前过程(Step)沉积的能量
G4double eDeposit = step->GetTotalEnergyDeposit();
<6>获得粒子当前动能(粒子能量)
G4double kinEnergy = track->GetKineticEnergy();
.
5.在G4例子程序里找“包含指定内容的例子程序”的Linux指令
找到包含 proton 内容的文件清单(用于在example里找内容):
find -name '*.cc' -exec grep -l 'proton' {} /; 【grep的常用参数:】 【-i 在字符串比较的时候忽略大小写】 【-l 只显示包含匹配模板的行的文件名清单】 【-n 在每一行前面打印该行在文件中的行数】
.
6.关于可视化中粒子的颜色
红色-电子(负电)
蓝色-质子或a粒子(正电)
绿色-光子或中子(不带电)
.
7.关于能量截断
G4和MCNP等蒙卡软件的一个不同点是用户只能指定长度截断,由系统自动转换成每种材料的能量截断。
如何从长度截断知道能量截断:
在运行G4程序后会在控制台输出一些运行参数的信息,其中有一段Table of registered couples,这里可以看到指定的长度截断在每个材料中的能量截断,例如:
========= Table of registered couples ============================== Index : 0 used in the geometry : Yes recalculation needed : No Material : Air Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 1 keV Region(s) which use this couple : DefaultRegionForTheWorld Index : 1 used in the geometry : Yes recalculation needed : No Material : Soil Range cuts : gamma 10 um e- 10 um e+ 10 um proton 10 um Energy thresholds : gamma 6.5864 keV e- 618.791 keV e+ 590.357 keV proton 1 keV Region(s) which use this couple : DefaultRegionForTheWorld ====================================================================
其中每个材料的Energy thresholds项就是能量截断值
.
8.关于单位换算
单位换算的时候,将以个数以MeV单位记录,应该除以MeV(从一个单位到另一个单位),如:
G4double particleEnergy = (pParticles->GetKineticEnergy())/MeV;
而赋予变量单位时才是乘(从没有单位到有单位):
G4double theEnergy = 100*MeV;
.
9.关于源文件后缀的注意
Geant4的源文件必须是.cc而不能是.cpp格式,否则将不被编译。
但头文件的后缀.hh或者.h都可以(有些IDE对.hh的文件不能提供代码自动识别,就可以改成.h来用),头文件本身不是直接参与编译的。