2010年5月4日星期二

Gate Search Engine 专用GATE搜索引擎

由于GATE本身是一个非常普通的英语单词,所以在用Google搜索时经常出现大量无关的结果。我们利用Google提供的定制引擎功能,将搜索结果限制在特定的网站内,这就是我们的“专用GATE搜索引擎”。目前主要网页来源为GATE的邮件列表。如果大家知道其他专门面对GATE研究的网站或网页,请告诉我以便添加到这个引擎里。






Google Custom Search


学习小组成员:
Shawn, Thomas Jefferson University, Philadelphia, PA, USA
G.Wu, 东软派斯通, 中国
Y. Kuang, Case Western Reserve University,Cleveland, Ohio, USA

谢谢大家!

发起与协调人:Shawn(shawn@tutorsky.net)

2007年7月26日星期四

upholder, pileup, deadtime

我的simulation里有下面三个模块:

# ENERGY BLURRING
/gate/digitizer/Singles/insert blurring
/gate/digitizer/Singles/blurring/setResolution 0.0
/gate/digitizer/Singles/blurring/setEnergyOfReference 140. keV

# THRESHOLDER / UPHOLDER (refer to benchmarkSPECT)
/gate/digitizer/Singles/insert thresholder
/gate/digitizer/Singles/thresholder/setThreshold 20. keV
/gate/digitizer/Singles/insert upholder
/gate/digitizer/Singles/upholder/setUphold 190. keV
/gate/digitizer/Singles/thresholder/verbose 0

#PILEUP
/gate/digitizer/Singles/insert pileup
/gate/digitizer/Singles/pileup/setDepth 4
/gate/digitizer/Singles/pileup/setPileup 60 ns

#DEADTIME
/gate/digitizer/Singles/insert deadtime
/gate/digitizer/Singles/deadtime/setDeadTime 1000 ns
/gate/digitizer/Singles/deadtime/setMode nonparalysable
/gate/digitizer/Singles/deadtime/chooseDTVolume rsector

为了看到pileup的效果,source使用了高达10^10Bq的点源,并且把energy resolution设成了0.
运行结果里大部分events的能量都是140keV,少数低于140(由于crystal的compton等效应),更少数是280keV(两个140叠加)。问题是:我既然设置了setUphold
190. keV,为什么这些280keV的例子仍然被记录了?

noise模块

手册里提供了一个noise模块:

/gate/distributions/name energy_distrib
/gate/distributions/insert Gaussian
/gate/distributions/energy_distrib/setMean 140 keV
/gate/distributions/energy_distrib/setSigma 1 keV
/gate/distributions/name dt_distrib
/gate/distributions/insert Exponential
/gate/distributions/dt_distrib/setLambda 7.57 mus
/gate/digitizer/Singles/insert noise
/gate/digitizer/Singles/noise/setDeltaTDistribution dt_distrib
/gate/digitizer/Singles/noise/setEnergyDistribution energy_distrib

加上这个模块以后,总的计数居然减少了(其他条件完全一样)。

2007年7月20日星期五

一个同事关于Gate的解释

我问同事在Gate里如何模拟不同系统对crystal-PMT结构的不同设计, 他的回答是:

Gate simulates the gamma photon tracking in the crystals and uses models for the other parts (electronics/readout) so there is not really a model for
PMT behaviour. What you can do for continuous crystals, is to use the spatialblurrer (but double check the code, if I understand well there is some problem in it). For pixelated (at least in PET), I believe they take the crystal with the max energy deposit.


重新定义Mosaic的detector系统

基于前面和Wu GC及其他同事的讨论, 我意识到以前对Mosaic的detector系统的定义存在一些问题.

Mosaic系统了使用278x52个pixelated crystal以及Anger-logic技术, 既不同于传统的基于continuous crystal的Anger camera, 也不同于后来的block detector.

以前用cylindricalPET系统, 把rsector定义成axial方向上的52个crystal, 然后把rsector用ring repeater重复278份. 在digitizer里面把setDepth设置成了0, 即从所有的crystal上读取数据.

