# Geant4的几何边界判断代码解析

1.事件示范step信息

2.几何边界的判断

a) 抽取track的nextvolume

b) 抽取PostStepPoint的所属volume

c) 抽取Pre/PostStepPoint的status

1. 事件示范step信息

2. 几何边界的判断

a) 抽取当前step所属track的nextvolume

```void B1SteppingAction::UserSteppingAction(const G4Step* step)
{ /* const*/ G4StepPoint* prePoint = step->GetPreStepPoint();
/* const*/ G4StepPoint* endPoint = step->GetPostStepPoint();
G4String nowvolumename= prePoint->GetTouchableHandle()->GetVolume()->GetName();
G4Track *aTrack = step->GetTrack();
G4VPhysicalVolume* nextpv=aTrack->GetNextVolume();
if (nextpv!=NULL)
{
G4String nextvolumename = nextpv->GetName();
if(nowvolumename=="phybgo"&&nextvolumename=="World")
{G4double E=aTrack->GetKineticEnergy();
G4cout<<"boundaryenergy is "<< E<<G4endl;
}
}
}```

b) 抽取当前step的PostStepPoint的所属volume

```void B1SteppingAction::UserSteppingAction(const G4Step* step)
{ /* const*/ G4StepPoint* prePoint = step->GetPreStepPoint();
/* const*/ G4StepPoint* endPoint = step->GetPostStepPoint();
G4Track *aTrack = step->GetTrack();
G4String nowvolumename= prePoint->GetTouchableHandle()->GetVolume()->GetName();
G4VPhysicalVolume* nextpv= endPoint ->GetTouchableHandle()->GetVolume();
if (nextpv!=NULL)
{
G4String nextvolumename = nextpv->GetName();
if(nowvolumename=="phybgo"&&nextvolumename=="World")
{G4double E=aTrack->GetKineticEnergy();
G4cout<<"boundaryenergy is "<< E<<G4endl;
}
}
}```

c) 抽取当前step的PreStepPoint或PostStepPoint的status

```void B1SteppingAction::UserSteppingAction(const G4Step* step)
{ /* const*/ G4StepPoint* prePoint = step->GetPreStepPoint();
/* const*/ G4StepPoint* endPoint = step->GetPostStepPoint();
G4Track *aTrack = step->GetTrack();
G4String nowvolumename= prePoint->GetTouchableHandle()->GetVolume()->GetName();
if ( nowvolumename=="phybgo"&&endPoint->GetStepStatus() == fGeomBoundary)
{G4double E=aTrack->GetKineticEnergy();
G4cout<<"boundary energy is "<<E<<G4endl;
}
}```

0 条评论

• ### Geant4--一次编译，运行多个Run，极大提升模拟效率

应唐光毅博士/后之约，对于Geant4模拟，我们看是否能解决这么一个问题：我现在想模拟探测器不同角度下的响应，每次模拟需要/run/beamOn 100， 可是...

• ### 文献插入引用（Mendeley）+图示说明+完全上手+免费

会LaTex排版的小伙伴就不必看该贴子啦，这至少能节约你2分钟的阅读时间，题主也是超想学习LaTex的=。=

• ### Geant4-怎样设置你的粒子源--精简注释+收藏版

一个通用的粒子发生函数源文件，即MYPrimaryGeneratorAction.cc大致就是本文的全部了。同现实场景相符，你需要知道每个发射的模拟粒子的特点，...

• ### 【Leetcode 70】关关的刷题日记68 – Leetcode 70 Climbing Stairs

关关的刷题日记68 – Leetcode 70 Climbing Stairs 题目 You are climbing a stair case. It tak...

• ### pycharm远程linux开发和调试代码

pycharm是一个非常强大的python开发工具，现在很多代码最终在线上跑的环境都是linux，而开发环境可能还是windows下开发，这就需要经常在linu...

• ### Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages

之前的这篇文章《Linux下使用 github+hexo 搭建个人博客01-hexo搭建》，相信大家都知道怎么搭建 hexo ，怎么切换主题，并且完成了一篇博文...

• ### ninja环境安装

ninja是一个小型构建系统，专注于速度，和常用的make类似，有一些软件就是基于ninja编译构建的，比如clickhouse数据库就需要依赖ninja，因为...

• ### 台式机使用Linux系统，是一种什么体验？

从事嵌入式软件开发多年，主要开发环境用的就是linux，最疯狂的一段时间直接把系统装成linux系统，然后在linux下面虚拟一个windows操作系统，主要有...

• ### 随机IOPS全面超越，腾讯云CSG 存储网关高性能缓存技术详解

CSG存储网关是基于腾讯云高性能、高可靠性的对象存储系统COS对外提供iSCSI、NFS和CIFS/SMB访问协议。作为一种混合云方案， 帮助用户不用修改本地应...

• ### 如何给自己的WordPress网站增加文章/页面自定义模板

我们后台在发布文章或者页面的时候其实可以看到有些模板他有选择使用的页面模板，有多种页面模板可以使用如下图：  [原文地址：https://www.zouaw.c...