Software Overview

At the heart of the Time Tagger software is a multi-threaded processing engine that receives the time tag stream and feeds it to all running measurements. The measurements and the virtual channels are parallel processing units that analyze the time tag stream each in their own way. For example, a Countrate measurement analyzes all time tags from one or more specific channels and calculates the average number of tags received per second. A Correlation measurement computes the cross-correlation between two channels, typically by sorting the time tags in histograms, and so on. Such a powerful architecture enables you to perform any conceivable digital time-domain measurement in real time. You have several choices on how to use this architecture.

Graphical user interface

The easiest way of using the Time Tagger is the graphical user interface Time Tagger Lab, available on Windows only. It allows you to interact with the hardware, create measurements, get live plots, and save and load the acquired data. Refer to the Time Tagger Lab section to get started.

Precompiled libraries and high-level language bindings

The Time Tagger library provides a comprehensive set of ready-to-use measurement classes, covering event counting (e.g. Countrate), time-difference histograms (e.g. Correlation), phase and frequency analyses (e.g. FrequencyStability), time-tag streaming (e.g. FileWriter). These measurements cover the most common applications of our devices. The library ships as precompiled binaries with bindings for Python, MATLAB, LabVIEW, and .NET, so you can start a complex measurement from the language of your choice with a few lines of code. Refer to Getting Started and Application Programming Interface for further details.

C++ API

The underlying software architecture is provided by a C++ API that implements two classes: one class that represents the Time Tagger and one class that represents a base measurement. On top of that, the C++ API also provides all predefined measurements that are made available by the high-level language bindings. To use this API, you have to write and compile a C++ program.