N元组
本章描述用于创建和操作元组(与事件关联的值集)的函数。n元组存储在文件中。它们的值可以用任意组合提取,并使用选择函数在直方图中记录。
要存储的值保存在用户定义的数据结构中,创建一个n元组将该数据结构与文件关联起来。然后使用下面描述的n元组函数将值写入文件(通常在一个循环中)。
可以通过提供一个选择函数和一个值函数从n元组数据中创建直方图。选择函数指定是否应该将事件包含在要分析的子集中。值函数为每个事件计算要添加到柱状图的条目。
所有的n元组函数都定义在头文件gsl_ntuple.h中。
26.1 n元组结构体
gsl_ntuple
使用gsl_ntuple结构体操作n元组。这个结构体包含了关于存储n元组数据的文件的信息,一个指向当前n元组数据行的指针和用户定义的n元组数据结构体的大小:
typedef struct { FILE * file; void * ntuple_data; size_t size; } gsl_ntuple; |
26.2 创建n元组
gsl_ntuple * gsl_ntuple_create(char * filename, void * ntuple_data, size_t size)
本函数为大小为size的元组创建一个新的只写元组文件filename,并返回一个指向新创建的元组结构的指针。任何具有相同名称的现有文件都会截断为零长度并被覆盖。必须提供一个指向当前元组行ntuple_data的内存指针——该指针用于将元组复制入和复制出文件。
26.3 打开一个存在的n元组文件
gsl_ntuple * gsl_ntuple_open(char * filen ame, void * ntuple_data, size_t size)
本函数打开一个现有的n元组文件filename为了读取,并返回一个指向相应n元组结构体的指针。文件中的元组必须有大小size。必须提供一个指向当前元组行ntuple_data的内存指针——该指针用于将元组复制入和复制出文件。
26.4 写n元组
int gsl_ntuple_write(gsl_ntuple * ntuple)
本函数将当前大小为ntuple->size的ntuple->ntuple_data写入相应的文件。
int gsl_ntuple_bookdata(gsl_ntuple * ntuple)
本函数与gsl_ntuple_write()的一样。