Geant4程序的一点技巧总结 2

 

 

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.关于能量截断

G4MCNP等蒙卡软件的一个不同点是用户只能指定长度截断,由系统自动转换成每种材料的能量截断。

如何从长度截断知道能量截断:

在运行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来用),头文件本身不是直接参与编译的。


 

你可能感兴趣的:(Geant4)