Version: SMASH-1.5
Binary Format

SMASH supports a binary output version similar to the OSCAR 2013 standard. It is faster to read and write and theoretically needs less disk space. However, currently in ASCII OSCAR 2013 only 5 digits after the comma are written for any real number, while the binary saves the whole double (16 digits). By accident, this makes the sizes of the binary output files approximately the same as the OSCAR ASCII files. The binary format follows the general block structure of the OSCAR format: OSCAR Block Structure. However, for the binary format, the data type specification is stricter. The types used for the output are 4 bytes signed integers, 8 bytes doubles and 1 byte chars.

As for OSCAR ASCII output there are two kinds of binary output: particles and collisions. The specifics for both particles and collisions output are the following:
Header

4*char uint16_t uint16_t uint32_t len*char
magic_number, format_version, format_variant, len, smash_version
  • magic_number - 4 bytes that in ASCII read as "SMSH".
  • Format version is an integer number, currently it is 4.
  • Format variant is an integer number: 0 for default, 1 for extended.
  • len is the length of smash version string
  • smash_version is len chars that give information about the SMASH version.

Output block header
At start of event, end of event or any other particle output:

char uint32_t
'p' n_part_lines
  • n_part_lines is the number of particle lines in the block that follows

At interaction:

char uint32_t uint32_t double double uint32_t
'i' nin nout density xsection process_type
  • nin, nout are numbers of incoming and outgoing particles

Block header is followed by nin + nout particle lines.

Particle line

9*double int int int
t x y z mass p0 px py pz pdg ID charge

Extended Particle line

9*double int int int int double double uint32_t uint32_t double int int
t x y z mass p0 px py pz pdg ID charge ncoll form_time xsecfac proc_id_origin proc_type_origin time_last_coll pdg_mother1 pdg_mother2

Event end line

char int int
'f' event_number impact_parameter

Particles output

The particles output is Written to the particles_binary.bin file. It contains the current particle list at specific moments of time. Every moment of time is written as a 'p' block. For options of this output see content-specific output options.

Collisions output

The collisions output is Written to the collisions_binary.bin file. It contains interactions (collisions, decays, box wall crossings) and optionally the initial and final configuration. The interactions are written in computational frame time-ordered fashion, in 'i' blocks, which contains the information of the incoming and the outgoing particles of each reaction written in the 'incoming' and 'outgoing' blocks respectively. Initial and final states are written as 'p' blocks. The process IDs indicating the types of the reaction, such as resonance decay, elastic scattering, soft string process, hard string process, etc., are written in the 'process_type' blocks. For options of this output see content-specific output options.

See also Collision Output in Box Modus.