// This file is part of fityk program. Copyright (C) Marcin Wojdyr
// Licence: GNU General Public License version 2
// $Id: guess.h 264 2007-03-01 10:10:54Z wojdyr $

#ifndef FITYK__GUESS__H__
#define FITYK__GUESS__H__

enum FunctionKind { fk_peak, fk_linear /*, fk_step*/, fk_unknown };

/// used for passing peak-estimation conditions 
/// to e.g. Manipul::estimate_peak_parameters() 
struct EstConditions
{
    // only these peaks/functions are considered
    std::vector<int> real_peaks;
};

class DataWithSum;

void estimate_peak_parameters (DataWithSum const* ds,
                               fp range_from, fp range_to, 
                               fp *center, fp *height, fp *area, fp *fwhm,
                               EstConditions const* ec=0);
std::string get_guess_info(DataWithSum const* ds, 
                              std::vector<std::string> const& range);
void guess_and_add(DataWithSum* ds,
                   std::string const& name, std::string const& function,
                   std::vector<std::string> const& range,
                   std::vector<std::string> vars);

bool is_function_guessable(std::string const& formula, 
                           bool check_defvalue=true);

bool is_function_guessable(std::vector<std::string> const& vars, 
                           std::vector<std::string> const& defv,
                           FunctionKind* fk);

bool is_defvalue_guessable(std::string defvalue, FunctionKind k);
FunctionKind get_function_kind(std::string const& formula);

#endif



syntax highlighted by Code2HTML, v. 0.9.1