SIMC almost always uses the standard Hall C coordinate system, as defined in the Hall C Vade Mecum[2]. This means that in all cases, points downwards and points to the left when looking along . is along the central ray of the spectrometer when talking about hms or sos quantities, and is along the beamline when talking about scattering angles in the lab. is the scattering angle (angle between the beamline and the outgoing event), and is the azimuthal angle. , which means that is down, is beam left, etc.... Thus, , and .
There are, of course, a couple of exceptions. When generating the interaction point, we use the Accelerator coordinate system (as we do in the engine for the BPMs and Raster). In this case, y is vertical (+y is up??), x is horizontal (+x is left??), and z is downstream. In addition, some experiment specific quantities are defined (or calculated) using another coordinate system. Where this is the case, the code is commented, and a transformation is made between the standard SIMC coordinates and the desired values. However, any global variables SIMC uses should use the standard coordinate system.
Units are another matter entirely. As a rule, all distances are in cm, and most energies are in MeV. After that, it's anybody's guess. In order to make the code less unfriendly, I have tried to make sure that all input or output has comments that give the units, and have made all of the Ntuple variables follow the Hall C convention for units (GeV/cm/radians) as well as the standard naming conventions for the engine ntuples.