A Spectra is a set of histograms plotting a particular quantity. The histograms are broken down by neutrino flavor, parent species, applied cross section, and detector location. In other words, a separate histogram will be created for each set of those four parameters. When a Spectra is constructed, it is given a Parameters object. However this object is configured at the time it is given to the Spectra is what determines what set of parameters will be used to create the different distributions.

There are four types of Spectra, the Spectra1D, Spectra2D, Spectra3D, and SpectraCorrDet. For the 1D, 2D, and 3D variety, a different histogram is created for each set of four parameters listed above. The only difference between these histograms is that they plot one variable, two variables, and three variables, respectively. The SpectraCorrDet is created by specifying two specific detectors, and plots a variable at one detector on its x axis, versus the same variable at the other detector on its y axis. This type of Spectra only creates a different histogram for each set of neutrino flavor, parent species, and applied cross section, since the detectors are set. None of the Spectra constructors are public, so the user cannot directly create one of these objects. The user indirectly defines which Spectra is used by calling the appropriate version of FluxReader::AddSpectra.