The main difficulties with visualizing the output of modern Monte Carlos are the lack of an explicit time sequence and the hardware requirements of 3D rendering. The missing time sequence is because modern Monte Carlos work from one interaction to another. So a particle may travel very far or almost not at all before suffering another interaction. In addition particles are tracked in family order (parent, daughter, etc.), not order of creation. In order to work around this difficulty Stefan Westerhoff modified the CORSIKA and GEANT monte carlos to output information about every interaction. Using a custom program I can compile interaction pairs into the endpoints of lines which represent segments of the particles' trajectories. The line segments are placed into a database, and I can then find all the lines which overlap a particular moment in time. By interpolating the particles position, momentum, and energy, I can then approximate the position and state of a particle at any arbitrary time. One "frame" of the animation is based on the position and energy of the particles at a specific point in time. By looping through the database one can create a set of data frames equally spaced in time. Each data frame contains the position, energy, momentum, and particle type of each particle in the shower at that moment in time. These data frames can then be rendered and compiled into a movie.

The hardware requirements of 3D rendering are very steep. I did all of the rendering and most of the other computation on a customized SGI Onyx 2 mainframe at the UCSC Scientific Visualization Laboratory. Except for the video editing software the other programs are free and can run on any platform. However, the rendering and time sequencing are computation and memory intensive, with the rendering wanting 1Gbyte of physical memory. Large disks are also needed with even a small movie needing >1Gbyte of disk space while being produced.

Below is a detailed outline of how the movies were produced. If you would like the source code for any of my programs or any advice on creating animations please email me. I am also available for colloquium and seminar presentations. If you would like more information about me and my research please visit my web page, and I look forward to hearing from you.

-Miguel F. Morales


Create input
CORSIKA or Front
This step is only needed for the Milagro Animations. CORSIKA is used for generating EAS and the custom program Front for the Toy Model EAS.
Monte Carlo Simulation
Modified versions of CORSIKA and GEANT
CORSIKA was used for the EAS Animations and GEANT for the Milagro Animations. Both were modified by Stefan Westerhoff to output position, time, momentum, etc. for every particle interaction.
Determine particle positions for every movie frame
TimeSlicer is a custom program that regains the time information. First it combines the particle interactions into pairs to create segments of the particle trajectories. It then sorts by time to find all paths overlapping a particular frame and interpolates to find the particle position at a specific moment in time. Particle positions for each frame are output into native Data Explorer file format.
Render each frame
Program provides modules which can be linked together into custom scripts or "visual programs" that render the frames. Custom scripts were used to loop through and render each frame.
Compile frames into a QuickTime movie
Adobe Premiere
Links frames into a movie. Program worked and there is an old version for SGI's, but there are better options available