Program Listing for File SpecsynBlackbody.hpp

↰ Return to documentation for file (src/specsyn/SpecsynBlackbody.hpp)

#ifndef SPECSYNBLACKBODY_HPP
#define SPECSYNBLACKBODY_HPP

#include "../io/SimControls.hpp"
#include "../utils/Constants.hpp"
#include "Specsyn.hpp"
#include <cstddef>
#include <vector>

namespace specsyn
{

    class SpecsynBlackbody : public Specsyn
    {
        // Physical constants, in cgs units, used by this class
        static constexpr double planckH = utils::h;
        static constexpr double speedOfLight = utils::c;
        static constexpr double rydberg = utils::Ryd;
        static constexpr double boltzmannK = utils::kB;
        // Default number of points in the wavelength grid, used when
        // the caller doesn't request a grid of their own -- see the
        // constructor
        static constexpr std::size_t nWlDefault = 1000;

    public:

        explicit SpecsynBlackbody(double wlMin, double wlMax,
            std::size_t nWl,
            const io::SimControls& controls);

        [[nodiscard]] auto spec(const StarData& props, double feh) const -> std::vector<double> override;
    };

} // namespace specsyn

#endif // SPECSYNBLACKBODY_HPP