V2.9.0 - 07.06.2021¶
Reduced communication latency of all Time Taggers.
Reduced Time Tagger 20 crosstalk on channel 1 and 2.
Improved USB connection stability for Time Tagger 20.
Optional collection and reporting of pseudonymous usage statistics. Improvement program.
Please use at least v2.9.0 for devices shipped from 2021 on.
NaN(Not a Number) for zero capture durations.
enum.Enumas base class for all enumerators in the Python wrapper (Python >= 3.5).
Improved the format of the Time Tagger error messages.
TimeTagger.setHardwareBufferSize()for the Time Tagger 20.
Added an example and tutorial on how to work with a remote Time Tagger using Python and the Pyro5 package.
Licence upgrades can be flashed now for the Time Tagger 20 via the web application.
TimeTagger.setStreamBlockSize()block size heuristic while uploading new configuration.
Fixed slow performance of
freeTimeTagger()in overflow mode.
waitUntilFinished()invoke nodes in LabVIEW examples.
Fixed error message in the Web Application for non compatible devices.
Fixed a possible crash on Python interpreter exit while running
TimeTagger.sync()signaling one block too late. The fix reduces the sync, measurement start and clear times.
V2.8.4 - 04.05.2021¶
Fixed the initialization for a Virtual Time Tagger in the Web Application
V2.8.2 - 26.04.2021¶
Fixed non appearing option to initialize in HighRes mode after upgrading/flashing the device in the Web Application.
V2.8.0 - 29.03.2021¶
High-resolution options for the Time Tagger Ultra series with a timing jitter of down to 4 ps RMS per channel.
Hardware input delay on the Time Tagger Ultra series with picoseconds accuracy before the conditional filter.
Reduced CPU load for Time Tagger Ultra.
The release is fully compatible with all Time Tagger 20 devices. It is compatible with all Time Tagger Ultra devices shipped from March 2021 and all earlier Time Tagger Ultra devices with 8 or less channels without HighRes option. If you received Time Tagger Ultra before March 2021 and it has more than 8 channels or HighRes, it is not compatible with the release. Please contact support to get a free device exchange to be fully compatible again.
New Time Tagger Ultra features
Reduced crosstalk and thermal drift on all channels.
The Time Tagger hardware sound module can be activated and set via
TimeTagger.setSoundFrequency(). It can be used, e.g., for optical alignment purposes (count rate -> frequency).
TimeTagger.setNormalization()can now be configured per channel.
Changed the default port of the WebApp to
50120to avoid collision with Jupiter Notebooks.
Maximum input frequency of the Time Tagger Ultra is reduced to 475 MHz.
The deadtime specification of the Time Tagger Ultra changed to 2.1 ns. It can detect events separated by 2 ns with possible loss of some events.
TriggerOnCountratevirtual channel that generates events when a count rate crosses the given threshold value.
Added support for Python 3.9.
waitUntilFinished()and sync have an optional timeout parameter.
LabVIEW: Fixed broken example (#14) and added it to the LabVIEW project.
C++: Added an example for Custom Virtual Channel.
Displaying the singleton warning of createTimeTagger just once.
Fixed string conversion issue for old Matlab versions.
Hide “unused argument” warnings in the TimeTagger C++ headers.
V2.7.6 - 26.04.2021¶
Fixed RuntimeError “Got the USB error ‘UnsupportedFeature’” when calling
V2.7.4 - 19.04.2021¶
Fixed a bug for old Time Tagger Ultras, where the Web Application could not apply the license upgrade.
V2.7.2 - 22.12.2020¶
TimeTaggerVirtualperformance taking use of multithreading.
Support for direct time tag stream access via Custom Measurements in C# and Python - see examples in the installation folder.
Added AnyCPU targeted .NET Assembly for C# wrappers. Available in GAC_MSIL and the installation folder.
More detailed error handling and human-readable error messages.
Removed Intel’s libmmd.dll library dependency.
Warnings are printed with time information.
Cleanup of the C++ measurements’ header file.
Remote license upgrades can be performed via the web application.
Reworked Python and C# examples.
Fixed a frequent crash in
FileWriterwith high data rates and multiple files.
Fixed a crash in deleting measurements still registered to
Fixed an unlikely race condition of freeing measurements.
All methods and measurements now throw exceptions instead of warning on wrong arguments like invalid channels or out-of-range parameters.
Automatically call freeTimeTagger on del/clear/Dispose in Python/Matlab/LabVIEW/C# .
Removed the freeAllTimeTagger method.
Deprecate the multiple use of
createTimeTagger()for one physical device. Pass on the timetagger object instead.
_Log is renamed to LogBase.
Our libraries are compiled with VS 2019 now, so at least version 142 of the VC runtime is required in the final application.
V2.7.0 - 01.10.2020¶
New measurements are automatically synchronized to the hardware. All data analyzed is guaranteed to be temporal later than the measurement’s initialization, start, or clear. Data coming from the internal buffer, which was acquired before the measurement was initialized, started, or cleared, will not be analyzed. Before this release, the .sync() method was required for these tasks.
Fixes and improvements
Added a Matlab example for SynchronizedMeasurements.
Fixed a bug in Matlab, creating synced measurements via SynchronizedMeasruements and .getTagger().
The last datapoint from a scope measurement is not marked as invalid any more.
V2.6.10 - 07.09.2020¶
Fixes and improvements
Fixes input delay, deadtime and test signal generator for the TimeTaggerVirtual.
Fixes getInvertedChannel with the Swabian Synchronizer and with Time Tagger Ultra 8 devices with the old channel numbering schema.
x axis is zoomable with Scope measurement.
Better error handling for non-existent files with TimeTaggerVirtual and FileReader.
Changed the constants CoincidenceTimestamp_ to a Python enum (e.g., CoincidenceTimestamp_First is now CoincidenceTimestamp.First).
Enum for timestamp argument for Coincidence(s) is avaiable via TTCoincidenceTimestamp.
Fix for slow Linux device opening.
V2.6.8 - 21.08.2020¶
Support for the Time Tagger Value edition. This is an upgradeable and cost-efficient version of the Time Tagger Ultra for applications with moderate timing precision requirements.
Histogram2Dto the measurement list.
Improved performance and responsiveness for large datasets.
32-bit version of the Web Application works again.
Fixed a bug that data of stopped measurements could not be saved.
Fixed a bug that settings saved had the file extension .json instead of .ttconf ending.
Fixed a bug when using falling edges for Time Tagger starting with channel 0.
Fixed a bug that some named arguments could not be used anymore.
Improved performance of the FileWriter, exceeding 100 M tags/s on high-end CPUs.
Improved binning performance of all histogram measurements: Correlation, FLIM, Histogram, StartStop, TimeDifferences, TimeDifferencesND.
Fixes a deadlock in the virtual Time Tagger if a measurement accesses some public methods of the Time Tagger.
V2.6.6 - 10.07.2020¶
Swabian Synchronizer support. The Synchronizer hardware can combine 8 Time Tagger Ultras with up to 144 channels. The combined Time Tagger can be interfaced the very same as it would be only one device.
Support for custom measurements in Python. Please see the provided programming example in the installation folder for further details.
Support for the Synchronizer
Showing error messages from setLogger API in a modal window
Load/save settings is now supported for the Time Tagger Virtual
Time Tagger Ultra
Hardware revision 1.1 now with the same performance enhancement of 500 MHz maximum sync rate, 2ns dead time and better phase stability, as introduced before for Hardware revision > 1.1
Dropped support for the very first Time Tagger Ultras, an error will be shown on initialization - free exchange program available
More intuitive byte order of the bitmask in setLED
Small modifications to the hardware channel to channel delay
Coincidence and Coincideces have an optional parameter to select which timestamp should be inserted, the last/first completing the coincidence, the average of the event timestamps, or the first of the coincidence list.
Fixed .net/Matlab/LabVIEW wrappers for data with empty 2D or 3D arrays
Provide a globally registered .NET publisher policy for C#, avoiding the ‘wrong dll version’ message in Labview when updating the Time Tagger software
setConditionalFilter throws an exception when invalid arguments are applied
Hide the warning on fetching the TimeTaggerVirtual license without an internet connection
DelayedChannel supports a negative delay
Performance enhancements in StartStop
V2.6.4 - 27.05.2020¶
Option to enable logarithmic y-axis scaling for Counter, Histogram, HistogramLogBins and Correlation
Redesign “Create measurement” dialog with links to the online documentation
Fixed flickering when switching between plots
Fixed plotting wrong data range when changing the number of data points
Added the basic functionality of the TimeTaggerVirtual (test signal only)
New features and improvements
Added the test signal to TimeTaggerVirtual
Support for Ubuntu 20.04 and CentOS 8
LabVIEW example for FileWriter and FileReader
Improved Matlab API for VirtualTimeTagger, adding optional parameters
Make the data transfer size configureable by .setStreamBlockSize
Performance improvements for HistogramLogBins
Slightly improved timing jitter at large time differences for the Time Tagger 20
Time Tagger Application works again with 32 bit operating systems
Connection errors are shown in the Matlab console or can be handled with the new logger functionality
Added custom logger examples for Matlab/Python/C#
Updated the USB library
Stop measurements when freeTimeTagger is called (e.g. closes files on dump, isRunning now returns false)
Reduced polling rate (0.1s) for USB reconnections
Added .setLogger() to attach a callback function for custom info/error logging
Rename of enumeration ErrorLevel to LogLevel
Rename of log level constants and with new corresponding integer values
V2.6.2 - 10.03.2020¶
TimeTaggerVirtual, FileWriter, and FileReader have reached a stable state
Improved Linux support (documentation, compiling custom Python wrappers)
Added setInputDelay, setDeadtime, getOverflows, and more to the TimeTaggerVirtual
Add an optional parameter in setConditionalFilter for disabling the hardware delay compensation
Infinite dumping in Dump for negative max_count
Create a freeAllTimeTagger() method, which is called by Python atexit
Reimplement SynchronizedMeasurements as a proxy tagger object, which auto registers new measurements without starting them
The new SynchronizedMeasurements.isRunning() method returns if any measurement is still running
Python: Distribute the generated C++ wrapper source for supporting future Python revisions
C++: New IteratorBase.getLock method returning a std::unique_lock
C++: Improved exception handling for custom measurements: exceptions now stop the measurement, runSynchronized forwards exceptions to the caller
TimeTagger.getVersion return value is changed to a string
C++: Use 64 bit integers for the dimensions in the array_out helpers
C++: Rename the base class for custom measurements from _Iterator to IteratorBase
C++: Constructors of custom measurements shall call finishInitialization instead of IteratorBase.start
Python 2.7: Update the numpy C headers to 1.16.1
Examples and documentation
Improved Histogram2D example
Clearify setInputDelay vs DelayedChannel
Relax the voltage supply check in the Time Tagger Ultra hardware revision 1.4
Use a 1 MB buffer for Dump, FileWriter, and FileReader to achieve full speed especially on network devices
Fix getTimeTaggerModel on an active device
Fix deadlock within sync() while the device is disconnected
Provide the documentation on Linux
Several fixes and improvements for the FileWriter and TimeTaggerVirtual
Improved default names for measurements
Not relying on data stored within the browser any more
Disabling mouse scrolling within numeric inputs
V2.6.0 - 23.12.2019¶
FileWriter: New space-efficient file writer for storing time tag stream on a disk. The file size is reduced by a factor of 4 to 8. Replaces the Dump function.
Virtual Time Tagger allows to replay previously dumped events back into the Time Tagger software engine.
Improved behavior in the overflow mode. The hardware now also reports the amount of missed events per input channel and provides the start and the end timestamps of the overflow interval.
New tutorial on how to implement the data acquisition for a confocal microscope
New measurement Histogram2D for 2-dimensional histogramming with examples
Web App: Selectable input units (s/ms/µs/ps) instead of ps only
FileWriter and FileReader have a low performance on network devices
deprecated TimeTagStreamBuffer.getOverflows() – use .getEventTypes() instead
renamed HistogramLogBin.getDataNormalized() to .getDataNormalizedCountsPerPs()
removed deprecated TimeTagger.getChannels() - use .getChannelList() instead
removed deprecated CHANNEL_INVALID - use CHANNEL_UNUSED instead
removed deprecated TimeTagger.setFilter() and TimeTagger.getFilter() - use .setConditionalFilter(), .getConditionalFilter(), and .clearConditionalFilter() instead
C++: All custom measurement class constructors must be modified, such that the parameter containing the Time Tagger is of the type TimeTaggerBase. This allows for using the custom measurement within a real Time Tagger object and the Time Tagger Virtual.
C++: The struct Tag includes the type of event and the amount of missed events. They have replaced the overflow field.
C++/Windows: We additionally distribute binaries for the debug runtime (/MDd)
Matlab: TimeTagger.free() is now deprecated, use .freeTimeTagger()
Web App: Normalization (counts/s) for the Counter measurement
getConfiguration returns the current hardware configuration as a JSON string
added g2 normalization for HistogramLogBins with getDataNormalizedG2
improved overflow behavior for Countrate due to the missed event counters
improved overflow handling for the g2 normalization of Correlation and HistogramLogBin
support for Python version 3.8
smaller latency on low data rates due to adaptive chunk sizes of <= 20 ms
support for the Time Tagger Ultra hardware revision 1.4
Matlab: Faster loading of events from disk for now deprecated Dump file format
C++: Loading events from disk stored in the new data format
Labview: Scope example, .NET version redirection
Mathematica: Improved example
Python: Added “Stop” button to the countrate figure.
fixed static input delay error with conditional filter enabled since v2.2.4
added missing TimeTagger.getTestSignalDivider() method
Scope: Fix the output if one channel has had no events
resolve overflows after the initialization of the Time Tagger 20
fixes an issue with wrongly sorted events on the reconfiguration of input delays
always emit an error event on plugging an external clock source
fixes an unlikely case when the synchronization of the external clock got lost
the new USB driver version fixes some random data abruption
TTU1.3: Fix a bug which may select a wrong clock source in the first 21 seconds and wrongly activated ext clock LED
Matlab: SynchronizedMeasurements work now in Matlab, too
different improvements within the python and C# wrappers
LED turns off and not red after freeing a Time Tagger
Dump now releases the file handle after the end of the startFor duration
Web App: Removed caching issues when up or downgrading the software
V2.4.4 - 29.07.2019¶
reduced crosstalk between nonadjacent channels of the Time Tagger Ultra
fixed a bug leading to high crosstalk with V2.4.2 for specific channels
fixed a rare clock selection issue on the Time Tagger 20
improved and more detailed documentation
Countrate.getCountsTotal(), which returns the absolute number of events counted
new Mathematica quickstart example
Scopeexample for LabVIEW
support of the Time Tagger 20 series with hardware revision 2.3
release the Python GIL while in the Time Tagger engine code
fixed a bug in
ConstantFractionDiscriminator, which could cause that no virtual tags were generated
V2.4.2 - 12.05.2019¶
support of the Time Tagger Ultra series with hardware revision 1.3
improve performance of short pulse sequences on the Time Tagger 20 series
improve overflow behavior at too high input data rates
fix the name of the ‘SynchronizedMeasurements’ measurement class
V2.4.0 - 10.04.2019¶
32 bit C++ library added
C++ and .NET libraries renamed and registered globally
virtual constant fraction discriminator channel ‘ConstantFractionDiscriminator’ added
‘TimeDifferenceND’ added for multidimensional time differences measurements
faster binning in ‘TimeDifferences’ and ‘Correlation’ measurements
improved memory handling for ‘TimeTageStream’
improved Python library include
fixed ‘.getNormalizedData’ for ‘Correlation’ measurements
various minor bug fixes and improvements
LabVIEW project for 32 and 64 bit
improved LabVIEW examples
Time Tagger Ultra
10 MHz EXT input clock detection enabled
internal buffer size can be increased from 40 MTags to 512 MTags with ‘setHardwareBufferSize’
reduced crosstalk and timing jitter
increased maximum transfer rate to above 65 MTags/s (Intel 5 GHz CPU on 64 bit)
various performance improvements
reduced deadtime to 2 ns on hardware revision >= 1.2
Time Tagger 20
166.6 MHz EXT input clock detection enabled
equivalent support for Windows 32 and 64 bit, Ubuntu 16.04 and 18.04 64 bit, CentOS 7 64 bit
V2.2.4 - 29.01.2019¶
fix the conditional filter with filter and trigger events arriving within one clock cycle
fix issue with negativ input delays
calling .stop() while dumping data stops the dump and closes the file
fix device selection on reconnection after transfer errors
synchronize tags of falling edges to their raising ones
V2.2.2 - 13.11.2018¶
Removed not required Microsoft prerequisites.
32 bit version available
V2.2.0 - 07.11.2018¶
support for devices starting with channel 1 instead of 0
under certain circumstances, the crosstalk for the Time Tagger 20 of channel 0-2, 0-3, 1-2, and 1-3 was highly increased, which has been fixed now
updated and extended examples for all programming languages (Python, Matlab, C#, C++, LabVIEW)
C++ examples for Visual Studio 2017, with debug support
documentation for virtual channels
Web app included in the 32 bit installer
Linux package available for Ubuntu 16.04
Support for Python 3.7
‘HistogramLogBin’ allows analyzing incoming tags with logarithmic bin sizes.
‘FrequencyMultiplier’ virtual channel class for upscaling a signal attached to the Time Tagger. This method can be used as an alternative to the ‘Conditonal Filter’.
‘SynchronizedMeasurements’ class available to fully synchronize start(), stop(), clear() of different measurements.
Second parameter from ‘setConditionalFilter’ changed from ‘filter’ to ‘filtered’.
full ‘setConditionalFilter’ functionality available from the backend within the Web application
V2.1.6 - 17.05.2018¶
fixed an error with getBinWidths from CountBetweenMarkers returning wrong values
V2.1.4 - 21.03.2018¶
fixed bin equilibration error appearing since V2.1.0
V2.1.2 - 14.03.2018¶
fixed issue installing the Matlab toolbox
V2.1.0 - 06.03.2018¶
Time Tagger Ultra
efficient buffering of up to 60 MTags within the device to avoid overflows
V2.0.4 - 01.02.2018¶
Closing the web application server window works properly now
V2.0.2 - 17.01.2018¶
Matlab GUI example added
Matlab dump/load example added
dump class writing tags multiple times when the optional channel parameter is used
Counter and Countrate skip the time in between a .stop() and a .start() call
The Counter class now handles overflows properly. As soon as an overflow occurs the lost data junk is skipped and the Counter resumes with the new tags arriving with no gap on the time axis.
V2.0.0 - 14.12.2017¶
Release of the Time Tagger Ultra
The input delays might be shifted (up to a few hundred ps) compared to older driver versions.
new section ‘In Depth Guides’ explaining the hardware event filter
fixed a bug setting the input values to 0 when typing in a new value
new server launcher screen which stops the server reliably when the application is closed
V1.0.20 - 24.10.2017¶
DelayedChannel clones and optionally delays a stream of time tags from an input channel
GatedChannel clones an input stream, which is gated via a start and stop channel (e.g. rising and falling edge of another physical channel)
startFor(duration) method implemented for all measurements to acquire data for a predefined duration
getCaptureDuration() available for all measurements to return the current capture duration
getDataNormalized() available for Correlation
setEventDivider(channel, divider) also transmits every nth event (divider) on channel defined
label for 0 on the x-axis is now 0 instead of a tiny value
internal change so that clear_impl() and next_impl() must be overwritten instead of clear() and next()
Other bug fixes/improvements
improved documentation and examples
V1.0.6 - 16.03.2017¶
Web application (GUI)
load/save settings available for the Time Tagger and the measurements
correct x-axis scaling
input channels can be labeled
save data as tab separated output file (for Matlab, Excel, … import)
fixed: saving measurement data now works reliably
fixed: ‘Initialize’ button of measurements works now with tablets and phones
direct time stream access possible with new class TimeTagStream (before the stream could be only dumped with Dump)
Python 3.6 support
better error handling (throwing exceptions) when libraries not found or no Time Tagger attached
setTestSignal(…) can be used with a vector of channels instead of a single channel only
Dump(…) now with an optional vector of channels to explicitly dump the channels passed
CHANNEL_INVALID is deprecated - use CHANNEL_UNUSED instead
Coincidences class (multiple Coincidences) can be used now within Matlab/LabVIEW
documentation of every measurement now includes a figure
update and include web application in the quickstart section
Other bug fixes/improvements
no internal test tags leaking through from the initialization of the Time Tagger
Counter class not clearing the data buffer in time when no tags arrive
search path for bitfile and libraries in Linux now work as they should
installer for 32 bit OS available
V1.0.4 - 24.11.2016¶
extended event filter to multiple conditions and filter channels
improved jitter for channel 0
channel delays might be different from the previous version (< 1 ns)
new function setConditionalFilter allows for multiple filter and event channels (replaces setFilter)
Scope class implements functionality to use the Time Tagger as a 50 GHz digitizer
Coincidences class now can handle multiple coincidence groups which is much faster than multiple instances of Coincidence
added examples for C++ and .net
improved GUI (Web application)
Matlab/LabVIEW is not required to have the Visual Studio Redistributable package installed
V1.0.2 - 28.07.2016¶
LabVIEW support including various example VIs
Matlab support including various example scripts
.net assembly / class library provided (32 and 64 bit)
WebApp graphical user interface to get started without writing a single line of code
Improved performance (multicore CPUs are supported)
reset() function added to reset a Time Tagger device to the startup state
getOverflowsAndClear() and clearOverflows() introduced to be able to reset the overflow counter
support for python 3.5 (32 and 64 bit) instead of 3.4
initial release supporting python
Channel Number Schema 0 and 1¶
The Time Taggers delivered before mid 2018 started with channel number 0, which is very convenient for most of the programming languages.
Nevertheless, with the introduction of the Time Tagger Ultra and negative trigger levels, the falling edges became more and more important, and with the old channel schema, it was not intuitive to get the channel number of the falling edge.
This is why we decided to make a profound change, and we switched to the channel schema which starts with channel 1 instead of 0. The falling edges can be accessed via the corresponding negative channel number, which is very intuitive to use.
Time Tagger 20 and Ultra 8
Time Tagger Ultra 18
0 to 7
8 to 15
0 to 17
18 to 35
1 to 8
-1 to -8
1 to 18
-1 to -18
With release V2.2.0, the channel number is detected automatically for the device in use. It will be according to the labels on the device.
In case another channel schema is required, please use
setTimeTaggerChannelNumberScheme(int scheme) before the first Time Tagger is initialized. If several devices are used within one instance, the first Time Tagger initialized defines the channel schema.
int getInvertedChannel(int channel) was introduced to get the opposite edge of a given
channel independent of the channel schema.