ChinaNet

标题: 问几个初级Geant4问题 [打印本页]

作者: 鸿飞冥冥    时间: 2015-4-8 09:48
标题: 问几个初级Geant4问题
问几个初级Geant4问题
1.Phantom的坐标是怎么定的?那些XYZ轴的正负号坐标是怎么看的?
2.KinE(MeV)dE(MeV)各代表什么?
3. Steping vs. Tracking 这两个又是代表什么意思呢?
4.Track ID vs. ParentID这两个又是什么意思?我发现这两个ID不能唯一确定一个事件。比如e-会以标号Track ID 2, ParentID 1出现很多次


再问两个C++的问题
一、什么时候要用using namespace std; 有些head里面加了这句,有些没加
二、为什么只在head里面有#ifndef XXX   #def XXX #end if 而在.cc文件里都不需要呢?明明.cc文件里也有很多include的啊

请各路大侠指点一二~~~~


[url=]1楼[/url] 发表于: 2008-11-11



1.Phantom的坐标原点与world的坐标原点重合,坐标轴也是重合的。
2、KinE代表动能,DE代表两个step之间的能量损失;
3、4是知道怎么回答哈哈。

c++
1、查阅c++的名字空间相关内容;


[url=]2楼[/url] 发表于: 2008-11-11



由我这个菜鸟试着回答下:
1.不知道
2.应该是step是有两个端点吧?kinE是开始的粒子动能,dE是粒子在这个step中损失的能量
3.不知道
4.见附件,在图中在trackID0的step1处产生了一个粒子,对其进行跟踪命名为TrackID1.会出现很多次吗?那就没法跟踪次级粒子了啊
一:c++,using namespace std,是指用c++标准库中的名空间.比如说是cout,cin.
二:C++中的头文件卫士,为了防止重复定义
我是纯菜鸟,我是觉得如果让我编写Geant4的话,我会这么跟踪粒子,没在手册上找到,随便看看就行了



[url=]3楼[/url] 发表于: 2008-11-11



1.Phantom的坐标是怎么定的?那些XYZ轴的正负号坐标是怎么看的?
A:与Geometry的坐标一致,也就是你的WorldVolume的坐标系

2.KinE(MeV)和dE(MeV)各代表什么?  
A:动能和能量损失

3. Steping vs. Tracking 这两个又是代表什么意思呢?
A:参考楼上的图,Stepping是某一步的过程,而Tracking是一个径迹过程

4.Track ID vs. ParentID这两个又是什么意思?我发现这两个ID不能唯一确定一个事件。比如e-会以标号Track ID 2, ParentID 1出现很多次
A:TrackID是当前径迹分支的Track号,Primary粒子的径迹号根据每个Event发射多少个Primary按照从大到小原则分配,比如一个Event发射8个Primary,那么这8个Primary的Track号依次是8、7、6、5、4、3、2、1。由Primary产生的次级径迹则在此基础上增加。比如Primary 8没有次级径迹,Primary 7有2个次级径迹,则这两个次级径迹号分别为10、9;如果次级径迹10又有次级径迹,则再在此基础上增加,如11等。
ParentID则是表示当前径迹是由哪个径迹产生的分支,所有Primary的ParentID都是0。如上面的例子,TrackID=10的径迹的ParentID就是7,TrackID=11的径迹的ParentID就是10。

再问两个C++的问题
一、什么时候要用using namespace std; 有些head里面加了这句,有些没加
A:当需要用到C++标准库德时候必须用using namespace std;同样有时候还必须加using namespace CLHEP;

二、为什么只在head里面有#ifndef XXX   #def XXX #end if 而在.cc文件里都不需要呢?明明.cc文件里也有很多include的啊
A:防止在其他头文件中已经有定义或由于调用的原因被重复定义。#ifndef作用对象不是那些include文件,而是紧跟其后的那个预定义量,比如#ifndef G4Event_h,是说如果没有定义过G4Event_h这个变量,那么下面这些定义才有效,否则下面这些定义无效。

[url=]4楼[/url] 发表于: 2008-11-11



楼上的版主回答的很全面,也很具体,辛苦了。。。。,其实针对ID的意思,最好的办法是把信息详细输出,就很容易理解上图的意思了。
[url=]5楼[/url] 发表于: 2008-11-12



多谢geant和猪头~~非常感谢。
还有一个问题就是XYZ轴的原点在哪里?它们的正负号怎么定?是用左手坐标系嘛?

[url=]6楼[/url] 发表于: 2008-11-12



Phantom我自己没用过-_-不能给你答案,抱歉:)
[url=]7楼[/url] 发表于: 2008-11-12




多谢geant和猪头~~非常感谢。
还有一个问题就是XYZ轴的原点在哪里?它们的正负号怎么定?是用左手坐标系嘛?




XYZ轴的原点可以移动,旋转的呀,通常定义World volume的中心点为坐标原点,其他的坐标都是相对World Volume的,通常用XY平面做探测器平面,Z轴为粒子入射轴,在手册上,你可以看到探测器定义时的正负方向。

[url=]8楼[/url] 发表于: 2008-11-12



为什么runManager->SetUserInitialization(  )这个函数这么厉害?什么参数都往它里面传,好像是万能似的?
[url=]9楼[/url] 发表于: 2008-11-12



一个track是不是指从这个粒子的产生开始、到能量低到不再追踪为止?
一个step是怎么确定的?
比如,光子从真空中产生进入物体,在物体内部一点发生作用。
那么,产生--边界 是一个step,还是 产生--物体内部发生作用的一点 才是一个step?
另外,带电粒子在物体中电离的过程是连续的,那么一个step的长度是怎么确定的?


[url=]10楼[/url] 发表于: 2008-11-13




为什么runManager->SetUserInitialization(  )这个函数这么厉害?什么参数都往它里面传,好像是万能似的?


runManager是G4 的运行管理器,G4 就这么设定的,没有什么为什么-_-

[url=]12楼[/url] 发表于: 2008-11-16



如楼上,先看C++再学G4,并不有不懂的。
[url=]11楼[/url] 发表于: 2008-11-14




为什么runManager->SetUserInitialization(  )这个函数这么厉害?什么参数都往它里面传,好像是万能似的?


这个

这个就是C++的厉害之处   函数重载
其实geant4里头好多东西(程序技巧方面)都是借助c++里面的技巧  
像Vector啊  map啊  等等
实际上 哪个sensitive detector  如果用C++的眼光看 就没什么东西了
不知道你们C++都学到什么程度  我乃初学  已经见识到其厉害之处了
建议看C++内容:

继承 派生  
构造函数  拷贝构造函数  赋值构造函数   
指针 map   
函数重载  引用
































欢迎光临 ChinaNet (http://www.nuclear.net.cn/) Powered by Discuz! X3.1