1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/Model/Tune/FitParameterContainerItem.h
//! @brief Defines class FitParameterContainerItem.
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_MODEL_TUNE_FITPARAMETERCONTAINERITEM_H
#define BORNAGAIN_GUI_MODEL_TUNE_FITPARAMETERCONTAINERITEM_H
#include "GUI/Model/Tune/FitParameterItem.h"
#include "GUI/Model/Tune/FitParameterLinkItem.h"
#include <QObject>
#include <QXmlStreamReader>
namespace mumufit {
class Parameters;
}
class ParameterItem;
//! The FitParameterContainerItem class is a collection of all defined fit parameters in JobItem.
class FitParameterContainerItem : public QObject {
Q_OBJECT
public:
explicit FitParameterContainerItem(QObject* parent = nullptr);
//! Creates fit parameter from given ParameterItem, sets starting value to the value
//! of ParameterItem, copies link.
void createFitParameter(ParameterItem* parameterItem);
void removeFitParameter(FitParameterItem* fitPar);
//! Adds given parameterItem to the existing fit parameter with display name fitParName.
//! If parameterItem is already linked with another fitParameter, it will be relinked
void addToFitParameter(ParameterItem* parameterItem, const QString& fitParName);
//! get the fit parameter item whose link matches the given link.
//!
//! The link is a ParameterItem's path
FitParameterItem* fitParameterItem(const QString& link) const;
//! get the fit parameter item which links the given parameterItem.
FitParameterItem* fitParameterItem(const ParameterItem* parameterItem) const;
QVector<FitParameterItem*> fitParameterItems() const;
//! Returns list of fit parameter display names
QStringList fitParameterNames() const;
void removeLink(const ParameterItem* parameterItem) const;
FitParameterItem* createBareFitParameterItem();
bool isEmpty() const;
void setValuesInParameterContainer(const std::vector<double>& values,
class ParameterContainerItem* parameterContainer) const;
void pullValuesFromParameterContainer(class ParameterContainerItem* parameterContainer);
mumufit::Parameters createParameters() const;
void writeTo(QXmlStreamWriter* w) const;
void readFrom(QXmlStreamReader* r);
private:
FitParameterItem* oldFitParameterItemToBeRemoved(ParameterItem* parameterItem) const;
void updateFitParameterNames();
signals:
void fitItemChanged();
private:
OwningVector<FitParameterItem> m_fit_parameter_items;
};
#endif // BORNAGAIN_GUI_MODEL_TUNE_FITPARAMETERCONTAINERITEM_H
|