Fail the job if we aren't successful in removing the semaphore -- in principle we could finish, but it's important to identify such a situation and understand what went wrong.
Modify Edison submission script to match what I'm using for 10-node jobs.
Pull out a branch in the inner loop of DoPoissonMultiplication.  For gcc 4.7, this does eliminate one conditional jump in the generated assembly.
Stop making builds debug by default.
In DoNoiseMultiplication, draw frequencies from a queue rather than assigning ranges to each thread.  This should ensure that the threads all finish simultaneously (important if we attempt to oversubscribe cores).
An unnecessary vector assign was taking perhaps more than 10% of CPU time; replace it with resize.
Change loop variable from g to f, to be more similar to matching loop.
A new SLAC xrootd server was set up with a faster network connection.  Switch edison script to use it.
It's safer to deallocate vectors after undoing preconditioning -- in this case it is OK, but some information gets used, making this error-prone.  (In particular, it messed me up on the upcoming commit.)
Improvements to the MakeInFile script:

verify that the file identified in the data catalog truly does exist.  In the case of data from the processed folder, verify that the corresponding masked data truly does exist.

Make the script record the output path at entry creation; this allows us to mix output paths for different sets of runs, without interfering with MakeOutDirs.sh.

Write the length (number of entries) of the longest file in a job to LengthOfJob.txt, so that the duration of a job can be adjusted where appropriate.
Remove the USE_MPI and USE_PROCESSES macros -- even at SLAC we will be using multiple processes with mpi, so the code can be simplified.
Call EXOTreeOutputModule::ShutDown as soon as we know we've written all events, rather than in the destructor.  This addresses a bug where tinput was being destroyed before ShutDown had been called.
On NERSC, the compute nodes have a modified linux which ensures cleanup of shared memory.  At SLAC, this is not the case, so using shared memory is unsafe.
Bug fix to the code code used when shared memory is not available.
Remove build.sh -- the makefile is all I use now.  (Build.sh has the one advantage that it records how to link statically to EXOAnalysis, but that was always really dubious anyway.)
Now that we always run in two separate processes, there's no need to lock on FFTW; it's only called from serial code.
RootInterfaceMutex is no longer required -- fully remove it.
Make fSaveToPushEH use a lockfree structure, and remove the corresponding lock.
Also clean up the code that reserves a sufficient number of nodes, since we know ahead of time an upper bound on the number of nodes needed.
Big commit -- the primary purpose of this set of changes is to make denoising handle events with multiple scintillation signals.  This is important so we can denoise strong source runs needed for generating a lightmap.

However, this commit also modifies the way model waveforms are stored in an attempt at making the handling of charge and light models more uniform.  In the process of doing this, at least one bug affecting charge denoising was found and fixed.
We should always use the sequential version of MKL; adjusting flags to match.