个关于G4IonTable的问题,大家一起讨论下 - 核能革新 ChinaNet
热图推荐
    查看: 6829|回复: 0

    个关于G4IonTable的问题,大家一起讨论下

    [复制链接]

    39

    主题

    49

    帖子

    152

    积分

    QQ游客

    积分
    152
    发表于 2015-4-8 10:13:54 | 显示全部楼层 |阅读模式
    我想知道Geant4自己到底定义了多少Ions,就看了看几个相关文档。
    那个G4IonTable类里面定义的
    typedef std::vector< G4ParticleDefinition * >  G4IonList

    private里面有:
    G4IonList *  fIonList

    我最初的想法是,是不是所有的Ions都已经默认被定义好,然后保存到这个fIonList里面。

    我作了如下测试,在GeneratePrimaries(G4Event* anEvent) 里面写:
    G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
      G4String particleName;

      G4IonTable* ionTable = particleTable->GetIonTable();
      ionTable->DumpTable(particleName="ALL");

      G4cout<<"The current number of ions defined in IonTable is : " << ionTable->Entries() <<G4endl;
      //here only 6 ion types: proton, GenericIon,deuteron,triton,He3,alpha will be shown by default

    然后我运行一下,event次数为1,发现输出只有6种Ions,分别是:
    proton, GenericIon,deuteron,triton,He3,alpha
    我看geant4-09-01-patch-01的G4Ions的派生类有7个,还有一个是中子,可是这个默认并没有显示有中子,原因我不知道。
    (补充,原来在后来的Geant4版本中,中子被从G4Ions里面移到barions里面去了)


    然后我测试更多的events,例如当我改为10个事件时,多了一个O16粒子出来,总离子数成为7个。
    然后我又增加event数目,例如100,我会在屏幕上不断的看到这个总粒子数目增长,由开始的6个,变为7个,过一会变为8个,最后变到15个。什么N15啊,O18的都出来了。

    我继续增加event数目,这个IonTable中的总离子数目也在不断增长。但是我其实并没有自己写任何代码去创建新的Ion,而且我也想不明白哪里会自己调用CreateIon函数。

    如果这个时候,我按nucl以前帖子里面的讲解,添加代码:
    G4ParticleDefinition* particleFe56 = ionTable->GetIon(26,56,0);
      G4cout<<"The name of particleFe56 is : " << particleFe56->GetParticleName() <<G4endl;  
      G4cout<<"The current number of ions defined in IonTable is : " << ionTable->Entries() <<G4endl;

    beamOn后面还是只设定1个event,此时的确可以看到有Fe56生成,名字是Fe56[0.0],而且ionTable里面的离子数目变成了7。
    我的理解就是,其实当我们用Find或是Get来获取一个离子时,如果它的参数Z,A什么的的确是合理存在的,就会生成这个离子,然后ionTable里面就会多一个离子类型出来。

    我继续添加代码:

      ionTable->CreateAllIon();//
      G4cout<<"The total number of ions defined in IonTable is : " << ionTable->Entries() <<G4endl;//3116

    这样以后,会看到此时ionTable里面有3116个离子类型存在。
    如果我添加
      ionTable->DumpTable(particleName="ALL");
    后,的确可以看到这些离子被显示出来,太多了,看不过来。


    经过上面的测试后,我觉得其实最开始只有那6个离子被默认创建并放在那个fIonList里面,其余的离子无非是后来用的时候才被添加进去的。
    我们这里说的离子Ion是不是电子全被剥光了的呢?我想是的。

    不知道我的理解是否正确,开个帖子,引个话题,希望各位和我一起讨论。


    转自www.52mc.net
    回复

    使用道具 举报

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

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

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

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