这样的做法虽然目前符合我的需要(即使用Mosaic PET系统和Pinhole collimator一起来做SPECT成象), 因为Pinhole SPECT的事例非常少(相对PET而言), 所以可以设置 setDepth 为0. 如果要模拟真正的PET成象, 我这样的定义相当于整个系统只有一个大的crystal, 是不对的.

Mosaic 的278x52个crystal实际上可以分为6个virtual detector (和Allegro及更早的CPET类似), 这一点不是由crystal本身的构成决定的, 而是由后面的电路设计决定的.

在我新的定义里, 将使用scanner系统, level1即6个virtual detector, level2为2mmx2mmx10mm的crystal. 同时setDepth设置为1:

/gate/digitizer/Singles/readout/setDepth 1 (level1)

我想这样更加符合Mosaic本身的设计.



2007年7月18日星期三

Re: Gate里不同systems的区别

我也感觉Gate应该象你说的那样,但实际上Gate在每次模拟时都要使用一个产生随机数的"种子"文件(通常命名为seed1.rndm, seed2.rndm等)。如果两次模拟使用同一个种子文件(即/gate/output/root/setSaveRndmFlag 0),那么重复运行产生的数据是完全一样的。这一点Gate-user邮件列表上多个人提到过,你也可以验证一下。

我想Gate这样设计应该是有原因的,只是我还不太清楚。

Shawn


我认为: gate模拟中每次产生随机数的概率都应该是随机的,既然这样,即使是同一个 script模拟出来的数据也应该是不完全一样的,而整体的趋势应该是一样的。这包括同一个 script在同一台机器上模拟和不同机器上的模拟,在数据上都应该是有差别的,而最终的趋势是不变的。我记得我也曾做过类似的试验,结果是数据不一样,但产生的弦图是一样的。这是我的观点,不知是否合理。

Wu GC

Gate里不同systems的区别

最近在考虑一个问题: Gate里定义系统的时候, 要求基于现有的几个系统之一("scanner", "SPECTHead", "cylindricalPET", "ecat", and "CPET"), 那么在选用不同的系统时, 除了定义crystal的几何位置的方法不同之外, 还有没有更深层次的区别? 比如不同系统在 digitizer 的实现上有没有内在的区别?

我做了一个这样的试验: 用"scanner" 和 "cylindricalPET" 定义了两个完全相同的系统, 所有其他的模块也都一样, 其中包括 /gate/digitizer/Singles/readout/setDepth 0 (base level). 结果两个方法产生的数据是完全不同的 (同一个方法重复运行产生的数据完全相同, 因为我设的/gate/output/root/setSaveRndmFlag 0).

注: 我说的最后产生的"数据",是从singles里提出来的globalProjX, globalProjY, globalProjZ.

如果scanner是最通用的系统,那么应该可以由它来产生其他的系统(只是会麻烦一点). 不知道我的理解对不对.

2007年7月16日星期一

Re: 答复: [Gate学习小组的团队博客] 使用CPET的两个问题

对于第一个问题中,我认为:将 crystal  repeater 6次,是表示该 CPET系统有 6 crystal组成,要是直接定义成 360度的话,就相当于所定义的 CPET系统只有一个 crystal 组成了。

第二个问题的情况我也遇到过,有好的解决方法还请告之。

WuGC

2007年7月13日星期五

使用CPET的两个问题

1. 例子里先定义一个60度的"扇形":
/gate/crystal/geometry/setPhiStart 0 deg
/gate/crystal/geometry/setDeltaPhi 60 deg

然后再用repeater扩展成360度:
/gate/crystal/repeaters/insert ring
/gate/crystal/ring/setRepeatNumber 6

这样和直接定义360度(setDeltaPhi 360 deg)有没有区别?

2. 运行例子时 attach crystal 出错:

/vis/scene/notifyHandlers scene-0
/gate/systems/CPET/crystal/attach crystal
[crystal::IsValidAttachmentRequest]:

*** Break *** bus error
/Users/cao/G4work/9199: No such file or directory.
Attaching to process 9199.
Reading symbols for shared libraries . done
Reading symbols for shared libraries ........................................................................................................... done
0x90032884 in wait4 ()

