SUB_DETECTOR=0xbb1234bb,///<子探测器标记
FULL_EVENT=0xaa1234aa///<完整事例标记
};
✧Fragmentsize和Headersize顾名思义,前者是整个事例片断的大小,包括头部和数据,后者只是头部的大小。
两者均以字为单位计数。
✧FormatversionNumber,事例格式的版本号。
目前最新的事例格式版本号是3.0,不同版本的事例格式有略微区别。
当处理到有区别的地方时,软件会做版本号的判断,以防止程序出错。
✧Sourceidentifier,该域指明了事例的来源。
如它包含了两部分信息:
子探测器ID号和模块ID号。
这两个值的组合在整个BES
DAQ软件中能唯一标明事例来源。
表1Sourceidentifier格式
字节位置
3
2
1
0
内容
保留
子探测器ID号
模块ID号
子探测器ID已经事先静态分配了,如表2所示。
由于事例筛选将追加数据到事例数据中,追加的数据内容以一个单独的子探测片断的方式添加,该片断的子探测器ID定义为0x7C,Sourceidentifier一般为0x7C0000。
表2子探测器ID号定义
探测器类型
EF
MDC
TOF
EMC
MUC
TRG
ID值
0x7C
0xA1
0xA2
0xA3
0xA4
0xA5
在ROB和ROD一级,模块ID号也就是PowerPC的编号。
✧Numberofstatuselements,statuselement的数目。
✧Statuselement,描述了事例片断中数据的状态。
该字段由构造这个事例片断的软件模块负责定义和填写。
✧Numberoffragmentspecific,专用部分的数目。
✧Specificelement,每个element占据4个字节,不同的事例片断有不同的专用部分,详细介绍见后节各个字段说明。
1.3ROD片段格式
ROD的事例片断结构如图5所示,一共分为三个部分。
具体的字段的格式如表3所示,头部各字段和其它片段类似。
但在ROD还有一个尾部字段,如果状态项目位置为0,则在数据区中状态字段位于数据块的前面;如果该值为1,则反过来放置这两个部分。
表3ROD片断格式
0xEE1234EE
头长度
数据格式版本号
事例来源
Run号
触发号
保留
保留
保留
状态单元1
.
数据单元1(32位)
.
.
.
状态字段单元数量
数据字段单元数量
状态字段位置=0
图5ROD的事例片断结构
1.4其他片段格式
1.4.1ROB对ROD的封装
ROBFragment的格式如表4所示。
表4ROB格式
0xDD1234DD
总长度
头长度
数据格式版本号
事例来源
状态字段单元数量
状态单元1
..
..
专有字段数量=0
子片断(只有一个ROD)
1.4.2读出PC级(ROS)
ROSFragment的格式如表5所示。
表5ROS格式
0xCC1234CC
总长度
头长度
数据格式版本号
事例来源
状态单元数量
状态单元1
..
专有字段数量=3
Run号
保留
触发号
子片段(ROBs)
…
…
1.4.3探测器级Sub-detector
SubDetectorFragment的格式如表6所示。
表6Sub-detector格式
0xBB1234BB
总长度
头长度
数据格式版本号
事例来源
状态记录数量
状态单元1
..
专有字段数量=0
子片段(ROSs)
…
…
1.4.4完整事例
FullEventFragment格式如表7所示:
表7FullEventFragment格式
0xAA1234AA
总长度
头长度
数据格式版本号
事例来源
状态字段单元数量
状态单元1
.
.
专有字段单元数量=10
事例组装时间(秒自1970.1.100:
00:
00)
Globaleventid(Run内事例号)
Run号
Level1ID
保留
保留
事例筛选标记1
事例筛选标记2
事例筛选标记3
事例筛选标记4
子片段(SubDetectors)
..
2数据单元格式
BESIIIDAQ系统在线数据的数据单元均为32位(四个字节)的数据,不同的子探测器单元格式的表示不同,分别说明如下:
2.1MDC
表7所示为MDC的数据单元格式,其中第26-31位为层号,这6位数值的1-31表示第1-31层(第31位为0),第18-25位为对应层的丝号;由于MDC部分外层的信号丝数大于255,所以从第32层开始,即26-31位的值大于31时,改由第27-31位表示层号(第31位为1),这五位的值加16就是其实际的层号,第18-26位表示丝号。
表7MDC数据单元格式
二进制位
31~26
25~18
17
16
15~0
位数
6
8
1
1
16
数据内容
层
丝
T/Q
溢出
ADC/TDC值
1~31
二进制位
31~27
26~18
位数
5
9
1
1
16
数据内容
层+16
丝
T/Q
溢出
ADC/TDC值
32~43
2.2TOF
如表8所示为TOF的数据单元格式,其中第25-26位区分层号,1表示第1层,2表示第2层,3表示端盖。
第18-24位区分单元号,1-88分别表示桶部第1-88个单元,1-48分别表示端盖第1-48个单元。
另外0表示东、1表示西;0表示T,1表示Q。
表8TOF数据单元格式
二进制位
31~28
27
26
25
24~18
17
16
15~0
位数
4
1
2
7
1
1
16
数据
保留
东/西
层
单元
T/Q
溢出
ADC/TDC值
2.3EMC
如表9所示为EMC的数据单元格式,其中第26-30位代表每一圈晶体的位置,1-22表示桶部晶体第1-22圈,23-28表示端盖晶体第1-6圈。
第19-25位代表每一块晶体在该圈中的位置,1-120表示桶部第1-120块晶体,1-64(64、80、80、96、96)表示端盖第1-64(64、80、80、96、96)块晶体。
0表示东、1表示西。
表9EMC数据单元格式
二进制位
31
30~26
25~19
18~13
12~11
10~0
位数
1
5
7
6
2
11
数据内容
东/西
圈
晶体
时间信息
量程
电荷信息
2.4MUC
如表10所示为MUC的数据单元格式。
表10MUC数据单元格式
二进制位
31~26
25~16
15~0
位数
6
10
16
数据内容
保留
FEC地址
FEC数据
3数据文件结构
3.1文件名
/___file.data
●path:
文件存放路径
●applicationname:
写此文件的应用程序名
●tag:
用户自定义标记,在DAQ软件界面上配置
●runnumber:
Run号
●filenumber:
此文件在本次Run中的编号
3.2文件结构
目前BESIIIDAQ系统采用的数据文件格式,基于ATLASTDAQ软件的数据格式,文件格式组成部分及排列方式如图6所示。
图6数据文件格式组成图
各个字段的具体定义如表8所示:
表8数据文件字段定义
标记
类型
备注
file_start_record
marker
U32
0x1234aaaa
record_size
U32
本段标记长度(字)
version
U32
文件格式版本
file_number
U32
文件编号
date
U32
写文件日期
time
U32
写文件时间
sizeLimit_dataBlocks
U32
最大事例数
sizeLimit_MB
U32
最大文件大小(MB)
file_name_strings
marker
U32
0x1234aabb
length
U32
应用程序名长度(Byte)
appName
string
应用程序名(补空格32位对齐)
length
U32
用户自定义标记长度(Byte)
fileNameTag
string
用户自定义标记(32位对齐)
run_parameters_record
marker
U32
0x1234bbbb
record_size
U32
本段标记长度(字)
run_number
U32
Run号
max_events
U32
最大事例数
rec_enable
U32
是否记录
trigger_type
U32
触发类型
detector_mask
U32
FromIS.
beam_type
U32
FromIS.
beam_energy
U32
FromIS.
data_separator_record
marker
U32
0x1234cccc
record_size
U32
本段标记长度(字)
data_block_number
U32
Run内事例编号
data_block_size
U32
事例大小(Byte)
file_end_record
marker
U32
0x1234dddd
record_size
U32
本段标记长度(字)
Date
U32
文件关闭日期
Time
U32
文件关闭时间
events_in_file
U32
文件内事例数
data_in_file
U32
文件大小(MB)
events_in_run
U32
本Run内事例数
data_in_run
U32
本Run内数据量(MB)
status
U32
非零标记本Run的最后一个文件
end_marker
U32
0x1234eeee
3.3文件示例
在本示例中,为了便于观察,整个Run将只有2个事例,文件也被配置成最多只能存2个事例。
这样一来将会有两个事例文件,第一个存有2个事例,第二个只有文件结构没有数据。
事例的内部构成如下:
FullEvent
SubDetector(MDC)
ROS
ROB(ROD)
ROB(ROD)
ROB(ROD)
ROB(ROD)
ROS
ROB(ROD)
ROB(ROD)
ROB(ROD)
ROB(ROD)
SubDetector(TOF)
ROS
ROB(ROD)
ROB(ROD)
SubDetector(EMC)
ROS
ROB(ROD)
ROB(ROD)
ROB(ROD)
SubDetector(MUC)
ROS
ROB(ROD)
存储文件的内容如下:
[jak@daqs2]SFOdata>xxd–g4–c32daq_SFO-1_testbyjak_0001006_file01.data
(如下数据按照字节序排列,每四个字节一组。
数据为littleendian格式,即aaaa3412表示的32位整型为0x1234aaaa)
0000000:
aaaa341208000000020000000100000017d131014da902000000000000000000
0000020:
bbaa34120500000053464f2d3120202000000000bbbb341209000000ec030000
0000040:
000000000000000000000000000000000000000000000000cccc341204000000
0000060:
010000001c070000aa3412aac701000012000000000000030150790001000000
0000080:
000000000a0000006e8b284600000000ec030000000000000000000000000000
00000a0:
00000000000000000000000000000000bb3412bbe60000000800000000000003
00000c0:
0150a100010000000000000000000000cc3412cc6f0000000b00000000000003
00000e0:
0100a100010000000000000003000000ec0300000000000000000000dd3412dd
0000100:
190000000a000000000000030c00a20003000000000000000000000000000000
0000120:
00000000ee3412ee09000000000000030c00a200000000000000000000000000
0000140:
02000000a1000000000000000000000000000000010000000200000000000000
0000160:
dd3412dd190000000a000000000000030d00a200030000000000000000000000
0000180:
0000000000000000ee3412ee09000000000000030d00a2000000000000000000
00001a0:
0000000002000000a10000000000000000000000000000000100000002000000
00001c0:
00000000dd3412dd190000000a000000000000030e00a2000300000000000000
00001e0:
000000000000000000000000ee3412ee09000000000000030e00a20000000000
0000200:
000000000000000002000000a100000000000000000000000000000001000000
0000220:
0200000000000000dd3412dd190000000a000000000000030f00a20003000000
0000240:
00000000000000000000000000000000ee3412ee09000000000000030f00a200
0000260:
00000000000000000000000002000000a1000000000000000000000000000000
0000280:
010000000200000000000000cc3412cc6f0000000b000000000000030100a100
00002a0:
010000000000000003000000ec0300000000000000000000dd3412dd19000000
00002c0:
0a000000000000031000a5000300000000000000000000000000000000000000
00002e0:
ee3412ee09000000000000031000a50000000000000000000000000002000000
0000300:
a1000000000000000000000000000000010000000200000000000000dd3412dd
0000320:
190000000a000000000000031100a50003000000000000000000000000000000
0000340:
00000000ee3412ee09000000000000031100a500000000000000000000000000
0000360:
02000000a1000000000000000000000000000000010000000200000000000000
0000380:
dd3412dd190000000a000000000000031200a500030000000000000000000000
00003a0:
0000000000000000ee3412ee09000000000000031200a5000000000000000000
00003c0:
0000000002000000a10000000000000000000000000000000100000002000000
00003e0:
00000000dd3412dd190000000a000000000000031300a5000300000000000000
0000400:
000000000000000000000000ee3412ee09000000000000031300a50000000000
0000420:
000000000000000002000000a100000000000000000000000000000001000000
0000440:
0200000000000000bb3412bb4500000008000000000000030150a20001000000
0000460:
0000000000000000cc3412cc3d0000000b000000000000030100a20001000000
0000480:
0000000003000000ec0300000000000000000000dd3412dd190000000a000000
00004a0:
000000031400a1000300000000000000000000000000000000000000ee3412ee
00004c0:
09000000000000031400a10000000000000000000000000002000000a2000000
00004e0:
000000000000000000000000010000000200000000000000dd3412dd19000000
0000500:
0a000000000000031500a1000300000000000000000000000000000000000000
0000520:
ee3412ee09000000000000031500a10000000000000000000000000002000000
0000540:
a2000000000000000000000000000000010000000200000000000000bb3412bb
0000560:
5e00000008000000000000030150a300010