Dr Jiaheng Zou (IHEP)Prof. Weidong Li (IHEP)Prof. Xingtao Huang (SDU)
SNiPER (the abbreviation of Software for Non-collider Physics ExpeRiments) has been developed based on common requirements from both cosmic ray and nuclear reactor neutrino experiments. This contribution will introduce the detailed design and implementation of the SNiPER software. Compared to the existing offline software frameworks in the high energy physics domain, the design of SNiPER is more focused on efficiency and flexibility. It contains a compact kernel for software components management, job configuration, event execution control, input/output data flow, etc. Both event data model and in-memory data management can be customized by different applications. In SNiPER, a job is composed of one or more low coupling tasks, and various services and algorithms can be specified in each task. By using this kind of structure, both multiple I/O streams and conditional execution of algorithm subsets can be easily realized. In order to facilitate event correlation analysis (a necessity for non-collider physics experiments), the FIFO buffer is used to store adjacent events and a sophisticated method of memory updating is applied, so that accessing to successive events within the user-defined window according to event timestamp becomes possible. The SNiPER also supports concurrent computing by running multi-threads concurrently with a single job. Currently a nascent product of SNiPER has been released and is being used by the JUNO and LHAASO experiments. The practices show that the software architecture is universal and expandable, and SNiPER can be used by non-collider physics experiments to build their offline data analysis and processing systems.