========== STACKS OF ALL THREADS ==========

Thread 1 (process 9199 thread 0xd03):
#0  0x90032884 in wait4 ()
#1  0x90053550 in system ()
#2  0x0213c018 in TUnixSystem::StackTrace ()
#3  0x0213fdd4 in TUnixSystem::DispatchSignals ()
#4  <signal handler called>
#5  0x003c8a04 in GateBoxCreatorComponent::IsValidAttachmentRequest () at /Applications/geant4.8.1.p01/source/global/management/include/G4ReferenceCountedHandle.hh:315
#6  0x001989cc in GateSystemComponent::SetInserter ()
#7  0x002f8174 in GateSystemComponentMessenger::SetNewValue ()
#8  0x0004adbc in G4UIcommand::DoIt ()
#9  0x00008468 in G4UImanager::ApplyCommand ()
#10 0x00050fbc in G4UIbatch::SessionStart ()
#11 0x000070dc in G4UImanager::ExecuteMacroFile ()
#12 0x0004f0a0 in G4UIcontrolMessenger::SetNewValue ()
#13 0x0004adbc in G4UIcommand::DoIt ()
#14 0x00008468 in G4UImanager::ApplyCommand ()
#15 0x0000f334 in G4UIterminal::ExecuteCommand ()
#16 0x00010470 in G4UIterminal::SessionStart ()
#17 0x00004e14 in main ()

搜索Gate-user找到类似的错误,但是也没有看到解决的办法:
I am trying to make a simulation of the scanner based on CPET system. In
order to define the CPET system, I am followng the GATE manual (version
3.0.0. from 27 July 2006). The problem is, that after the definition of
the CPET system, Gate crashes at the step:
/gate/systems/CPET/crystal/attach crystal
and gives the following error message:
---------------------------------------------
*** Break *** segmentation violation
Generating stack trace...
0x081df936 in
GateBoxCreatorComponent::IsValidAttachmentRequest(GateAutoplacedCreatorInserter*)
const + 0x46 from Gate
0x0826b040 in GateSystemComponent::SetInserter(GateVObjectInserter*) +
0x50 from Gate
0x0830492c in GateSystemComponentMessenger::SetNewValue(G4UIcommand*,
G4String) + 0x7c from Gate
0x088aac24 in G4UIcommand::DoIt(G4String) + 0xaa4 from Gate
0x088b4aa7 in G4UImanager::ApplyCommand(char const*) + 0x4f7 from Gate
0x088c1ed9 in G4UIbatch::SessionStart() + 0x199 from Gate
0x088b3451 in G4UImanager::ExecuteMacroFile(char const*) + 0x41 from Gate
0x088c31b6 in G4UIcontrolMessenger::SetNewValue(G4UIcommand*, G4String) +
0xe6 from Gate
0x088aac24 in G4UIcommand::DoIt(G4String) + 0xaa4 from Gate
0x088b4aa7 in G4UImanager::ApplyCommand(char const*) + 0x4f7 from Gate
0x088c1ed9 in G4UIbatch::SessionStart() + 0x199 from Gate
0x088b3451 in G4UImanager::ExecuteMacroFile(char const*) + 0x41 from Gate
0x088c31b6 in G4UIcontrolMessenger::SetNewValue(G4UIcommand*, G4String) +
0xe6 from Gate
0x088aac24 in G4UIcommand::DoIt(G4String) + 0xaa4 from Gate
0x088b4aa7 in G4UImanager::ApplyCommand(char const*) + 0x4f7 from Gate
0x084236cc in G4UIterminal::ExecuteCommand(G4String) + 0x4c from Gate
0x08423d5a in G4UIterminal::SessionStart() + 0x5a from Gate
0x08186403 in main + 0x353 from Gate
0x017637e4 in __libc_start_main + 0xdc from /lib/libc.so.6
0x08184fb1 in TApplicationImp::ShowMembers(TMemberInspector&, char*) +
0xb5 from Gate
Abort


http://lists.healthgrid.org/archives/gate-users/2007-January/001631.html
-------------------------------------------

Re: 答复: Dr.Shawn,您好!

