问几个初级Geant4问题 - 软件共享 ChinaNet
热图推荐
    查看: 6807|回复: 0
    打印 上一主题 下一主题

    问几个初级Geant4问题

    [复制链接]

    39

    主题

    49

    帖子

    152

    积分

    QQ游客

    积分
    152
    跳转到指定楼层
    楼主
    发表于 2015-4-8 09:48:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    问几个初级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   
    函数重载  引用



























    回复

    使用道具 举报

      关注我们
    • 微信公众号:
    • NuclearNet
    • 扫描二维码加关注

    Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc.

    联系我们|网站声明|中国核网-核能领域第一垂直门户网站

    快速回复 返回顶部 返回列表