#ifndef fit_phys_env_hpp_ #define fit_phys_env_hpp_ #include #include #include class FitEnv { public: // fit variable info struct VarInfo { double physVal; Latan::Index index; }; // fitted quantity info struct QuInfo { Latan::DoubleModel model; Latan::Index index; }; // ensemble struct Ensemble { unsigned int nT, nL; }; // point struct Point { bool isActive{true}; const Ensemble *ensemble{nullptr}; std::map fileName; std::vector coord; }; // data container struct Data { std::string fileName; Latan::DSample value; }; // table types typedef std::vector> DataTable; typedef std::map> IndexTable; public: FitEnv(void) = default; virtual ~FitEnv(void) = default; void reset(void); void parseXml(const std::string paramFileName); std::string macroSubst(const std::string str) const; void load(void); Latan::XYSampleData generateData(void); friend std::ostream & operator<<(std::ostream &out, FitEnv &f); private: Latan::Index nSample_; std::vector nT_, nL_; DataTable varData_, quData_; IndexTable varIndex_, quIndex_; std::map variable_; std::vector varName_; std::map quantity_; std::vector quName_; std::map ensemble_; std::vector point_; std::map macro_; }; std::ostream & operator<<(std::ostream &out, FitEnv &f); #endif // fit_phys_env_hpp_