.. _program_listing_file_src_specsyn_SpecsynLibChained.hpp: Program Listing for File SpecsynLibChained.hpp ============================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/specsyn/SpecsynLibChained.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef SPECSYNLIBCHAINED_HPP #define SPECSYNLIBCHAINED_HPP #include "../io/SimControls.hpp" #include "Specsyn.hpp" #include "SpecsynCommons.hpp" #include #include #include #include #include #include namespace specsyn { class SpecsynLibChained : public Specsyn { public: SpecsynLibChained( const std::vector& spectraName, double fehMin, double fehMax, double afe, double cfe, const std::vector& microTurb, double r, const std::string& registryName, double wlMin, double wlMax, std::size_t nWl, bool tClamp, const io::SimControls& controls); [[nodiscard]] auto spec(const StarData& props, double feh) const -> std::vector override; [[nodiscard]] auto specForIntegration(const StarData& props, double feh) const -> std::vector override; [[nodiscard]] static auto makeCommonWlGrid( const std::vector>& wlGrids) -> std::vector; [[nodiscard]] auto wnlTeffRanges() const -> const std::array, 3>& { return wnlTeffRanges_; } [[nodiscard]] auto normalLogTeffMax() const -> double { return normalLogTeffMax_; } private: void propagateWNLTeffRanges(); void updateFeHRanges(); void updateLoggRanges(); [[nodiscard]] auto clampFehForLibrary( double feh, double logg, GridType type, std::size_t libIdx) const -> std::pair; [[nodiscard]] static auto propsWithClampedLogg( StarData props, double currentLogg, double clampedLogg) -> StarData; void warnIfFeHClamped(double fehMin, double fehMax) const; [[nodiscard]] auto chainFor(GridType type) const -> const std::vector>&; [[nodiscard]] auto clampNormalLogTeffFloor(StarData props, GridType type) const -> StarData; std::vector> wrLibs_; std::vector> wdLibs_; std::vector> normalLibs_; static constexpr std::size_t nGridType = static_cast(GridType::nGridType); std::array logTeffMin_; std::array logTeffMax_; std::array loggMin_; std::array loggMax_; std::array, 3> wnlTeffRanges_; double normalLogTeffMax_; std::array, nGridType> fehMin_; std::array, nGridType> fehMax_; std::array, nGridType> loggLibMin_; std::array, nGridType> loggLibMax_; std::array, nGridType> libNames_; }; } // namespace specsyn #endif // SPECSYNLIBCHAINED_HPP