My preshower simulation is called ACME. I have submitted a paper on ACME comparing it to the CORSIKA gamma ray code "PRESHOWER" to Astrophysics Journal Supplement. Complete with user's guide, a preprint of this paper is availiable from this site.

The simulation is written in C++ and depends on the GNU Scientific Library for Bessel functions, integration, interpolation and maximization. I have prepared a couple of C++ wrapper classes and functions for the GSL.

I also use the GEOPACK FORTRAN library by N. A. Tsyganenko, which I have created a C/C++ header file for.

Seldom Asked Questions:

Why is it called ACME?

Well, the full title is "ACME: Getting Coffee", which is not only an anagram of "geomagnetic effect" but also an apt description of the method I used to write it.

Really? But That's Dumb!

OK, well if you insist, ACME is an acronym: "ACME Calculates Magnetic Effects". A recursive acronym in the grand tradition.

The Jargon File also has a nice entry on the word ACME: Describing some X as an "Acme X" either means "This is insanely great", or, more likely, "This looks insanely great on paper, but in practice it's really easy to shoot yourself in the foot with it." Which I think is a wonderful description for a simulation of a non-directly observable effect (written in C++).