Introduction

This reference manual describes interfaces of various classes constituting psana analysis framework. For more user-oriented description with examples and detailed explanations consult Psana User Manual - Old.

Packages

Framework code is split between several packages. Here is the list of few major packages:

  • psana – psana application, base class for user module, few simple modules
  • PSEvt – classes which deal with event data
  • PSEnv – classes which constitute non-event data (environment)
  • PSTime – classes for time representation and I/O
  • PSHist – Package providing interfaces for histogramming services
  • RootHist – Package providing the ROOT implementation for histogramming services of PSHist
  • RootHistoManager – histogramming package, wrapper for ROOT classes
  • PSXtcInput – input module implementation for XTC files
  • psddl_psana – interfaces for event data and configuration classes produced by LCLS DAQ
  • ConfigSvc – configuration service
  • MsgLogger – message logging service

In addition to these packages there are several other low-level packages (such as boost) which are used in many places. Those packages are not described here.

Below is the reference for individual packages, most of them link to the doxygen-generated documentation. Link to doxygen documentation point to the current production version (release ana-current), for older versions please navigate to the page https://pswww.slac.stanford.edu/swdoc/releases/ and choose relevant release.

Package psana

This package contains code for the core part of psana framework responsible for the job configuration, event loop, module loading, etc.

For complete reference select Doxygen documentation.

Package PSEvt

PSEvt package contains classes which provide storage and access to event data.

For complete reference select Doxygen documentation.

Package PSEnv

PSEnv package contains classes which provide storage and access to non-event data.

For complete reference select Doxygen documentation.

Package PSTime

This package include several classes and functions which define time representation and operations with time. It is based on on standard ISO8601 external representation (http://en.wikipedia.org/wiki/ISO_8601) but it does not provide complete support and in some cases it is made more human-oriented.

For complete reference select Doxygen documentation.

Package PSHist

PSHist package contains a set of classes providing abstract interfaces for histogramming service. Specific implementation (e.g. based on ROOT) is instantiated by psana at run time, but client code is supposed to interact with the histogramming service only via abstract interfaces from this package.

For complete reference select Doxygen documentation.

Package RootHist

RootHist package contains a set of classes with actual implementation of the PSHist abstract methods for histogramming service. This specific implementation is based on ROOT. Client code is supposed to interact with the histogramming service only via abstract interfaces from the PSHist package.

For complete reference select Doxygen documentation.

Package RootHistoManager

Interim implementation of the histogramming service based on pure ROOT classes.

This package is a thin wrapper around standard ROOT package. It just adds one more class RootHMgr which is a factory class for ROOT histograms and also manages the lifetime of the associated ROOT file and histograms that it creates.

For complete reference select Doxygen documentation.

Package PSXtcInput

Package deals with the implementation of psana input module for XTC files. It is a part of the framework itself and does not have user-callable methods.

For complete reference select Doxygen documentation.

Package PSXtcOutput

Package deals with the implementation of psana output module for XTC files. It is a part of the framework itself and does not have user-callable methods. The event, which is passed by all filter modules (see section Controlling Framework from User Module), is saved in the output file.

Module configuration parameters:

  • chunkSizeMB (default: 512000U) – output file chank size in MB
  • nameFmt (default: "e%1$d-r%2$04d-s%3$02d-c%4$02d.xtcf") – output file name format
  • dirName (default: ".") – output file directory
  • keepEpics (default: true) – keep/discard EPICS variables
  • expNum (default: 0)
  • run (default: 0)
  • stream (default: 0)

See also Psana Module Examples - Old#Example for TimeStampFilter and XtcOutputModule
For complete reference select Doxygen documentation.

Package psddl_psana

This package contains definition of interfaces for all data types produced by LCLS. The interfaces are generated from a data definition language (psddl) and are similar but not identical to the data classes defined in pdsdata package.

All classes in psddl_psana are defined in a separate namespace Psana to reduce possibility of collision with other libraries. Individual sub-packages (such as Acqiris or CsPad) define their own namespaces withing Psana namespace.

For complete reference select auto-generated documentation.

Package ConfigSvc

This package defines service which allows clients to extract parameter values from configuration file. User modules in psana framework do not interact with this service directly, instead the base class for user module defines several methods which facilitate the access to the configuration parameters.

For details look at the documentation of psana::Configurable class.

Package ndarray

This package defines classes (currently only one class with the same name ndarray) which provide high-level C++ interface to multi-dimensional array.

For details look at the documentation of ndarray class.

Package MsgLogger

MsgLogger package provides service for generating, filtering, and routing of the messages. User Manual provides detailed description of the service and shows examples of how this services can be used from the user code. Se also Doxygen-generated documentation