吴先生你好!

以我的理解,既然你的系统有lightguide,是不是应该把lightguide定义成一个volume,然后再crystal和lightguide之间,以及lightguide与PMT之间分别定义surface?Gate里的surface应该是没有厚度的,即使你的lightguide很薄,应该也还是volume.

Shawn

On 7/12/07,

Dr. Shawn,

您好!

您所说的两个 volume之间要定义两个 surface该如何理解,因为我在定义时只定义了一个的 surface

我是这样来定义得,首先,在这之前已定义好了 PMT crystal这两个 volume

/gate/crystal/surfaces/name   PMTsurf

/gate/crystal/surfaces/insert   PMT

/gate/crystal/surfaces/PMTsurf/setSurface   prefect_apd

这样定义完后应该是在 crystal PMT之间定义了一个 surface。这里也没有定义到两个 surface。请指正。

谢谢!

祝您生活开心!


Fwd: 答复:

Shawn,
您好!

感谢您的分析,我现在已经基本明白 surface的作用了,今天进行了模拟的尝试,已经取得了成功。在之前的模拟过程中没有明确去定义 PMT 。而是直接将digitizer 连接到了crystal 上,我把digitizer 理解为是PMT ,所以在定义surface 时由于少一个volume 而总是实现不了。

我之所以将设置 surface理解为是光导,这是由于我们现在的 PET系统中有这种 light guide。我想将这个 light guide在模拟的过程中也加上,所以看到 surface就将它与我们的光导联系起来了。

祝您开心!


2007年7月12日星期四

optical photons 的 surface 问题

吴先生你好!

Optical photons我还没有用过。从阅读手册和我个人的理解的来看,surface和你说的晶体与光电倍增管之间的光导并不是一回事。据我了解,有些系统在晶 体与光电倍增管之间使用了lightguide(应该是你说的光导吧),有些系统并没有lightguide,而是把晶体与光电倍增管直接相连。Gate 里面的surface应该是指任意两个需要做optical photon track的volume之间的过渡面,因为optical photon在这个面上会有和在volume内部不同的折射与反射。这也是两个volume之间需要定义两个surface的原因。

以上是我的理解,但因为我并没有做过,所以可能并不准确。希望看到你或其他朋友的指正和深入讨论。

Shawn

 Shawn

您好!

我在看 gate手册的第 12 Generating and tracking optical photons 时,有点问题想向您请教,就是在定义 surface时我认为是把 surface放在晶体和光电倍增管之间的,相当于是一个光导的作用。

所用的脚本是:

/gate/volume1/surfaces/name surface1

/gate/volume1/surfaces/insert  volume2

在这的 volume1 volume2是事先就定义好的两个 volume。我按照这样定义结果不行,其实我还是没有弄明白如何将 volume2 insert volume1 上,因为这中间还有一个 surfaces

另外,上次向您请教过的联机模拟的事,我们现在由于机器配置不行,联机实现还在进行中。


2007年7月10日星期二

使用 CompressedMatrix

原来是:

/gate/world/daughters/name vxphantom
/gate/world/daughters/insert parameterizedBoxMatrix

更换为:

/gate/world/daughters/insert compressedMatrix

正常读入phantom文件,没有碰到问题。

2007年7月2日星期一

Kill后台xgrid进程

后台运行Xgrid程序有时候出现cluster上任务已取消而本地任务还在运行的情况,可以使用下面命令kill所有xgrid 任务:
 
ps axco pid,command | awk '/xgrid/{ print $1 }' | xargs kill

或者:

killall -3 xgrid

2007年6月29日星期五

补充 Re: 另外一个crystal overlapping 的问题

如果repeat number是奇数(53、55)的时候就没有这个错误,而偶数时(52、54)就出现这个错误。

在模拟mosaic的过程中,使用了linear repeater来重复axial方向上的52个crystal,但是有时候(不总是)出现Overlapping daughter volumes

/gate/crystal/repeaters/insert linear
/gate/crystal/linear/setRepeatNumber 52
/gate/crystal/linear/setRepeatVector 0. 0. 2.3 mm
/gate/crystal/linear/autoCenter true