Examples

Run a thousand lead-lead events using default settings and save the event data to file:

trento Pb Pb 1000 > PbPb.dat

Run proton-lead events with a larger cross section (for the higher beam energy) and also compress the output:

trento p Pb 1000 --cross-section 7.1 | gzip > pPb.dat.gz

Suppress printing to stdout and save events to HDF5:

trento p Pb 1000 --cross-section 7.1 --quiet --output events.hdf

Uranium-uranium events at RHIC (smaller cross section) using short options:

trento U U 1000 -x 4.2

Deformed gold-gold with an explicit nucleon width:

trento Au2 Au2 1000 -x 4.2 -w 0.6

Simple sorting and selection (e.g. by centrality) can be achieved by combining standard Unix tools. For example, this sorts by centrality (multiplicity) and selects the top 10%:

trento Pb Pb 1000 | sort -rgk 4 | head -n 100

Working with Python

The scientific Python stack is ideal for analyzing TRENTo data.

One way to load event properties into Python is to save them to a text file and then read it with np.loadtxt. Here’s a nice trick to avoid the temporary file:

import subprocess
import numpy as np

with subprocess.Popen('trento Pb Pb 1000'.split(), stdout=subprocess.PIPE) as proc:
   data = np.array([l.split() for l in proc.stdout], dtype=float)

Now the data array contains the event properties. It can be sorted and selected using numpy indexing, for example to sort by centrality as before:

data_sorted = data[data[:, 3].argsort()[::-1]]
central = data_sorted[:100]

Text files are easily read by np.loadtxt. The header will be ignored by default, so this is all it takes to read and plot a profile:

import matplotlib.pyplot as plt

profile = np.loadtxt('events/0.dat')
plt.imshow(profile, interpolation='none', cmap=plt.cm.Blues)

Reading HDF5 files requires h5py. h5py file objects have a dictionary-like interface where the keys are the event names (event_0, event_1, …) and the values are HDF5 datasets. Datasets can implicitly or explicitly convert to numpy arrays, and the attrs object provides access to the event properties. Simple example:

import h5py

# open an HDF5 file for reading
with h5py.File('events.hdf', 'r') as f:
   # get the first event from the file
   ev = f['event_0']

   # plot the profile
   plt.imshow(ev, interpolation='none', cmap=plt.cm.Blues)

   # extract the profile as a numpy array
   profile = np.array(ev)

   # read event properties
   mult = ev.attrs['mult']
   e2 = ev.attrs['e2']

   # sort by centrality
   sorted_events = sorted(f.values(), key=lambda x: x.attrs['mult'], reverse=True)