Tomographer  v4.0
Tomographer C++ Framework Documentation
Tomographer C++ Framework: API Documentation

The Tomographer C++ Framework groups a set of classes and functions which allow to reliably analyze data from quantum experiments. These serve in particular as components for the tomorun executable program.

The API documentation for the Python interface to Tomographer is available here.

Tomographer's Components

The classes and routines of the project belong to several categories.

Generic Tools

These are basic tools and utilities:

  • Most tools, e.g. C++ language utilities and other tools, are defined in the namespace Tomographer::Tools;
  • Tomographer::MAT provides a set of routines to read data from MATLAB files (based on the MatIO library);
  • Tomographer provides a lightweight mechanism for logging messages. See Logging and Loggers;
  • Some more utilities are provided in the namespace Tomographer::MathTools (generate a Haar-random unitary, manipulate spherical coordinates, etc.).

Engine for Running a Metropolis-Hastings Random Walk

Engine for Multiprocessing: Running Tasks in Parallel

  • An abstract multiprocessing framework is specified using a set of interfaces, see Multiprocessing Task Interfaces. This requires on one hand an implementation of a multiprocessing environment, and on the other hand a specification of which tasks are to be run.
  • Classes in the Tomographer::MultiProc::OMP namespace are an implementation of a multiprocessing environment using OpenMP. This dispatches the tasks over several threads (on a same machine).

Both Together: Running Metropolis-Hastings Random Walks in Parallel

Specific Implementation for Quantum States Specified as Densely Stored Matrices

These classes provide the types and specification of how to perform the random walk, how to calculate the loglikelihood function as well as the figures of merit for quantum states, with the quantum states and POVM effects stored explicitly as matrices (either directly, or via a X Parameterization or T Parameterization). Classes relating to this implementation are located in the Tomographer::DenseDM namespace.

Currently, this is the only concrete implementation of our tomography method. In the future, one could imagine extensions to other implementations, such as directly performing the random walk in the X-parameterization space.

Documentation Pages

Important Namespaces

Specific Topics

Other Specific Resources

Tomorun-Executable Related Topics

The tomorun program is simply a straightforward piecing together of the different components detailed above. Most of the work is already done by the classes in Tomographer::MHRWTasks::ValueHistogramTasks.

The tomorun code is not included in this API documentation. The code is located under "cxx/tomorun/". If you wish to change functionality in tomorun, or if you wish to implement a very particular calculation, you might like to have a look at the test example "cxx/test/minimal_tomorun.cxx", which provides a very minimal implementation of tomorun for a specific example—it may be more convenient for you to modify that program.

Topics:

Known Bugs & To Do List