WimPyDD: An object–oriented Python code for the calculation of WIMP direct detection signals
We introduce WimPyDD, a modular, object–oriented and customizable Python code that calculates accurate predictions of nuclear scattering expected rates for Weakly Interacting Massive Particle (WIMP) direct–detection experiments within the framework of Galilean–invariant non–relativistic effective theory in virtually any scenario, including inelastic scattering, an arbitrary WIMP spin and a generic WIMP velocity distribution in the Galactic halo. WimPyDD can also be used to analyze WIMP direct detection signals in halo–independent approaches where the velocity distribution is written in terms of a superposition of streams taken as free parameters. WimPyDD exploits the factorization of the three main components that enter in the calculation of direct detection signals: i) the Wilson coefficients that encode the dependence of the signals on the ultraviolet completion of the effective theory; ii) a response function that depends on the nuclear physics and on the main features of the experimental detector (acceptance, energy resolution, response to nuclear recoils); iii) a halo function that depends on the WIMP velocity distribution and that encodes the astrophysical inputs. In WimPyDD these three components are calculated and stored separately for later interpolation and combined together only as the last step of the signal evaluation procedure. This makes the phenomenological study of the direct detection scattering rate with WimPyDD transparent and fast also when the parameter space of the WIMP model has a large dimensionality.