<!--
.. title: Free software for particle physicists
.. slug: hep-software
.. date: 2007-05-16 19:23:00
.. type: text
.. category: blog
-->

**This is out of date. Update coming soon, since 'outside' software for HEP has improved immeasurably since 2006 or whenever I wrote this.**

There's a lot of free software available on the Web for academic and technical purposes. In the absence of anything
better to do, here's a list of the stuff I'm aware of and rate as being worth a try.

First, though, some pointers to bigger lists on Wikipedia:

* [Stats packages](http://en.wikipedia.org/wiki/List_of_statistical_packages)  * [Graphing
packages](http://en.wikipedia.org/wiki/List_of_information_graphics_software)  * [Numerical analysis
list](http://en.wikipedia.org/wiki/List_of_numerical_analysis_software)  * [Numerical analysis
comparisons](http://en.wikipedia.org/wiki/Comparison_of_numerical_analysis_software)  * [Computer algebra
packages](http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems)  * [Comparison of programming
languages](http://en.wikipedia.org/wiki/Comparison_of_programming_languages)

and this [very nice list from SciPy](http://www.scipy.org/Topical_Software)

### Drawing Feynman diagrams  There are many ways to draw Feynman diagrams. Often the difficult bit is making the
associated text labels fit in with the text in the bulk of your text. If writing in LaTeX, the best approach is often to
create the diagrams from TeX primitives, using macro packages. Otherwise, there are standalone packages (and there are
always vector graphics packages, though you may find boson lines hard to draw). Within the LaTeX solutions there is
still freedom of choice between the graphics geometry-oriented approaches and the appealing approach of constructing the
diagram from a specified topology.

* FeynDiagram: http://www.feyndiagram.com  * JaxoDraw: http://jaxodraw.sourceforge.net  * pyfeyn:
http://projects.hepforge.org/pyfeyn/  * Axodraw: http://www.nikhef.nl/~form/FORMdistribution/axodraw/  * Feynmf:
http://www.ctan.org/tex-archive/macros/latex/contrib/feynmf/  * FeynArts: http://www.feynarts.de  * Graphviz dot:
http://www.research.att.com/sw/tools/graphviz/  * pydot: http://dkbza.org/pydot.html  * FeynML (unfinished):
http://projects.hepforge.org/feynml/  * or you can always do it by hand with Impress, PowerPoint, Xfig etc.

### Statistical analysis  * StatPatternRecognition: http://www.slac.stanford.edu/~narsky/  * SciPy: http://www.scipy.org
* Python(x,y): http://www.pythonxy.com  * R: http://www.r-project.org  * ROOT: http://root.cern.ch  * PyMinuit:
http://code.google.com/p/pyminuit/  * Hippodraw: http://www.slac.stanford.edu/grp/ek/hippodraw/  * RooFit:
http://roofit.sourceforge.net  * PAW: Urgh! Not telling!

### Data plotting  There are a lot of different approaches to data plotting tools, from the point 'n' click approach to
more programmatic methods. My bias for serious scientific data analysis is that programmatic reproducibility is
important and so the WYSIWYG tools are primarily useful for quick checks of data appearance rather than professional
quality output or rapid regeneration when you realise a problem with your analysis scheme! The ideal package would
probably be a nice GUI application with a flexible, multi-level API in a nice scripting language. I guess the closest
approach to this is Hippodraw, but I've personally found Matplotlib to be very good. I've fought off my [better
instincts](/howto/problems-with-root) and put ROOT somewhere near the top of this list, but you have to be careful:
default plots look terrible, the API is a nightmare and the default scripting language (CINT) is unstable and ill-suited
to the task. The Python interface is better, but you have been warned!

* Chaco (looks fantastic!): http://code.enthought.com/chaco/  * Matplotlib: http://matplotlib.sourceforge.net  * ROOT
(yuck! Use the Python interface rather than CINT): http://root.cern.ch  * Hippodraw:
http://www.slac.stanford.edu/grp/ek/hippodraw/  * Gnuplot: http://gnuplot.sourceforge.net  * PGFplots:
http://sourceforge.net/projects/pgfplots , http://www.ctan.org/tex-archive/help/Catalogue/entries/pgfplots.html  *
PyXPlot: http://www.pyxplot.org.uk  * PyX: http://pyx.sourceforge.net  * JAS3: http://jas.freehep.org/jas3/  * Biggles:
http://biggles.sourceforge.net/  * PyNGL: http://www.pyngl.ucar.edu  * ReportLab: http://www.reportlab.org  * cTioga:
http://sciyag.rubyforge.org/ctioga/index.html  * Tioga: http://www.kitp.ucsb.edu/~paxton/tioga.html  * AIDA:
http://aida.freehep.org, http://paida.sourceforge.net, http://java.freehep.org/jaida/  * pygrace:
http://www.its.caltech.edu/~mmckerns/software.html  * jFreeChart: http://www.jfree.org/jfreechart/  * Sci. Graphics
Toolkit: http://www.epic.noaa.gov/java/sgt/  * GNU plotutils: http://www.gnu.org/software/plotutils  * gri:
http://gri.sourceforge.net  * grace: http://plasma-gate.weizmann.ac.il/Grace/  * R: http://www.r-project.org  * DISLIN:
http://www.mps.mpg.de/dislin/  * PLplot: http://plplot.sourceforge.net  * Topdrawer:
http://www.slac.stanford.edu/grp/ara/groups/BIG/codes/topdrawer/  * pychart: http://home.gna.org/pychart/

### Diagrams  These are all drawing packages of the point and click type. If you want programmatic diagramming, which
might be useful for mathematical diagrams, then there are plenty of approaches: PyX and Tioga above, are viable options,
as is Cairo (through the Python or Ruby APIs, for example) and finally writing Postscript by hand, which is more fun
than it sounds (see Bill Casselman's excellent "Mathematical Illustrations" book for more information).

* PGF/TikZ: http://sourceforge.net/projects/pgf/ , http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html  *
Inkscape: http://www.inkscape.org  * Sodipodi: http://www.sodipodi.com  * PyX: http://pyx.sourceforge.net  * Asymptote:
http://asymptote.sourceforge.net/  * SVGfig: http://code.google.com/p/svgfig/  * Xfig: http://www.xfig.org  * jfig: http
://tams-www.informatik.uni-hamburg.de/applets/jfig/  * MetaPost: http://plan9.bell-labs.com/who/hobby/MetaPost.html  *
Graphviz: http://www.research.att.com/sw/tools/graphviz/  * Mac OS X Graphviz: http://www.pixelglow.com/graphviz/  *
pydot: http://dkbza.org/pydot.html  * dot2tex: http://www.fauskes.net/code/dot2tex/  * Gimp: http://www.gimp.org  *
Skencil: http://www.skencil.org  * Karbon14: http://www.koffice.org/karbon  * OpenOffice Draw:
http://www.openoffice.org/product/draw.html

### Maths (symbolic algebra)  * Maxima: http://maxima.sourceforge.net  * FormCalc: http://www.feynarts.de/formcalc/  *
FeynArts: http://www.feynarts.de  * Cadabra:http://www.aei.mpg.de/~peekas/cadabra/  * Axiom:http://www.axiom-
developer.org  * REDUCE:http://reduce-algebra.com  * Giram: http://www.giram.org  * Ginac: http://www.ginac.de  * yacas:
http://yacas.sourceforge.net  * gTybalt: http://wwwthep.physik.uni-mainz.de/~stefanw/gtybalt/  * Kayali (KDE interface
to Maxima): http://kayali.sourceforge.net/

### Documentation and write-ups  LaTeX is the obvious one here, but for many purposes such as technical documentation
there are other, arguably better, tools.

* LaTeX: http://www.latex-project.org  * AsciiDoc: http://www.methods.co.nz/asciidoc/  * tbook:
http://tbookdtd.sourceforge.net  * Docbook: http://www.docbook.org  * Apache Forrest: http://forrest.apache.org  *
Twisted Lore: http://twistedmatrix.com/projects/lore/documentation/howto/lore.html  * Doxygen: http://www.doxygen.org  *
HTML: http://www.w3.org/MarkUp/  * PyBibliographer: http://pybliographer.org/Documentation/Screenshots  * eqe (for eqn
rendering) http://www.gnomefiles.org/app.php?soft_id=1040  * XINDY (for making indexes more easily)
http://xindy.sourceforge.net/

### Presentations  * LaTeX Beamer: http://beamer.sourceforge.net  * OpenOffice Impress:
http://www.openoffice.org/product/impress.html  * MagicPoint: http://member.wide.ad.jp/wg/mgp/  * S5:
http://meyerweb.com/eric/tools/s5/  * LaTeX: slides, prosper, foiltex: http://www.latex-project.org  * Docbook:
http://www.docbook.org  * PPower: http://www-sp.iti.informatik.tu-darmstadt.de/software/ppower4/
