Raw Time-Tag-Stream access

There are several ways to access the raw time tags with the Time Tagger API. They can be split into two categories: dumping together with post-processing and on-the-fly processing. Both ways will be explained in the following. They are not exclusive so that you can combine them, also, with other measurements from our API in parallel.

Dumping and post-processing

All incoming time tags or selected channels of the Time Tagger can be stored on the hard drive via the FileWriter. Please visit the documentation and the provided programming examples of FileWriter for further details.

There are two ways for post-processing the dumped data:

File Reader

By reading in the stored time tags with the FileReader, the tags stored can be processed natively in your preferred programming language. You find examples of how to use the FileReader in your examples folder.

Virtual Time Tagger

The second option to process stored time tags is the Time Tagger Virtual. The Time Tagger Virtual allows you to use the full Time Tagger API to post-process your data. You find examples of how to use the Time Tagger Virtual in your examples folder.

On-the-fly processing

There are two options to process raw incoming data, the TimeTagStream and the CustomMeasurement, which will be explained in the following:

TimeTagStream - high-level, lower performance

The TimeTagStream buffers the incoming raw data for on-the-fly processing. The TimeTagStream buffer must be polled to retrieve the tags. You find examples of how to use the TimeTagStream in your examples folder.

CustomMeasurement - low-level, higher performance

The CustomMeasurement functionality allows you to access the raw time tag stream with very little overhead. By inheriting from CustomMeasurement, you can implement your fully customized measurement class. The CustomMeasurement.process() method of this class will be invoked as soon as new data is available. Note that this functionality is only available for C++, C#, and Python. You find examples of how to use the CustomMeasurement in your examples folder.

CustomVirtualChannel - modify the time tag stream - C++ only

It is now possible for you to modify the time tag stream, like our API does by inserting time tags, e.g., via Coincidence or DelayedChannel. If you want to use this functionality, please contact Swabian Instruments support.

IteratorBase - C++ only

All measurements and virtual channels are derived from the IteratorBase class. You can see how to access the time tag stream on the deepest level with the provided C++ examples.