Gate 用户手册(一)总体概念
参考网站
http://wiki.opengatecollaboration.org/index.php/Users_Guide
本文并非完全翻译,会根据情况适当缩减。生命有限,能少就少。
综述:
这部分介绍使用Gate进行仿真所必经的一些步骤,并用了一些简单的例子介绍。更加详细的介绍在用户手册的后面部分,Gate的使用不需要任何C++编程,这得益于扩展geant4本机命令的专用脚本机制,第一部分的目标是提供用户接口的简短介绍和gate使用的一些基本原则。
1.成像应用的仿真结构
在每一个仿真中,用户必须
- 定义扫描器几何图形
- 定义phantom几何体
- 设置物理过程
- 初始化仿真 命令:/gate/run/intialize
- 建立检测器模型
- 定义源
- 声明数据输出的格式
- 开始采集
2.放射疗和放射测量应用的仿真结构
在每一个仿真中,用户必须
- 定义射线几何形状
- 定义phantom几何形状
- 声明输出
- 设置物理过程
- 初始化仿真 /gate/run/intialize
- 定义源
- 用下面的命令开始仿真
/gate/application/setTotalNumberOfPrimaries [particle_number]
/gate/application/start
3.用户接口
Gate命令使用一个树形结构组织,例如:所有的几何控制命令以geometry开始,然后所有的命令都可以在/geometry/分支里面找到。
Gate在运行的时候,会出现Idel> ,然后就可以1.成像应用的仿真结构输入命令了。当仿真效果不是期待的样子,用户可以重新调整参数。 虽然在用户熟悉这个软件或者不知道如何构建几何形状时,一步一步输入命令可以进行仿真比较有用,但是还是推荐一次输入一组命令来完成一个的仿真。
Macros全部是ASCII文件(扩展名是.mac),里面包含一些命令和注释,一个maros文件可以在Gate的命令解释器中执行,或者把它作为一个命令行参数给Gate,或者从另外一个macro文件中调用。一个macros文件必须有正确的命令顺序,包含的命令一般是:可视化,geometry的定义,系统,数字化仪器,物理,初始化,源,输出和开始。这些步骤在下一部分描述,一个仿真可以被分成多个macros,比如一个主macros来定义geometry,一个macros来定义物理。通常,通常有一个marco来调用更多具体的macro。
在linux终端下执行macros文件,命令:
Gate mymacro.mac
在Gate环境中执行macros文件:
Idle>/control/execute mymacro.mac
从macro文件中执行另外一个macro,在主macro文件中写:
/control/execute mymacro.mac
下面介绍成像应用仿真的主要步骤。
步骤1.定义一个扫描几何
用户需要基于volume来定义几何,所有的volume通过树形结构连接到一起,每一个volume用形状,大小,位置,材料来表征,填充到一个新的volume中默认的材料是空气,可以使用的材料都在GateMaterial.db中找到(See Users Guide:Materials).,材料数据库的位置需要用下面的命令来声明:
/gate/geometry/setMaterialDatabase MyMaterialDatabase.db
树基是仿真实验的框架,与构建一个形状相关的所有Gate命令在Users Guide:Defining a geometry.可以找到。世界volume可以任意大小,但是至少能够把整个几何形状包含进去,当一个粒子跑出世界volume之后,其跟踪就会消失,这里给出的例子使用
40 x 40 x 40 cm,因此,世界坐标可以用下面来定义。
/gate/world/geometry/setXLength 40. cm
/gate/world/geometry/setYLength 40. cm
/gate/world/geometry/setZLength 40. cm
世界volume可以包含一个或者更多子volume
/gate/world/daughters/name vol_name
第一个子volume有一个专用的意思和名字,它声明了扫描器的类型(Users Guide:Defining a system),也称为一个系统。当前例子中,名字叫做CylindricalPET system,这个系统假定扫描器基于cylindrical 配置,每一个块包含一系列晶体。
/gate/world/daughters/name cylindricalPET
/gate/world/daughters/insert cylinder
/gate/cylindricalPET/setMaterial Water
/gate/cylindricalPET/geometry/setRmax 100 mm
/gate/cylindricalPET/geometry/setRmin 86 mm
/gate/cylindricalPET/geometry/setHeight 18 mm
/gate/cylindricalPET/vis/forceWireframe
/vis/viewer/zoom 3
第七和命令扫描器的全局几何形状,扫描器的形状是圆柱,外圆半径100mm,内圆半径86mm,长度18mm,最后一个命令把可视化为线状。创建时你可能会看到下面的信息
G4PhysicalVolumeModel::Validate() called.
Volume of the same name and copy number ("world_phys", copy 0) still exists and is being used.
WARNING: This does not necessarily guarantee it's the same
volume you originally specified in /vis/scene/add/.
这种信息是正常的,你可以忽视掉。
任何时间里,用户列出了所有可能的可是化命令,例如,命令行来列出可视化的命令是
Idle> ls /gate/cylindricalPET/vis/
假设扫描器由30个块构成,每一个块包含8x8的晶石,下面的命令行描述这个扫描器(Users Guide:Defining a geometry查看命令的详细信息),第一,每个块的几何图形被定义为子系统,这里是圆柱PET系统。
/gate/cylindricalPET/daughters/name box1
/gate/cylindricalPET/daughters/insert box
/gate/box1/placement/setTranslation 91. 0 0 mm
/gate/box1/geometry/setXLength 10. mm
/gate/box1/geometry/setYLength 17.75 mm
/gate/box1/geometry/setZLength 17.75 mm
/gate/box1/setMaterial Water
/gate/box1/vis/setColor yellow
/gate/box1/vis/forceWireframe
一旦一个块创建了之后,晶石可以被定义为块的子块。
zoom命令允许用户来缩放几何图形。panto命令把可视窗变成横向60mm和纵向40mm.默认的元殿是(0.0.0)
为了获得晶石的完整矩阵,volume箱2需要重复在Y和Z方向,为了获得完整的唤醒检测器,原始框被重复30次。
# C R Y S T A L
/gate/box1/daughters/name box2
/gate/box1/daughters/insert box
/gate/box2/geometry/setXLength 10. mm
/gate/box2/geometry/setYLength 2. mm
/gate/box2/geometry/setZLength 2. mm
/gate/box2/setMaterial LSO
/gate/box2/vis/setColor red
/gate/box2/vis/forceWireframe
# Z O O M
/vis/viewer/zoom 4
/vis/viewer/panTo 60 -40 mm
# R E P E A T C R Y S T A L
/gate/box2/repeaters/insert cubicArray
/gate/box2/cubicArray/setRepeatNumberX 1
/gate/box2/cubicArray/setRepeatNumberY 8
/gate/box2/cubicArray/setRepeatNumberZ 8
/gate/box2/cubicArray/setRepeatVector 0. 2.25 2.25 mm
单个PET扫描器形成了,下一步骤是把这些几何图形有序连接在一起,来存储粒子间的相互信息(被称为hits),Gate只存储与检测器相吸附的volume的hits。如果一个volume没有连接到系统,那么里面的hits就不会被存储。系统和敏感传感器的概念可以查看Users Guide:Defining a system and Users Guide:Attaching the sensitive detectors
下面的命令用来把volume连接到系统
# R E P E A T R S E C T O R
/gate/box1/repeaters/insert ring
/gate/box1/ring/setRepeatNumber 30# Z O O M
/vis/viewer/zoom 0.25
/vis/viewer/panTo 0 0 mm# A T T A C H V O L U M E S T O A S Y S T E M
/gate/systems/cylindricalPET/rsector/attach box1
/gate/systems/cylindricalPET/module/attach box2
rsector的名字和模型是详细的名字,对应第一和第二水平CylindricalPET系统,可见Users Guide:Defining a system
保存hits在这个例子下的命令是:
# D E F I N E A S E N S I T I V E D E T E C T O R
/gate/box2/attachCrystalSD vglue 1cm
这时,用户可以施行检测器环境,Gate最突出的特征之一是时间无关(time-independent)现象,比如检测器移动和源衰减引起获得过程的一致性描述。简单的讲,在这个手册描述的仿真没有把检测器运动和phantom的运动算入。
第二步定义一个phantom几何形状
phatom建立方法和扫描器相同,phantom是世界volume下的一个子volume。
# P H A N T O M
/gate/world/daughters/name my_phantom
/gate/world/daughters/insert cylinder
/gate/my_phantom/setMaterial Water
/gate/my_phantom/vis/setColor grey
/gate/my_phantom/geometry/setRmax 10. mm
/gate/my_phantom/geometry/setHeight 30. mm
为了获得phantom中的compton和Rayleigh互动信息,可以让一个敏感传感器与phantom的volume连接
P H A N T O M D E F I N E D A S S E N S I T I V E
/gate/my_phantom/attachPhantomSD
现在对于每一个hit,两种信息会被记录
- 与phantom连接的所有物理块的分散互动
- 上次互动出现的与phantom3d连接的物理volume的名字
这些概念可以查看Users Guide:Attaching the sensitive detectors.
第三步设置物理过程
建立好扫描器和检测器后,必须设置对应的物理过程,Gate使用Geant4模型来及进行物理过程,用户必须为每个粒子选择物理过程,然后可以通过设置生产设备,消减,电磁选项来定制仿真。
一些典型的物理表在目录examples/PhysicsLists中
生产设备,消减,电磁选项可以查看Users Guide:Setting up the physics.
第四步初始化
前三步完成之后(对应geant4的预初始化),仿真用下面的命令初始化
# I N I T I A L I Z E
/gate/run/initialize
初始化实际上触发了不同部分的计算,在这步之后,physic list不能再被修改了,新的volume也不能被插入几何图形
第五步设置数字器(digitier)
Gate的基本输出是一个hit集合,hit数据包括,位置,时间,能量。数字器的目标是从hits建立物理观测以以及来对读出器进行建模,并引发触发单元。Gate digiter物体有一些函数,可以进行现行信号处理,例如,下面的命令插入一个加法器来把每一个基本volume产生的hit相加。
/gate/digitizer/Singles/insert adder
其他模型可以描述仿真的读出器,readout几何是与一些检测器相连的人工几何
/gate/digitizer/Singles/insert readout
/gate/digitizer/Singles/readout/setDepth 1
在这个例子中,readout把所有晶石中的能量相加,并且根据最高能量定义晶石头的位置,设置深度命令声明readout运行的几何水平,当前例子是
- base level (CylindricalPET) = depth 0
- 1srt daughter (box1) of the system = depth 1
- next daughter (box2) of the system = depth 2
- and so on ....
为了把检测器的能量分辨率算入,并只在单个定义的能量窗口收集,也可以使用其他模型(??)
# E N E R G Y B L U R R I N G
/gate/digitizer/Singles/insert blurring
/gate/digitizer/Singles/blurring/setResolution 0.19
/gate/digitizer/Singles/blurring/setEnergyOfReference 511. keV # E N E R G Y W I N D O W
/gate/digitizer/Singles/insert thresholder
/gate/digitizer/Singles/thresholder/setThreshold 350. keV
/gate/digitizer/Singles/insert upholder
/gate/digitizer/Singles/upholder/setUphold 650. keV
在这里考虑551kev 19%的能量分辨率
因此,能量窗口从360kev设置成600kev
对于PET仿真,符合分离器(??)也在数字器下施行
# C O I N C I D E N C E S O R T E R
/gate/digitizer/Coincidences/setWindow 10. ns
数字器更多信息可以查看Users Guide:Digitizer and readout parameters.
第六步源设置
在Gate里面,一个源是指粒子发射的volume,用户可以定义源的几何形状,以及它的特征,比如发射方向,能量分布,和活动性。不稳定的源的通常从geant4里面的数据库得到的。
一个体素化的phantom或者一个病人数据集也可以用来定义源。定义源的汉书描述可以参考:Users Guide:Voxelized Source and Phantom
当前例子中,源是1mb的线源,线源是一个圆柱,半径0.5mm,长度50mm,源产生一度511kev的gamma粒子,并方向发射(对于更加真实的例子,正电子的范围和两个gamma的共线性也可以考虑在内)
# S O U R C E
/gate/source/addSource twogamma
/gate/source/twogamma/setActivity 100000. becquerel
/gate/source/twogamma/setType backtoback# POSITION
/gate/source/twogamma/gps/centre 0. 0. 0. cm # PARTICLE
/gate/source/twogamma/gps/particle gamma
/gate/source/twogamma/gps/energytype Mono
/gate/source/twogamma/gps/monoenergy 0.511 MeV# TYPE = Volume or Surface
/gate/source/twogamma/gps/type Volume# SHAPE = Sphere or Cylinder
/gate/source/twogamma/gps/shape Cylinder
/gate/source/twogamma/gps/radius 0.5 mm
/gate/source/twogamma/gps/halfz 25 mm
# SET THE ANGULAR DISTRIBUTION OF EMISSION
/gate/source/twogamma/gps/angtype iso# SET MIN AND MAX EMISSION ANGLES
/gate/source/twogamma/gps/mintheta 0. deg
/gate/source/twogamma/gps/maxtheta 180. deg
/gate/source/twogamma/gps/minphi 0. deg
/gate/source/twogamma/gps/maxphi 360. deg
/gate/source/list
第七步定义数据输出
默认输出数据类型是ASCII
# ASCII OUTPUT FORMAT
/gate/output/ascii/enable
/gate/output/ascii/setFileName test
/gate/output/ascii/setOutFileHitsFlag 0
/gate/output/ascii/setOutFileSinglesFlag 1
/gate/output/ascii/setOutFileCoincidencesFlag 1
# ROOT OUTPUT FORMAT
/gate/output/root/enable
/gate/output/root/setFileName test
/gate/output/root/setRootSinglesFlag 1
/gate/output/root/setRootCoincidencesFlag 1
给定这些脚本之后,.dat的asicc文件和.root文件会被创建,Users Guide:Data output,解释了如何理解结果文件
对于有些配置,结果可能存在sinogram类型,或和List Mode Format(LMF),sinogram输出模块存储扫描器的同时发生事件,每对晶体有一个2d的sinogram,sinogram要以原始格式存储,要么以ecat7格式存储。输出的完整描述清查看Users Guide:Data output
第八步开始一个数据获取
数据的开始和获取定义在现实实验中,此外,Gate需要一个时间片,在这个时间片里,仿真系统是静态的,在每个时间片的开始,几何形状根据要求的运动更新。在每个世界片内,几何性状保持静态,粒子转移仿真和数据获得继续。每个时间片对应一个geant4的运行。
如果仿真中的源不是发射性的或者活动没有被定义,用户可以修定事件总数,这种情况下,粒子数在根据每个时间片的函数进行分割
/gate/application/setTotalNumberOfPrimaries [N]
用户可以修改每一个时间片的数量,这种情况下,每一个事件通过时间片和总仿真时间之间的比来衡量
/gate/application/setNumberOfPrimariesPerRun [N]
也可以不同时间片有不同的时间数。要写在一个文件里运行,设置
/gate/application/readNumberOfPrimariesInAFile [path/to/filename]
4.规则时间片方法
规则时间片方法,成像应用的标准Gate方法,用户使用下面的命令定义数据获取的开始和结束,
/gate/application/setTimeSlice 1. s
/gate/application/setTimeStart 0. s
/gate/application/setTimeStop 1. s
生成种子的选择非常重要,有3种生成的方法。
- 默认:这种情况下,默认的CLHEP内部种子被使用,种子始终是相同的。
- 自动:每次Gate运行时,自动生成新的种子。
- 手动:人工设置种子
对应代码
/gate/random/setEngineSeed default
/gate/random/setEngineSeed auto
/gate/random/setEngineSeed 123456789
也可以选择包含种子的文件来直接控制初始化
/gate/random/resetEngineFrom fileName
# S T A R T the A C Q U I S I T I O N
/gate/application/startDAQ
投影总数是
在当前的例子中,没有运动,获取时间=1s,投影的数量等于1、如果你想在仿真进行时退出程序,最后一行应该是exit
作为monte-carlo工具,Gate需要随机生成器,CLHEP库提供。有三种随即数生成器,the Ranlux64, the James Random and the Mersenne Twister,默认 Mersenne Twister。
NB:一些用户反馈说使用Ranlux64 生成器,数据里面有artifact效应,但Mersenne Twister生成器里面没有产生这种效应
5.变量时间片
这种方法里面,每个时间片有一个特殊的时期,用户必须定义每个时间片的时间。第一种方法是用一个含有时间片的文件
/gate/application/readTimeSlicesIn [File Name]
第二种方法是给每一个时间片增加命令
/gate/application/addSlice [value] [unit]
用户要用setTimeStart来定义数据的开始,数据的获取以累加每个时间片结束。
仿真开始命令
/gate/application/start
or
/gate/application/startDAQ
6.冗余度
随即引擎的冗余度可以被选择,使用下面命令。冗余度范围[0,2]
/gate/random/verbose 1
较高的值将被解释为2。值为0表示根本不打印,值为1表示在采集开始时打印一次,值为2表示在每次运行开始时打印一次。
Gate 用户手册(一)总体概念相关推荐
- 世界地图的制作(总体概念设计)
1.世界地图主题制定 首先要为将要设计的世界地图制定一个主题,在时间允许的情况下,无论是整个世界还是一个小场景,最好都能为其设定一个主题.例如怪物巢穴 2.世界观及地图风格确定 紧扣制定好的世界主题, ...
- Gate用户手册(二)怎样运行Gate以及可视化
原文通道:http://wiki.opengatecollaboration.org/index.php/Users_Guide:How_to_run_Gate#Interactive_mode 原文 ...
- block,inline和inline-block概念和区别
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- WCF分布式开发步步为赢(14):WCF安全编程--基本概念
WCF安全机制是个非常复杂的问题,因为涉及的知识点较多,所以今天这个文章,会分析进行WCF安全开发应该了解的哪些知识点.如何查看资料.为了更好地理解WCF安全相关知识,我把WCF安全机制主要知识点整理 ...
- 移动端(一)—— 移动端概念
移动端相关概念 之前一直在用github博客,但是发现上传图片和在别人访问的问题上很不友好,所以现在改用csdn博客,下面正文. 个人现在在研究移动端,但是对于移动端的相关概念等等,原理性问题一直不了 ...
- 【Gazebo要素01】术语和概念
一.提要 要了解gazebo需要多种技术知识,常常无法短期内掌握,这里列出相关得种种技术术语,和其基本含义:以便在开发中形成一个总体概念.注意,本文不着眼于技术细节,仅仅是提纲携领而已. 二.gaiz ...
- 组群的基本概念linux,linux课件-Linux系统中组群与用户管理.ppt
<linux课件-Linux系统中组群与用户管理.ppt>由会员分享,可在线阅读,更多相关<linux课件-Linux系统中组群与用户管理.ppt(66页珍藏版)>请在装配图网 ...
- inline-block什么意思中文_block,inline和inline-block概念和区别
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- 谈谈敏捷开发概念和迭代开发方案
自敏捷开发这一概率进入我们的视野,仅在短短几年内,软件开发领域便进入了高速开发的时代.似乎从业者们都在谈快速,谈迭代,不管是否感受过敏捷开发的益处,先跟风吹起来,只要凑近这一新技术,就像走在了行业的前 ...
最新文章
- C++文件如何在linux下生成动态库So,以及如何使用这个动态库
- 转载-如何做好项目的需求与业务调研
- LDAP用户验证(Spring-LDAP)
- python学习-知识点回顾(Python3的安装,编译器、一些关键知识点、数据类型、数据类型转换、运算符优先级)
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步
- Spring Boot 解决跨域Cors问题
- office连接oracle,Access(VBA)连接Oracle数据库的代码
- Matlab去掉矩阵中的全0行或列
- JAVA构造对象的几种方式(构建器、构造器)
- 怎样使用OUTLOOK收发邮件 小雨
- Python Tutorial 实践(2)
- LeaRun.Java表单快速开发工具
- 清华大学学术答辩通用PPT模板
- 畅阳题库管理系统-在线考试(h5+小程序)Java开源版本
- java多线程之Single Threaded Execution模式
- Flutter面试总结(2022)
- 【推荐系统】【论文阅读笔记】【survey】A Survey on Session-based Recommender Systems基于会话的推荐系统综述
- linux 服务器的性能考核指标QPS、TPS、RT、Load、PV、UV
- liunx服务器 telnet 带用户名 端口登陆方法
- 大数据ACA试题-3
热门文章
- Virtual host / experienced an error on node rabbit@ xx and may be inaccessible Totals问题的解决
- android MDE工程师,Android Application Addon(插件) 架构及管理
- Unite 2018|基于照片建模的游戏制作流程
- thingsboard
- java中关键字缺省(default)
- IntelliJ IDEA之开发环境配置
- 一次性禁止禁止Flash Helper service(即ff新推荐)即flash弹出来的广告
- 记一次拯救NAS硬盘
- 米家蓝牙温湿度计2接入树莓派并通过homeassistant显示
- 短期趋势自用经传捕捞季节 通达信指标公式副图 源码 贴图