您的位置:首页 > 其它

Geant4程序的一点技巧总结 2

2010-12-18 21:07 127 查看
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来用),头文件本身不是直接参与编译的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: