Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Some Monte Carlo tools for MCNP, MCNPX, PHITS and FLUKA

Project homepage:


  • Emacs syntax highlighting script for MCNP.
  • An implementation of application programming interface (API) to read data from mctal files. It allows to convert mctal files into any format. Known issue: tallies with perturbation records are not supported.
    • mctal2root script converts mctal to ROOT format. The tallies are saved as THnSparse histograms. The same script can convert mctal to XML format via TXMLFile.
    • mctal2txt script shows an example how to convert an mctal file into an easily parsable ASCII file.
  • WSSA file converters.
    • ssw2txt: converts WSSA phase space files into plain text. The comments in the script explain how to derive additional information (like particle type and surface crossed) from the WSSA records.
    • ssw2root: converts WSSA phase space files into a ROOT ntuple. The list of aliases defined in the tree can be printed by the TTree::GetListOfAliases()::Print() method. In particular, this list shows how to get particle type and surface number. This macro gives several simple examples how to analyse SSW files with ROOT.
  • a tool to facilitate input of volume/importance/probability values for all cells in geometry. To be used with cards like area, vol, imp, pd, dxc etc. For example, in order to set the volume of cell 5 to 3.14, cell 7 to 2.71 in a geometry of 10 cells total, run python $MCTOOLS/mctools/mcnp/ -card vol -ntotal 10 -values "5 3.14 7 2.71" -default j. This generates the required data card: vol 4j 3.1 j 2.7 3j.
  • mcnpview: a wrapper around mcnp ip which allows to return to the selected geometry view in subsequent calls of the viewer. Find the detailed tutorial in the wiki section.


  • Emacs syntax highlighting script for PHITS.
  • ANGEL to ROOT converter (converts the PHITS output into ROOT). Most of the tallies are supported with PHITS 2, but it does not really work with PHITS 3.
  • A script which allows to animate the output of the t-3dshow tally. It runs PHITS to generate many images, so one can get a rotating video of geometry setup. Example: snowman.gif (should be viewed with an image viewer which supports GIF animation). A simplified version of this script with a detailed manual can be downloaded from the PHITS website:


  • Emacs syntax highlighting script for FLUKA.
  • fluka2root tool to convert the FLUKA binary output into a ROOT file. To understand how it works, run the standard example $FLUTIL/rfluka -N0 -M3 $FLUPRO/exmixed.inp and then execute fluka2root exmixed.inp. It creates a single ROOT file out of all FLUKA-produced data files converted into the ROOT histograms or trees.
    • A more detailed tutorial is available in the wiki section.
    • Internally, fluka2root uses the following convertes which can be called individually:
      • usbsuw2root script to convert the USRBIN results into a TH3F histogram. Note that this tool does not directly convert the files produced by the USRBIN card, but these files must first be averaged by the $FLUTIL/usbsuw program. The resulting averaged file can be converted into ROOT by usbsuw2root. The $FLUTIL/usbsuw call is done automatically if the fluka2root general converter is used.
      • usxsuw2root script to convert the USRBDX results into a TH2F histogram. + see the comments for the previous item.
      • usrsuw2root script to convertert the RESNUCLEI results into a TH2F histogram and TGraphError + see the comments for usbsuw2root above. Known bug: isomer data is not saved into the ROOT file.
      • ustsuw2root script to convert the USRTRACK results into a TH1F histogram. + see the comments for usbsuw2root above.
      • eventdat2root script to convert the EVENTDAT results into a TTree object.
  • plotgeom2root script to convert the PLOTGEOM binary output into a TMultiGraph object.

Generic tools

  • A Python module to calculate atomic fractions of isotopes in a mixture for the given volume fractions of materials. Some examples can be found in
  • ace2root, a converter from ACE (a compact ENDF) to ROOT formats. It loops through all available cross-sections in an ACE file and saves them as TGraph objects. We use this simple script to visualise ENDF cross sections. Requires the PyNE toolkit to be installed.
  • hplot, an advanced TH3 histogram plotter. We use it to visualise data maps and superimpose them with Monte Carlo geometry. A detailed manual can be generted with the -h argument.


  • The ROOT-related scripts (file names end with *2root), require ROOT to be compiled with Python 3 support.
    • In order to check whether the Python support in ROOT is set up correctly, say import ROOT in the Python 3 shell. You should not see any error messages.
  • hplot requires the Boost libraries and ROOT to be compiled with at least C++17 standard.
  • ace2root needs the PyNE toolkit.
  • If the GNU parallel tool is installed then the FLUKA merge and ROOT converter tools called by the fluka2root script will use all available cores which makes them run faster.
  • Linux and MacOS are supported. We have never tried to use these tools on Windows.


  1. Get the source code:
    • either git clone
    • or download and uncompress
  2. Set the variable MCTOOLS to the folder where you have installed the code: export MCTOOLS=/path/to/mc-tools (specify the folder containing
  4. Add the $MCTOOLS/bin folder into your $PATH: export PATH=$MCTOOLS/bin:$PATH


e-mail: batkov [аt]

List of authors: Nicolò Borghi, Kazuyoshi Furutaka, Konstantin Batkov

See also