专栏首页人芳觅geant4入门讲解篇-2

geant4入门讲解篇-2

让我们继续以B1例子为主,讲解Geant4的模拟流程。如下图所示,Run是由多个Event组成的,PrimaryGenerator每执行一次,就会产生一个独立的Event,每个Event又是由多个Step组成的。Step是物理过程反应的最小模拟单元,从长度上可以小到nm甚至fm,可以通过蒙卡抽样得到当前传输粒子发生某种物理过程的信息,比如是否发生了光电效应,如果是,则会产生次级粒子即有动能的自由电子,然后继续模拟抽样该电子的物理过程,比如发生电离,沉积了多少能量等。

Geant4关键函数之间的流程关系

B1的物理过程列表用的是集成好的QBBC,包含了标准电磁相互作用过程和强子物理过程,只需要在主函数exampleB1.cc中声明调用即可。在定义好几何体之后,当又辐射粒子穿过几何体时,Geant4会根据辐射粒子的特性和几何体材料的特性进行物理过程的蒙卡抽样,通过Step给出所可能发生的物理过程。

Geant4最需要注意的地方在于根据用户的需求获得想要的信息,B1是想获得入射N个粒子后,Shape2获得多少剂量。获取信息,离不开SteppingAction.cc,step即G4Step,会给出几乎所有真实实验中可以给出的信息。

计算剂量,我们需要知道:

a. 每个粒子即Event会沉积多少能量,然后把所有粒子/Event的沉积能量相加,所有的沉积能量/Shape2质量=剂量;

b. 每个粒子与几何体相互作用时,Shape2中的每个Step沉积多少能量,然后把这些Step沉积能量相加给当前的Event。

在Geant4模拟中,我们通常是从小到大来获取统计这些能量信息:

a. 询问当前Step所处的位置是否属于Shape2几何体内,如果是,沉积能量edep相加给当前Event中的一个中间变量fEdep(在每个Event开始时,该变量fEdep初始化为0,用来统计当前Event下所有Step的沉积能量和)。

 if (!fScoringVolume) {
    const B1DetectorConstruction* detectorConstruction= static_cast<const B1DetectorConstruction*>(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
fScoringVolume = detectorConstruction->GetScoringVolume();
// fScoringVolume=Shape2
  }
  // get volume of the current step
  G4LogicalVolume*volume= step->GetPreStepPoint()->GetTouchableHandle()->GetVolume()->GetLogicalVolume();
  // check if we are in scoring volume
if (volume != fScoringVolume) return;
  // collect energy deposited in this step
  G4double edepStep = step->GetTotalEnergyDeposit();
fEventAction->AddEdep(edepStep);

b. 在每个Event开始时,变量fEdep初始化为0,在结束时,将fEdep相加给Run中的变量“fEdep”,在Run结束时,当前所有入射粒子总的沉积能量也就得出来了。

void B1EventAction::BeginOfEventAction(const G4Event*)
{    
  fEdep = 0.;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B1EventAction::EndOfEventAction(const G4Event*)
{
  // accumulate statistics in run action
  fRunAction->AddEdep(fEdep);
}

在接下来的教程系列中,我们将分别探究B1DetectorConstruction.cc、B1PrimaryGeneratorAction.cc、B1SteppingAction.cc 的实战应用。

喜欢的话,分享一下吧~^o^~

本文分享自微信公众号 - 人芳觅(lililiangzuozuo),作者:梁佐佐

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Geant4--是怎样使用的?--(1.信息抽取)

    对于Geant4模拟,我们关心它到底是怎样使用的,到底是怎样获取我们想要的信息,即信息抽取。前面几篇入门教程有提到,Geant4的模拟流程中从信息流的整合来看,...

    梁佐佐
  • Geant4--G4ParticleGun定义射线源的发射能谱

    “ G4ParticleGun作为Geant4模拟中常用的粒子产生器,本文代码讲解怎样模拟发射符合自定义能量分布的粒子。”

    梁佐佐
  • 3D建模(Blender)+实例演示透明材质和5毛光晕特效

    不知道为什么,明明只想安安静静的科研(搬铅砖,一块22斤)。却发现自己,不会P图是不行的,毕竟你总想在自己的PPT里面突出点什么;不会视频剪辑、不会Gif动图,...

    梁佐佐
  • Linux的cron程序

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.cs...

    Tyan
  • 开源任务管理平台TaskManager介绍

      很早之前准备写Quartz系列文章,现在终于能够实现了。从本篇开始将带你实现一款自己的任务管理平台。在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周...

    用户1168362
  • 图解 | 傻傻分不清VR/AR/MR?第四波科技浪潮早来了

    导读:据国外媒体报道,消费者计算平台的演进并不是一条直线,而是波浪式地向前推进。个人电脑、互联网以及移动设备是前三波浪潮,每一次浪潮的发展速度更快,影响更大,更...

    钱塘数据
  • 使用 Nginx 和 Gunicorn 部署 Django 博客

    在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了 N 个字符。一旦...

    追梦人物
  • 拆解组新的GAN:解耦表征MixNMatch

    表示某类的无标签的图像集合(例如鸟类图像),任务是学习一个条件式生成模型,可以同时将背景、物体姿势、形状和纹理等因子编码到一个解纠缠的潜码空间(每个因子单独受一...

    公众号机器学习与生成对抗网络
  • 使用 Fabric 自动化部署

    在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了 N 个字符。一旦...

    追梦人物
  • Java之访问修饰符

    Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

    用户5224393

扫码关注云+社区

领取腾讯云代金券