Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Host tools for manipulating timetagger data
C++ Python Makefile
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
systemd systemd: Remove unnecesssary requires attribute
ui timetag_ui: Only create directory if dirname is non-null
.gitignore Add .gitignore
COPYING Add GPL license messages
Makefile Makefile: A bit of reorganization
README.mkd Add dependencies for ui
photon_generator.cpp photon_generator: Fix NULL in place of 0
record.cpp record: Initialize rec_idx
record.h record: Move field to correct class
record_format.h Add vim modelines to C++ files
timetag-acquire.conf Fix timetag_acquire command line
timetag-acquire.rules udev: Add comment
timetag-cat Add timetag-cat
timetag-cli timetag-cli: Add missing import
timetag_acquire.cpp timetag_acquire: Fix lexical cast of bool
timetag_bin.cpp timetag_bin: Untabify
timetag_cut.cpp timetag_cut: Reindent
timetagger.h Hopefully finally fix reset_counter behavior


timetag-tools — FPGA Time-tagger tools

These are a set of tools for operating the FPGA timetagger. These include a set of Python-based applications for data acquisition and low-level tools for manipulation, filtering, and extraction of photon data.

More details on the FPGA timetagger system can be found in the Usage manual.


Before timetag-tools can be started one must install the timetag-fx2 package. After this is installed simply run (on Ubuntu Vivid),

$ sudo apt-get install libusb-1.0-0-dev libboost-all-dev libzmq3-dev
$ make
$ sudo make install

The timetag-acquire daemon should be started by systemd when the device is plugged in.

Installing timetag_ui

On Ubuntu Vivid,

$ sudo apt-get install python-matplotlib python-zmq
$ cd ui
$ sudo ./ install

Data acquisition interface

timetag_ui (found in the ui/ directory) and timetag_seq_ui are Python-based applications wrapping the low-level utilities provided in this package in easy-to-use graphical interfaces.

Low-level utilities

Interacting with the hardware

The hardware is managed by a system-wide daemon, timetag_acquire. This daemon accepts commands and publishes events on a set of local ZeroMQ sockets.

  • /tmp/timetag-ctrl is a REP socket that allows users to submit control commands. The help command provides a full listing of available commands (see timetag-cli to conveniently work with this interface).

  • /tmp/timetag-data is a PUB socket to which records from the device are written. See timetag-cat to conveniently dump data from this interface.

  • /tmp/timetag-event is a PUB socket which publishes hardware events. The currently supported events are,

    capture start : The device has started capturing records.

    capture stop : The device has stopped capturing records.

timetag-cli provides an easy-to-use command-line interface to timetag_acquire. If command-line arguments are given they will be interpretted as a command and the result printed to standard output. Otherwise the command acts as a simple read-evaluate-print loop. For instance,

$ timetag-cli start_capture
$ timetag-cli
>>> capture?

timetag-cat prints incoming records from the device to stdout. For instance, to capture records to a file, one might use,

$ timetag-cli stop_capture
$ timetag-cli reset_counter
$ timetag-cat > my-records.timetag &
$ timetag-cli start_capture
$ sleep 10
$ timetag-cli stop_capture

Manipulating and extracting data

timetag_bin : Bin photons into temporal bins.

timetag_dump : Dump text representation of records in a file

timetag_cut : Extract subsets of a .timetag file.

timetag_extract : Extract binary timestamps

Something went wrong with that request. Please try again.