The Physics eXtension Library (PXL) is a class collection for the advanced level analysis in a high energy physics experiment. PXL classes are based on the ANSI C language standard together with the Standard Template Library (STL).
The user command syntax of PXL is designed to support experienced users as well as newcomers in developing their own analysis, reaching from simple selection algorithms to most complex multi-process analyses with solving the reconstruction of ambiguous decay trees from the final state objects measured in a detector.
During the reconstruction of a high energy physics data event, PXL enables storing all event information in pxl::Object such as particles, vertices, collisions. Each of these objects allows for storing all information users need to keep for their analysis.
In addition, the program allows users to include self defined C PXL classes in order to maintain structures of analysis specific event information. Between all such objects relations can be established, for example to build particle decay trees.
At this level PXL objects contain single aspects of an individual event. In order to maintain information about a whole process, PXL provides the building block pxl::EventView. The latter is a generalized event container where beyond the aforementioned physics objects user information can be stored as well.
Beyond providing the relation management for building up the decayed trees, PXL enables duplicating an already filled event container with all particles, relations and user information. This allows users, e.g., to comfortably build all ambiguous reconstruction versions in a reconstruction procedure of a decay tree from final state particles.
In order to keep CPU and memory consumption small, PXL employs here a copy-on-write mechanism (COW). Using COW principles one can gain several 100% in reconstruction performance of a complex decay tree, and keep memory space at the MByte level.
PXL provides a class for storing and retrieving a snapshot of the user physics analysis, where a data compression algorithm is applied based on the ZLIB data compression library.