发明内容
本发明所要解决的技术问题是,提供一种符合对的判定方法和设备,以解决按照现有技术中需要对所有探测到的大量单事件按照发生时间进行排序并在排序后逐个单事件进行时间符合而导致的系统消耗过大以及单事件丢失的技术问题。
为解决上述技术问题,本发明提供了一种符合对的判定方法,该方法包括:
对探测到的单事件分时间段标记;其中,每个时间段的时长不大于晶体死时间;
响应于当前时间段已标记结束,获取所述当前时间段内探测到的单事件;
对所述当前时间段内的每两个单事件进行空间符合,将彼此位于对方视野范围内的两个单事件组成初始符合对;
对每个初始符合对进行时间符合,将两个单事件之间的时间差在符合时间窗以内的初始符合对确定为目标符合对。
可选的,在时间上相邻的前后两个时间段在相邻处具有重叠的时间段部分,所述重叠的时间段部分的时长不小于所述符合时间窗的时长。
可选的,所述对所述当前时间段内的每两个单事件进行空间符合,将彼此位于对方视野范围内的两个单事件组成初始符合对,包括:
基于所述当前时间段内各个单事件入射到的探测器模块,确定所述当前时间段内各个单事件的模块地址;
对于所述当前时间段内的每两个单事件,将模块地址之差位于模块视野的地址差范围以内的两个单事件组成第一级空间符合对;
基于各个所述第一级空间符合对的两个单事件入射到的晶体,确定各个所述第一级空间符合对的两个单事件的晶体地址;
对于每个第一级空间符合对,将两个单事件的晶体地址之差位于晶体视野的地址差范围以内的第一级空间符合对确定为第二级空间符合对,所述第二级空间符合对为所述初始符合对。
可选的,
所述模块视野的地址差范围为:
所述晶体视野的地址差范围为:x<b<n·m-x;
其中,所述a为两个单事件的模块地址之差,所述b为两个单事件的晶体地址之差,所述m为探测器横向上的探测器模块数量,所述n为探测器横向上的晶体数量,所述x为探测器横向上彼此间没有符合线的、距离最远的两个晶体之间相隔的晶体数量,所述[x/m]表示x/m的计算结果取整数。
可选的,所述对于所述当前时间段内的每两个单事件,将模块地址之差位于模块视野的地址差范围以内的两个单事件组成第一级空间符合对,包括:
以所述当前时间段内各个单事件的模块地址作为各个单事件在所述第一随机存储器中的写地址,将所述当前时间段内各个单事件存储到第一随机存储器中;
按照所述第一随机存储器中写地址从小到大的顺序,依次读取所述随机存储器中各个写地址上的数据,并将所述第一随机存储器中读取出的各个单事件,按照读取的顺序,依次存储到第二随机存储器中未存储数据的最小的写地址上;
在从所述第一随机存储器中读取单事件到所述第二随机存储器的过程中,利用计数器对每两个相邻读取的单事件在所述第一随机存储器中的写地址之差进行计数而得到计数结果,利用寄存器组记录每两个单事件在所述第二随机存储器中的写地址所组成的地址对,并利用所述寄存器组依据所述计数器的计数结果记录各个所述地址对所属的两个单事件在所述第一随机存储器中的写地址之差作为各个所述地址对对应的模块地址之差;
依据所述寄存器组的记录,判断各个所述地址对应的模块地址之差是否位于模块视野的地址差范围以内,并以判断结果为是的地址对作为符合地址对,按照所述符合地址对的两个写地址读取所述第二随机存储器中的两个单事件组成第一级空间符合对。
可选的,所述寄存器组包括为各个所述单事件设置的寄存器;其中,各个所述单事件的寄存器,用于存储所述寄存器所属的单事件在所述第二随机存储器中的写地址分别与其他单事件在所述第二随机存储器中的写地址组成的地址对,并存储所述寄存器所属的单事件在所述第一随机存储器中的写地址分别与其他单事件在所述第一随机存储器中的写地址之差。
此外,本发明还提供了一种符合对的判定设备,该设备包括:
分段标记模块,用于对探测到的单事件分时间段标记;其中,每个时间段的时长不大于晶体死时间;
单事件获取模块,用于响应于当前时间段已标记结束,获取所述当前时间段内探测到的单事件;
空间符合模块,用于对所述当前时间段内的每两个单事件进行空间符合,将彼此位于对方视野范围内的两个单事件组成初始符合对;
时间符合模块,用于对每个初始符合对进行时间符合,将两个单事件之间的时间差在符合时间窗以内的初始符合对确定为目标符合对。
可选的,在时间上相邻的前后两个时间段在相邻处具有重叠的时间段部分,所述重叠的时间段部分的时长不小于所述符合时间窗的时长。
可选的,所述空间符合模块包括:
第一地址确定子模块,用于基于所述当前时间段内各个单事件入射到的探测器模块,确定所述当前时间段内各个单事件的模块地址;
第一级空间符合子模块,用于对于所述当前时间段内的每两个单事件,将模块地址之差位于模块视野的地址差范围以内的两个单事件组成第一级空间符合对;
第二地址确定子模块,基于各个所述第一级空间符合对的两个单事件入射到的晶体,确定各个所述第一级空间符合对的两个单事件的晶体地址;
第二级空间符合子模块,用于对于每个第一级空间符合对,将两个单事件的晶体地址之差位于晶体视野的地址差范围以内的第一级空间符合对确定为第二级空间符合对,所述第二级空间符合对为所述初始符合对。
可选的,
所述模块视野的地址差范围为:
所述晶体视野的地址差范围为:x<b<n·m-x;
其中,所述a为两个单事件的模块地址之差,所述b为两个单事件的晶体地址之差,所述m为探测器横向上的探测器模块数量,所述n为探测器横向上的晶体数量,所述x为探测器横向上彼此间没有符合线的、距离最远的两个晶体之间相隔的晶体数量,所述[x/m]表示x/m的计算结果取整数。
可选的,所述第一级空间符合子模块包括:
第一单事件存储子模块,用于以所述当前时间段内各个单事件的模块地址作为各个单事件在所述第一随机存储器中的写地址,将所述当前时间段内各个单事件存储到第一随机存储器中;
第一单事件读取子模块,用于按照所述第一随机存储器中写地址从小到大的顺序,依次读取所述随机存储器中各个写地址上的数据;
第二单事件存储子模块,用于将所述第一随机存储器中读取出的各个单事件,按照读取的顺序,依次存储到第二随机存储器中未存储数据的最小的写地址上;
计数子模块,用于在从所述第一随机存储器中读取单事件到所述第二随机存储器的过程中,利用计数器对每两个相邻读取的单事件在所述第一随机存储器中的写地址之差进行计数而得到计数结果;
寄存子模块,用于在从所述第一随机存储器中读取单事件到所述第二随机存储器的过程中,利用寄存器组记录每两个单事件在所述第二随机存储器中的写地址所组成的地址对,并利用所述寄存器组依据所述计数器的计数结果记录各个所述地址对所属的两个单事件在所述第一随机存储器中的写地址之差作为各个所述地址对对应的模块地址之差;
地址差判断子模块,用于依据所述寄存器组的记录,判断各个所述地址对应的模块地址之差是否位于模块视野的地址差范围以内;
第二单事件读取子模块,用于以在所述地址差判断子模块中判断结果为是的地址对作为符合地址对,按照所述符合地址对的两个写地址读取所述第二随机存储器中的两个单事件组成第一级空间符合对。
可选的,所述寄存器组包括为各个所述单事件设置的寄存器;其中,各个所述单事件的寄存器,用于存储所述寄存器所属的单事件在所述第二随机存储器中的写地址分别与其他单事件在所述第二随机存储器中的写地址组成的地址对,并存储所述寄存器所属的单事件在所述第一随机存储器中的写地址分别与其他单事件在所述第一随机存储器中的写地址之差。
与现有技术相比,本发明具有以下优点:
根据本发明实施例的技术方案,先按照时长不大于晶体死时间的时间段,对探测到的单事件分时间段标记,再分别对各个时间段进行空间符合和时间符合,具体地,对于一个时间段来说,先对该时间段内的每两个单事件进行空间符合,将彼此位于对方视野范围内的两个单事件组成初始符合对,再对每个初始符合对进行时间符合,将两个单事件之间的时间差在符合时间窗以内的初始符合对确定为目标符合对。因此,由于时间段的时长设置使得每个时间段内每个探测器模块和每个晶体都至多只能探测到一个单事件,这就使得每个时间段内的单事件可以先进行空间符合再进行时间符合,而无需先进行时间符合,因此,一方面,先空间符合再时间符合时,时间符合仅需针对已符合空间符合条件的事件对,而无需再对所有探测到的大量单事件按照发生时间进行排序并在排序后逐个单事件进行时间符合,这样就简化了实现符合对判定的算法,从而减少了对系统内逻辑资源的占用,并减少了在判定符合对过程中的系统消耗,另一方面,由于无需再对所有单事件进行时间排序,使得无需再对所有单事件的时间戳进行区分,而空间符合所需区分的探测器模块与晶体对地址的占用相对较少,这样就避免了系统RAM空间对地址的限制而导致单事件无法区分,从而避免了单事件的丢失。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明的发明人经过研究发现,现有的符合对判定方式之所以存在系统消耗大和单事件丢失的问题,原因在于符合对判定过程中的时间符合需要对所有探测到的大量单事件按照发生时间进行排序并在排序后逐个单事件进行时间符合,而之所以时间符合需要对所有单事件的发生时间进行排序并逐个单事件进行时间符合,原因在于现有的符合对判定方式是先进行时间符合再进行空间符合。
基于上述发现,本发明的主要思想在于:为了避免符合对判定过程对系统的消耗以及单事件的丢失,可以采用先进行空间符合再进行时间符合,而为了实现先空间符合再时间符合的符合对判定方式,需要保证一次空间符合所涉及的单事件在空间地址上需要彼此区分开,这也就相当于一次符合对判定过程所涉及的单事件在空间地址上需要彼此区分开,具体地说,在一次符合对判定过程中,同一探测器模块和同一晶体上都不能同时出现两个或两个以上的单事件,为此,可以使一次符合对判定过程仅处理一个时间段内探测到的单事件,当时间段的时长不大于晶体死时间时,每个探测器模块以及每个晶体都至多探测到一个单事件,从而便于对时间段内的单事件先进行空间符合再进行时间。这样,由于采用了先空间符合再时间符合的符合对判定方式,避免了对所有探测到的单事件按照时间排序和在排序后逐个单事件进行时间符合,这一方面简化了符合对判断的算法,减少了对系统内逻辑资源的占用,从而减少了系统消耗,另一方面区分单事件的空间位置相对于区分单事件的时间顺序对地址的占用相对较少,避免了系统RAM空间对地址的限制所导致的单事件无法区分,从而避免了单事件的丢失。
在介绍了本发明的主要思想以后,下面结合附图,详细说明本发明的各种非限制性实施方式。
参见图4,示出了本发明中符合对的判定方法一实施例的流程图。在本实施例中,所述方法例如具体可以包括如下步骤:
S401、对探测到的单事件分时间段标记;其中,每个时间段的时长不大于晶体死时间。
为了实现对探测到的单事件先进行空间符合再进行时间符合,需要使一次空间符合过程中涉及到的单事件在空间位置上能够区分开,也即,一次符合对判定过程所涉及的单事件在空间位置上需要区分开,具体地说,在一次符合对判定过程所涉及的单事件中,同一晶体上至多只能探测到一个单事件,同一探测器模块上至多也只能探测到一个单事件,这一方面能够使得空间符合时单事件不会由于处于同一空间位置而无法区分,从而避免单事件的丢失,另一方面能够使得空间符合时无需区分同一位置上的不同单事件,从而减少了系统的开销。
具体实现时,为了使得一次符合对判定过程中同一探测器模块和同一晶体上都至多仅产生一个单事件,可以设置时长不大于晶体死时间的时间段并按照时间段对探测到的单事件进行标记,这样一次符合对判定过程可以仅处理一个时间段内探测到的单事件。由于每个时间段的时长都不大于晶体死时间,而晶体死时间即是一个晶体探测到一个γ光子入射的单事件所需要的时间,也即同一晶体在不超过其死时间的时间段内至多只能探测到一个γ光子入射的单事件,所以使得每个时间段内探测器上每个晶体都至多仅能探测到一个单事件,从而保证了一次符合对判定过程所涉及的单事件可以在晶体位置上区分开。进一步而言,虽然一个探测器模块上具有多个晶体,但同一探测器模块在同一时间仅能处理其一个晶体上探测到的单事件,因此,当时间段不大于晶体死时间时,每个时间段内每个探测器模块也都至多仅能探测到一个单事件,从而保证了一次符合对判定过程所涉及的单事件可以在探测器模块位置上区分开。
需要说明的是,本实施例中,由于单事件是按照探测时间分时间段采集并进行符合对判定的,因此,如果时间段是连续的、首尾相接的情况下,也即时间段的衔接方式为以前一时间段的结束时刻作为后一时间段的开始时刻,那么那些两个单事件分别位于两个相邻的时间段内的符合对就无法被判定出来,从而造成了符合对的丢失,此时为了进一步获得足够的符合对就需要增加受检人接收辐射的时间。
为了避免符合对的丢失而缩短受检人接收辐射的时间,在本实施例的一些实施方式中,时间段的衔接方式例如可以是:在时间上相邻的前后两个时间段在相邻处具有重叠的时间段部分,所述重叠的时间段部分的时长不小于所述符合时间窗的时长。具体地说,在时间上相邻的前后两个时间段,可以把前一时间段尾部的一小段时间内的单事件放入后一时间段前部,此时,前一时间段的最后一小段与后一时间段的最初一小段是相重叠的。由于这一重叠的时间段的时长不小于符合时间窗的时长,而符合对中两个单事件之间的时间差不大于符合时间窗的时长,这就使得前后两个时间段相邻处的符合对的两个单事件都可以被标记到同一时间段(前一时间段与后一时间段中的任意一个)中,从而避免了符合对的丢失。例如,在一个具体的示例中,假设符合对判定过程对应的时间段的时长为200ns,符合时间窗的时长为6ns,那么对于每个时间段来说,其1ns~6ns可以是其上一时间段的194ns~200ns,其194ns~200ns可以是其下一时间段的1ns~6ns,也即,其1ns~6ns内的单事件可以是其上一时间段的194ns~200ns内的单事件,其194ns~200ns内的单事件可以是其下一时间段的1ns~6ns内的单事件。
S402、响应于当前时间段已标记结束,获取所述当前时间段内探测到的单事件。
具体实现时,随着探测器对单事件的探测过程中按照时间段对单事件的标记,当正在标记的当前时间段标记结束时,可以获取当前时间段内标记的所有单事件来进行一次符合对判定过程。
可以理解的是,由于需要对大量的单事件进行空间符合和时间符合的判定,对每个时间段内单事件的符合对判定过程通常需要消耗较长的处理时间,因此,如果当前时间段的符合对判定过程所消耗的处理时间已经超过了其下一时间段标记单事件的时间,为了使得无需等待当前时间段的符合对判定过程结束而能够及时对下一时间段的单事件进行符合对判定过程,在本实施例的一些实施方式中,可以采用多个处理流程并行循环处理各个时间段内单事件的符合对判定过程。具体地说,如图5所示的分段处理示例,当处理流程有M个时,按照时间段标记的顺序,可以将“Time1”时间段内的单事件输入给处理流程“Coin_thread1”处理,将接下来的“Time2”时间段内的单事件输入给处理流程“Coin_thread2”处理,以此继续,直至将接下来的“TimeM”时间段内的单事件输入给处理流程“Coin_threadM”处理,而在接下来的“TimeM+1”时间段内的单事件需要符合对判定处理时,“Coin_thread1”已完成对“Time1”时间段内单事件的处理而处于空闲状态,则可以将“TimeM+1”时间段内的单事件再输入给处理流程“Coin_thread1”处理,以此继续,从而保证所有时间段内的单事件都能够及时地得到符合对判定处理。
S403、对所述当前时间段内的每两个单事件进行空间符合,将彼此位于对方视野范围内的两个单事件组成初始符合对。
具体实现时,对于当前时间段内的单事件,可以将每两个单事件作为一个事件对,然后分别针对各个事件对,判断事件对的两个单事件在空间位置上是否位于对方视野范围之内,如果是,表明该事件对的两个单事件满足空间符合的条件,则可以将该事件对确定为初始符合对,如果否,表明该事件对的两个单事件不满足空间符合的条件,则可以拒绝将该事件对确定为初始符合对,并可以不再对该事件对进行后续的符合处理。
其中,当前时间段内的单事件所形成的事件对,具体是包括当前时间段内的每个单事件分别与其他各个单事件组成的事件对,例如,假设当前时间段内包括单事件A、B和C,则其形成的事件对则包括AB、AC和BC。
对于事件对在空间位置上是否满足视野范围之内的判断,具体可以是判断事件对的两个单事件之间的空间位置距离是否满足在探测器上探测器模块和/或晶体的视野范围的要求。具体地说,事件对的两个单事件之间的空间位置距离,可以通过该两个单事件的模块地址之差和/或晶体地址之差来表示,探测器模块的视野范围要求具体可以是要求事件对的模块地址之差所在的范围,晶体的视野范围要求具体可以是要求事件对的晶体地址之差所在的范围。其中,在探测器上,每个探测器模块具有自身的模块地址,每个晶体也具有自身的晶体地址;对于单事件而言,其模块地址即是其入射到的探测器模块的模块地址,其晶体地址即是其入射到的晶体的晶体地址。此外,对于探测器模块来说,相邻的几个探测器模块之间是没有符合线的,所以,如果两个探测器模块在对方视野范围之内,则两者的模块地址之差就属于一个数值范围之内,该数值范围即可以作为探测器模块的视野范围要求;类似的,对于晶体来说,相邻的几个晶体之间是没有符合线的,所以,如果两个晶体在对方视野范围之内,则两者的晶体地址之差就属于一个数值范围之内,该数值范围即可以作为晶体的视野范围要求。
S404、对每个初始符合对进行时间符合,将两个单事件之间的时间差在符合时间窗以内的初始符合对确定为目标符合对。
具体实现时,可以分别针对各个初始符合对,获取初始符合对的两个单事件的时间戳,再计算该两个单事件的时间戳之差,然后判断该两个单事件的时间戳之差是否在符合符合时间窗以内,如果是,表明该初始符合对的两个单事件满足时间符合的条件,也即该初始符合对同时满足了空间符合和时间符合的条件,此时则可以将初始符合对确定为目标符合对,如果否,表明该初始符合对的两个单事件不满足时间符合的条件,也即该初始符合对仅满足空间符合的条件但不满足时间符合的条件,此时则可以拒绝将该初始符合对确定为目标符合对。其中,单事件的时间戳即是在探测到单事件发生的时候记录的时间,具体地说,单事件的时间戳即是单事件发生的时间。此外,对两个单事件的时间戳之差的计算,具体可以是通过减法器来实现;对两个单事件的时间戳之差是否位于符合时间窗以内的判断,具体可以是通过比较器来实现。
需要说明的是,在本实施例中,由于符合对判定是先进行空间符合再进行时间符合的,空间符合过程需要基于大量的单事件进行符合判定,因此,在符合对判定时,系统的消耗主要是在空间符合过程。为了进一步减少系统开销,在本实施例的一些实施方式中,可以对空间符合过程做进一步优化。
例如,在本实施例的一些实施方式中,考虑到仅基于探测器模块的视野范围对事件对进行空间符合不够精确,而仅基于晶体的视野范围对事件对进行空间符合虽然精确但晶体编码展开后过大又导致系统开销过大,为了能够既保证空间符合精确又避免过大的系统开销,可以将空间符合过程分成两级,第一级先基于探测器模块的视野范围,第二级再基于晶体的视野范围。具体地,如图6所示,S403例如可以包括:
S601、基于所述当前时间段内各个单事件入射到的探测器模块,确定所述当前时间段内各个单事件的模块地址。
例如,图7所示的是一个展开成直线的探测器上探测器模块地址与晶体地址的分配示例,“Block”表示的是模块地址,假设探测环上一共有N个探测器模块,每个探测器模块的晶体地址,则Block的编码可以为0~N-1;需要注意的是,“Crystal address”表示的晶体在探测器模块中的地址,而并非表示晶体在整个展开的探测器上的位置的晶体地址,假设每个探测器模块横向(探测环的圆形剖面)上的晶体共有M个,则Crystal address的编码可以为0~M-1;可以理解的是,晶体地址具体可以是通过Block和Crystal address换算出来的,例如,假设Block的编码为0~N-1、Crystal address的编码为0~M-1,对于Block为a、Crystal address为b的晶体来说,其晶体地址具体可以是a*M+b。
S602、对于所述当前时间段内的每两个单事件,将模块地址之差位于模块视野的地址差范围以内的两个单事件组成第一级空间符合对。
具体实现时,对于当前时间段内的单事件,可以将每两个单事件作为一个事件对,然后分别针对各个单事件,判断事件对的两个单事件的模块地址之差是否位于模块视野的地址差距离范围以内,如果是,则可以将该事件对确定为第一级空间符合对,如果否,则可以拒绝将该事件对确定为第一级空间符合对,并可以不再对该事件对进行后续的符合处理。
考虑到第一级空间符合过程需要针对大量的单事件进行两两组合的符合判定,这使得第一级空间符合过程对系统硬件及系统逻辑的占用都较大。为了尽量减少第一级空间符合过程对系统硬件及系统逻辑的占用,在一些实施方式,例如可以通过两个随机存储器的读写控制以及计数器、寄存器组来实现第一级空间符合过程的符合判定。具体地,如图8所示,S603例如可以包括:
S801、以所述当前时间段内各个单事件的模块地址作为各个单事件在所述第一随机存储器中的写地址,将所述当前时间段内各个单事件存储到第一随机存储器中。
其中,第一随机存储器中的写地址数量与探测环上探测器模块的数量是相同的,第一随机存储器中的写地址编码与模块地址的编码也是相同的,例如,假设探测器上模块地址的编码为0~N-1,则第一随机存储器中例如可以设置有N个写地址,其写地址的编码可以为0~N-1。可以理解的是,各个单事件在存储到第一随机存储器中时,将被存储到与其模块地址的编码相同的写地址上,例如,假设一个单事件的模块地址为a,则该单事件将被存储到第一随机存储器中编码为a的写地址上。
S802、按照所述第一随机存储器中写地址从小到大的顺序,依次读取所述随机存储器中各个写地址上的数据,并将所述第一随机存储器中读取出的各个单事件,按照读取的顺序,依次存储到第二随机存储器中未存储数据的最小的写地址上。
具体地说,从第一随机存储器中读取数据时,是按照写地址从小到大的顺序,一个一个写地址进行读取的。例如,假设第一随机存储器中写地址的编码为0~M-1,则读取数据时,先读取写地址为0的数据,再读取写地址为1的数据,直至读取写地址为M-1的数据。
可以理解的是,每次从第一随机存储器中读取出的数据有两种可能,一种可能的数据为空,一种可能的数据为单事件,其中,读取出的数据为空还是单事件,取决于从第一随机存储器中读取的写地址是否存储了单事件。而当从第一随机存储器中读取出的数据为单事件时,则将该单事件存储到第二随机存储器中。对于每次从第一随机存储器中读取出的单事件,具体可以都是存储到第二随机存储器中未存储数据的最小的写地址上。例如,假设第一随机存储器中写地址从0开始编码,其写地址为0、2、3的数据为空,写地址为1的数据为单事件A,其写地址为4的数据为单事件B,并且,第二随机存储器中写地址也从0开始编码,则单事件A将被存储到第二随机存储器中编码为0的写地址上,单事件B将被存储到第二随机存储器中编码为1的写地址上。
S803、在从所述第一随机存储器中读取单事件到所述第二随机存储器的过程中,利用计数器对每两个相邻读取的单事件在所述第一随机存储器中的写地址之差进行计数而得到计数结果,利用寄存器组记录每两个单事件在所述第二随机存储器中的写地址所组成的地址对,并利用所述寄存器组依据所述计数器的计数结果记录各个所述地址对所属的两个单事件在所述第一随机存储器中的写地址之差作为各个所述地址对对应的模块地址之差。
在本实施方式中,单事件在第一随机存储器中的写地址实际上就相当于单事件的模块地址,因此,在从第一随机存储器中读取单事件的过程中,通过计数器对单事件读取出来之间相隔的写地址进行计数,计数结果也就是单事件的模块地址之差。
可以理解的是,为了减少系统逻辑的占用,可以仅利用一个计数器完成地址差的计数。具体地,计数器可以是对每两个相邻读取的单事件在第一随机存储器中的写地址之差进行计数而得到计数结果,每次完成计数之后计数器清零重启,再对下一对相邻读取的单事件在第一随机存储器中的写地址之差进行计数;对于每次计数器完成计数而得到的计数结果,可以在计数器清零之前更新到寄存器组中,以便寄存器组依据计数结果记录每两个单事件在第一随机存储器中的写地址之差,即模块地址之差。在寄存器组中,可以在各个单事件被存储到第二随机存储器中时,记录各个单事件在第二随机存储器中的写地址,并以每两个单事件在第二随机存储器中的写地址组成地址对,以便将各个事件对的模块地址之差与其地址对对应记录。对于当前被存储到第二随机存储器的当前单事件来说,寄存器组在记录当前单事件在第二随机存储器中的写地址之后,可以将当前单事件在第二随机存储器中的写地址分别与各个之前已记录的单事件在第二随机存储器中的写地址组成当前地址对,然后再将计数器的当前计数结果累加到寄存器组中,得到各个当前地址对的事件对的模块地址之差,并将各个当前地址对与其模块地址之差对应记录,以便后续通过寄存器组记录的模块地址之差来实现基于模块地址的空间符合判定,以及通过寄存器组记录的地址对来实现从第二随机存储器中读取第一级空间符合对。
在一些实施方式中,为了进一步减少系统逻辑的占用,寄存器组中的寄存器数量可以是当前时间段内的单事件数量,即寄存器组例如包括的可以是为各个单事件设置的寄存器。其中,各个所述单事件的寄存器,可以用于存储所述寄存器所属的单事件在所述第二随机存储器中的写地址分别与其他单事件在所述第二随机存储器中的写地址组成的地址对,并存储所述寄存器所属的单事件在所述第一随机存储器中的写地址分别与其他单事件在所述第一随机存储器中的写地址之差。
对于计数器与寄存器组,在具体实现地址对与模块地址之差的计数与存储时,例如可以通过以下的步骤流程来实现:
步骤A、从第一随机存储器未读取过的写地址中,读取最小一个写地址上的数据作为当前数据,并在计数器已启动的情况下,控制计数器的计数结果加1,直至第一随机存储器的所有写地址都读取完毕。
在步骤A完成之后,可以根据当前数据选择进入步骤B或步骤C。
步骤B、响应于当前数据为空,返回步骤A。
步骤C、响应于当前数据为单事件,以当前数据为当前单事件,将当前单事件存储到第二随机存储器中未存储数据的最小一个写地址上。
步骤D、为当前单事件设置一个寄存器,并将当前单事件在第二随机存储器中的写地址存入当前单事件的寄存器。
在步骤D执行完成之后,可以根据当前单事件选择进入步骤E或步骤F。
步骤E、响应于当前单事件是首个从第一随机存储器中读出的单事件,启动计数器,并返回步骤A。
步骤F、响应于当前单事件不是首个从第一随机存储器中读出的单事件,将当前单事件在第二随机存储器中的写地址更新到各个此前已读取的单事件的寄存器中,以便各个此前已读取的单事件的寄存器中记录各个此前已读取的单事件在第二随机存储器中的写地址分别与当前单事件在第二随机存储器中的写地址所组成的地址对。
步骤G、将计数器的计数结果更新到各个此前已读取的单事件的寄存器中,以便各个此前已读取的单事件的寄存器中累计该计数结果之后得到各个此前已读取的单事件分别与当前单事件的模块地址之差并记录。
步骤H、将计数器的计数结果清零,返回步骤A。
可以理解的是,在各个寄存器中,实际上存储的是两个第二随机存储器中的写地址组成的地址对以及与地址对对应的模块地址之差。当步骤G执行之后,寄存器中更新出新的地址对和与新地址对对应的模块地址之差,则可以进入S804,以便对寄存器中记录的模块地址之差判断是否位于模块视野的地址差范围以内的第一级空间符合判定,以及对于那些符合第一级空间符合判定的模块地址之差,可以依据寄存器中记录的与该模块地址之差对应的地址对去读取第二随机存储器中相应写地址上存储的两个单事件组成第一级空间符合对。
例如,假设当前单事件为C,此前已读出的单事件有A和B,A、B、C在第二随机存储器中写地址分别为0、1、2,计数器对A和B之间地址差的计数结果为m,计数器对B和C之间地址差的计数结果为n,此时,读取C之后,A的寄存器中的记录包括由写地址0和1组成的地址对以及该地址对对应的模块地址之差为m、由写地址0和2组成的地址对以及该地址对对应的模块地址之差为m+n,B的寄存器中的记录有由写地址1和2组成的地址对以及该地址对对应的模块地址之差为n,C的寄存器中的记录则包括写地址2。
S804、依据所述寄存器组的记录,判断各个所述地址对应的模块地址之差是否位于模块视野的地址差范围以内,并以判断结果为是的地址对作为符合地址对,按照所述符合地址对的两个写地址读取所述第二随机存储器中的两个单事件组成第一级空间符合对。
可以理解的是,有些情况下,寄存器组会同时更新出多个地址对及其对应的模块地址之差,为了便于同时更新出的多个地址对进行基于模块视野的第一级空间符合判定,可以设置一个第一缓存FIFO1,用于缓存寄存器组同时更新出的多个地址对及其对应的模块地址之差,以便输出执行地址对应的模块地址之差是否位于模块视野的地址差范围以内的判断;以及,还可以设置一个第二缓存FIFO2,用于缓存同时判断出的符合地址对,以输出执行从第二随机存储器中第一级空间符合对的读取。具体地,当第一缓存FIFO1不为空时,就启动第一级空间符合判定的功能模块执行对模块地址之差的判断,当第二缓存FIFO2不为空时,就启动第二随机存储器读取第二缓存FIFO2中的符合地址对。
针对图8所示的第一级空间符合方式(即基于模块地址的空间符合过程),图9示出了一种硬件的功能框架示例,其中,“RAM1”为第一随机存储器,“RAM2”为第二随机存储器,“地址差组”为寄存器组,“数据判断”用于分辨从RAM1中读取出的数据为空、首次读取的单事件还是非首次读取的单事件,“空间符合第一级判定”用于判断模块地址之差是否位于模块视野的地址差范围以内。
接着返回图6所示的实施方式。S602执行完成之后,可以进入S603的执行。
S603、基于各个所述第一级空间符合对的两个单事件入射到的晶体,确定各个所述第一级空间符合对的两个单事件的晶体地址。
可以理解的是,为了避免直接晶体地址标记单事件而导致的地址编码过大、系统开销大的问题,在本实施方式中,单事件的晶体地址可以是通过如图7所示的Block和Crystal address而换算得到,并且晶体地址仅针对有属于第一级空间符合对的单事件而换算。
S604、对于每个第一级空间符合对,将两个单事件的晶体地址之差位于晶体视野的地址差范围以内的第一级空间符合对确定为第二级空间符合对,所述第二级空间符合对为所述初始符合对。
具体实现时,可以针对各个第一级空间符合对,计算第一级空间符合对的两个单事件的晶体地址之差,再判断该两个单事件的晶体地址之差是否位于晶体视野的地址差范围以内,如果是,表明该第一级空间符合对的两个单事件满足基于晶体地址的空间符合的条件(即完全满足空间符合的条件),此时则可以将第一级空间符合对确定为第二级空间符合对(即初始符合对),如果否,表明该第一级空间符合对的两个单事件不满足第二级空间符合的条件(即不满足空间符合的条件),此时则可以拒绝将该第一级空间符合对确定为第二级空间符合对(即初始符合对)。其中,对两个单事件的晶体地址之差的计算,具体可以是通过减法器来实现;对两个单事件的晶体地址之差是否位于晶体视野的地址差范围以内的判断,具体可以是通过比较器来实现。
需要说明的是,本实施方式中是采用了先基于模块地址的第一级空间符合再基于晶体地址的第二级空间符合这样两步判定来实现最终的空间符合判定,而基于模块地址的空间符合本身不够精确,因此,如果基于模块视野的地址差范围太严格则可能会导致符合对的丢失。为了避免这种情况下的符合对丢失,在一些实施方式中,模块视野的地址差范围相对于晶体视野的地址差范围更为宽松。具体地,模块视野的地址差范围与晶体视野的地址差范围例如可以按照如下方式设置:
所述模块视野的地址差范围为:
所述晶体视野的地址差范围为:x<b<n·m-x;
其中,所述a为两个单事件的模块地址之差,所述b为两个单事件的晶体地址之差,所述m为探测器横向上的探测器模块数量,所述n为探测器横向上的晶体数量,所述x为探测器横向上彼此间没有符合线的、距离最远的两个晶体之间相隔的晶体数量,所述[x/m]表示x/m的计算结果取整数。对于x,具体地说,探测器横向上,晶体地址之差为x的晶体之间没有符合线,晶体地址之差为x+1的晶体之间具有符合线。
接着返回图4所示的实施例。
通过本实施例的技术方案,由于采用了先空间符合再时间符合的符合对判定方式,避免了对所有探测到的单事件按照时间排序和在排序后逐个单事件进行时间符合,这一方面简化了符合对判断的算法,减少了对系统内逻辑资源的占用,从而减少了系统消耗,另一方面区分单事件的空间位置相对于区分单事件的时间顺序对地址的占用相对较少,避免了系统RAM空间对地址的限制所导致的单事件无法区分,从而避免了单事件的丢失。
在介绍了本发明中示例性的方法之后,接下来对本发明示例性实施方式的、用于符合对判定的设备进行介绍。
参见图10,示出了本发明中符合对的判定设备一实施例的结构图。在本实施例中,所述设备例如具体可以包括:
分段标记模块1001,用于对探测到的单事件分时间段标记;其中,每个时间段的时长不大于晶体死时间;
单事件获取模块1002,用于响应于当前时间段已标记结束,获取所述当前时间段内探测到的单事件;
空间符合模块1003,用于对所述当前时间段内的每两个单事件进行空间符合,将彼此位于对方视野范围内的两个单事件组成初始符合对;
时间符合模块1004,用于对每个初始符合对进行时间符合,将两个单事件之间的时间差在符合时间窗以内的初始符合对确定为目标符合对。
可选的,在本实施例的一些实施方式中,在时间上相邻的前后两个时间段在相邻处可以具有重叠的时间段部分,所述重叠的时间段部分的时长不小于所述符合时间窗的时长。
可选的,在本实施例的另一些实施方式中,如图11所示,所述空间符合模块1003例如具体可以包括:
第一地址确定子模块1101,用于基于所述当前时间段内各个单事件入射到的探测器模块,确定所述当前时间段内各个单事件的模块地址;
第一级空间符合子模块1102,用于对于所述当前时间段内的每两个单事件,将模块地址之差位于模块视野的地址差范围以内的两个单事件组成第一级空间符合对;
第二地址确定子模块1103,基于各个所述第一级空间符合对的两个单事件入射到的晶体,确定各个所述第一级空间符合对的两个单事件的晶体地址;
第二级空间符合子模块1104,用于对于每个第一级空间符合对,将两个单事件的晶体地址之差位于晶体视野的地址差范围以内的第一级空间符合对确定为第二级空间符合对,所述第二级空间符合对为所述初始符合对。
可选的,在本实施例的又一些实施方式中,结合前述图11所示的空间符合模块1003的实施方式,
所述模块视野的地址差范围例如具体可以为:
所述晶体视野的地址差范围例如具体可以为:x<b<n·m-x;
其中,所述a为两个单事件的模块地址之差,所述b为两个单事件的晶体地址之差,所述m为探测器横向上的探测器模块数量,所述n为探测器横向上的晶体数量,所述x为探测器横向上彼此间没有符合线的、距离最远的两个晶体之间相隔的晶体数量,所述[x/m]表示x/m的计算结果取整数。
可选的,在本实施例的再一些实施方式中,结合前述图11所示的空间符合模块1003的实施方式,如图12所示,所述第一级空间符合子模块1102例如具体可以包括:
第一单事件存储子模块1201,用于以所述当前时间段内各个单事件的模块地址作为各个单事件在所述第一随机存储器中的写地址,将所述当前时间段内各个单事件存储到第一随机存储器中;
第一单事件读取子模块1202,用于按照所述第一随机存储器中写地址从小到大的顺序,依次读取所述随机存储器中各个写地址上的数据;
第二单事件存储子模块1203,用于将所述第一随机存储器中读取出的各个单事件,按照读取的顺序,依次存储到第二随机存储器中未存储数据的最小的写地址上;
计数子模块1204,用于在从所述第一随机存储器中读取单事件到所述第二随机存储器的过程中,利用计数器对每两个相邻读取的单事件在所述第一随机存储器中的写地址之差进行计数而得到计数结果;
寄存子模块1205,用于在从所述第一随机存储器中读取单事件到所述第二随机存储器的过程中,利用寄存器组记录每两个单事件在所述第二随机存储器中的写地址所组成的地址对,并利用所述寄存器组依据所述计数器的计数结果记录各个所述地址对所属的两个单事件在所述第一随机存储器中的写地址之差作为各个所述地址对对应的模块地址之差;
地址差判断子模块1206,用于依据所述寄存器组的记录,判断各个所述地址对应的模块地址之差是否位于模块视野的地址差范围以内;
第二单事件读取子模块1207,用于以在所述地址差判断子模块1206中判断结果为是的地址对作为符合地址对,按照所述符合地址对的两个写地址读取所述第二随机存储器中的两个单事件组成第一级空间符合对。
可选的,在本实施例的又再一些实施方式中,结合前述图12所示的第一级空间符合子模块1102的实施方式,所述寄存器组例如具体可以包括为各个所述单事件设置的寄存器;其中,各个所述单事件的寄存器,可以用于存储所述寄存器所属的单事件在所述第二随机存储器中的写地址分别与其他单事件在所述第二随机存储器中的写地址组成的地址对,并存储所述寄存器所属的单事件在所述第一随机存储器中的写地址分别与其他单事件在所述第一随机存储器中的写地址之差。
通过本实施例的技术方案,由于采用了先空间符合再时间符合的符合对判定方式,避免了对所有探测到的单事件按照时间排序和在排序后逐个单事件进行时间符合,这一方面简化了符合对判断的算法,减少了对系统内逻辑资源的占用,从而减少了系统消耗,另一方面区分单事件的空间位置相对于区分单事件的时间顺序对地址的占用相对较少,避免了系统RAM空间对地址的限制所导致的单事件无法区分,从而避免了单事件的丢失。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于设备实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。