MINOS Persistency Package Rationale
Contents
| Name: |
Persistency |
| Acronym: |
Per |
Sue Kasahara
schubert@hep.umn.edu
The purpose of the Persistency package is to manage the input/output of data
to permanent storage, such as is required by the Reconstruction and Analysis
jobs. It makes use of the ROOT persistency tools but
hides the details of interacting with these tools from the user.
The persistency package will have as clients both the official production
reconstruction jobs and individual user reconstruction and analysis jobs.
(to be completed)
- Per.
The Per class has general utility data members and static methods for use
by the persistency package.
- File management classes:
- PerFileManager, PerFileMember.
PerFileManager is a singleton file manager class used to open and
close files. Together with its helper class PerFileMember, it keeps track
of the files which are open, their access mode, and the number of clients
of each file. A UML diagram
showing PerFileManager and its helper class PerFileMember follows:
A full class diagram of the PerFileManager and PerFileMember classes
is shown here .
- Stream management classes:
- PerStreamManager, PerInputStreamManager, PerOutputStreamManager.
PerInputStreamManager and PerOutputStreamManager (each of which derive
from PerStreamManager) are singleton input and output stream managers
respectively. They manage the I/O from a set of PerStreams. They have
the ability to enable or disable any PerStream in their set.
- PerStream, PerInputStream, PerOutputStream.
PerInputStream and PerOutputStream (each of which derive from PerStream)
manages the I/O from a single ROOT TTree. They maintain a set of
PerStreamBranches specific to that TTree. They have the ability to
enable to disable any PerStreamBranch in their set.
- PerStreamBranch.
PerStreamBranch manages the I/O from a single ROOT TBranch.
A full class diagram of the Stream management classes is shown
here .
A partial class diagram for the persistency package follows:
Partial List (to be completed)
- Requirements for stream (tree) I/O management (a stream in abstract terms
is a collection of related objects. Its implementation is through a
ROOT TTree data structure with a 1:1 relationship between TTree's and
streams.) :
- Provide support for managing random read and sequential read/write
(provided by TTree data structure).(1)
- Support partial I/O of entries in any one stream (tree branches can
be disabled/enabled).(1)
- Support methods by which users can enable/disable streams.(1)
- Support synchronized I/O of entries spread out over multiple streams.(1)
- Provide consistency check (via unique identification stamp) between
different streams to check the validity of combining user-specified
input data streams.(2)
- Requirements for stream (tree) structure and creation:
- "Hard-wired" tree structures either for input or output streams should
be avoided. (1)
- Provide tools by which users can create their own tree to be used for
output streams.(1)
- Provide support for generic object branches to hold objects deriving
from TObject (including TObjectArrays).(1)
- Provide support for clonesarray branches to hold TClonesArray objects.(2)
- Provide support for reconstructing the tree structure "on-the-fly" at
input. Stream structure is rebuilt from information stored in the
file about the number of branches, their type, and the class of objects
stored on each branch.(1)
- Requirements for file management:
- Provide support for n:1 relationships between streams (TTrees) and files,
such that multiple streams may be stored in the same file or be
spread out over multiple files. (1)
- Provide access to remote and local files "transparently" (with
minimal distinction to user). (1)
- Provide the ability to open files "on-the-fly" during an analysis or
reconstruction job. (2)
Use Case: User may filter events according to an event summary data
stream before deciding to access the full reconstruction data stream,
stored in a separate file.
Last modified : Dec 14 2000
Path is http://www.hep.umn.edu/~schubert/persistency/packrat/per_packrat.html
Contact:
Sue Kasahara (schubert@hep.umn.edu)