SMASH HepMC output is an implementation of the HepMC3 Event Record Library. The aim is to provide a format compatible with other frameworks like Rivet (https://rivet.hepforge.org). For resources regarding HepMC, see http://hepmc.web.cern.ch/hepmc/ and https://arxiv.org/abs/1912.08005.
The SMASH HepMC output can be:
You can find a snippet of the configuration for this output in Output Configuration.
Producing HepMC output in asciiv3 format requires HepMC3 to be installed. Download the tarball from http://hepmc.web.cern.ch/hepmc/ and follow the instructions or use the pre-compiled packages for your OS distribution. If the user wants to produce HepMC output in ROOT Tree format, ROOT must be installed (https://root.cern.ch/), as well, and HepMC should be compiled with ROOT IO support (-DHEPMC3_ENABLE_ROOTIO:BOOL=ON
) or, when using a binary precompiled distribution, the appropriate rootIO package must be installed.
–ignore-beams
option. When using the Rivet output this check is disabled by default.HepMC generally structures each event into particles and vertices connecting them, basically storing a graph of the event.
Two versions of HepMC are possible by specifying HepMC_asciiv3 or HepMC_treeroot under Particles
. The output only provides a particle list of the final state. For this only one central vertex is used. All initial state particles are incoming particles and all final state particles are outgoing particles of this vertex. Scatterings happening during the SMASH event are not recorded. For the collider modus, the intial state particles are combined into two single colliding nucleus "particles" with a nuclear pdg code.
In certain circumstances one may be interested in the full event structure. To that end, the output module provides the HepMC format also for the Collisions
content. With this format, the full event tree is written. Furthermore, as above, for collider modus, we lump all incoming nucleons into nuclei, but split them out immediately afterwards to allow tracking of the individual nucleons.
In all cases, the module will track the number of binary, inelastic collisions between incident nucleons as well as keep track of participating incident nucleons.
In this case the information about each event is inserted into a ROOT Tree structure and saved in a binary file that can be read by ROOT.
Here is an example of a basic ROOT macro that displays the structure of the tree, assuming that the output file is in the same directory as the macro:
To load and execute the macro with ROOT:
In the subdirectory examples/reading_HepMC3_treeroot_output
under the SMASH source code main directory there is a basic example of a C++ code that reads the output without requiring HepMC3, but only ROOT.
Among the examples of the HepMC3 library source code there is a converter between different formats. The converter allows to transform the SMASH HepMC3 output of a subtype (asciiv3 or treeroot) into the other.