Implementation of the ATLAS Run 2 event data model. Issue 7 (December 2015) - Buckley, A; Eifert, T; Elsing, M; Gillberg, D; Koeneke, K; Krasznahorkay, A; Moyse, E; Nowak, M; Snyder, S; van Gemmeren, P
Abstract: During the 2013-2014 shutdown of the Large Hadron Collider, ATLAS switched to a new event data model for analysis, called the xAOD. A key feature of this model is the separation of the object data from the objects themselves (the 'auxiliary store'). Rather than being stored as member variables of the analysis classes, all object data are stored separately, as vectors of simple values. Thus, the data are stored in a 'structure of arrays' format, while the user still can access it as an 'array of structures'. This organization allows for on-demand partial reading of objects, the selective removal of object properties, and the addition of arbitrary user- defined properties in a uniform manner. It also improves performance by increasing the locality of memory references in typical analysis code. The resulting data structures can be written to ROOT files with data properties represented as simple ROOT tree branches. This paper focuses on the design and implementation of the auxiliary store and its interaction with ROOT.