  Geant4 has been used throughout the nuclear and high-energy physics community
to simulate energy depositions in various detectors and materials. These
simulations have mostly been run with a source beam outside the detector. In
the case of low-background physics, however, a primary concern is the effect on
the detector from radioactivity inherent in the detector parts themselves. From
this standpoint, there is no single source or beam, but rather a collection of
sources with potentially complicated spatial extent. LUXSim is a simulation
framework used by the LUX collaboration that takes a component-centric approach
to event generation and recording. A new set of classes allows for multiple
radioactive sources to be set within any number of components at run time, with
the entire collection of sources handled within a single simulation run.
Various levels of information can also be recorded from the individual
components, with these record levels also being set at runtime. This
flexibility in both source generation and information recording is possible
without the need to recompile, reducing the complexity of code management and
the proliferation of versions. Within the code itself, casting geometry objects
within this new set of classes rather than as the default Geant4 classes
automatically extends this flexibility to every individual component. No
additional work is required on the part of the developer, reducing development
time and increasing confidence in the results. We describe the guiding
principles behind LUXSim, detail some of its unique classes and methods, and
give examples of usage.
  * Corresponding author, kareem@llnl.gov
