BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FitObjectiveBuilder.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/FitWidgets/FitObjectiveBuilder.h
6 //! @brief Defines class FitObjectiveBuilder
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_GUI_COREGUI_VIEWS_FITWIDGETS_FITOBJECTIVEBUILDER_H
16 #define BORNAGAIN_GUI_COREGUI_VIEWS_FITWIDGETS_FITOBJECTIVEBUILDER_H
17 
18 #include <memory>
19 
20 class JobItem;
21 class FitObjective;
22 class ISimulation;
23 namespace mumufit {
24 class Parameters;
25 }
26 template <class T> class OutputData;
27 class IMinimizer;
28 class GUIFitObserver;
29 class IChiSquaredModule;
30 
32 public:
33  FitObjectiveBuilder(JobItem* jobItem);
35 
36  void runFit();
37 
38  std::unique_ptr<FitObjective> createFitObjective() const;
39  std::unique_ptr<IMinimizer> createMinimizer() const;
40  std::unique_ptr<IChiSquaredModule> createChiSquaredModule() const;
41 
43 
44  void attachObserver(std::shared_ptr<GUIFitObserver> observer);
45 
46  void interruptFitting();
47 
48 private:
50 
51  std::unique_ptr<ISimulation> buildSimulation(const mumufit::Parameters& params) const;
52  std::unique_ptr<OutputData<double>> createOutputData() const;
53 
54  void update_fit_parameters(const mumufit::Parameters& params) const;
55 
56  std::shared_ptr<GUIFitObserver> m_observer;
57  std::unique_ptr<FitObjective> m_fit_objective;
58 };
59 
60 #endif // BORNAGAIN_GUI_COREGUI_VIEWS_FITWIDGETS_FITOBJECTIVEBUILDER_H
std::unique_ptr< IChiSquaredModule > createChiSquaredModule() const
void attachObserver(std::shared_ptr< GUIFitObserver > observer)
std::unique_ptr< ISimulation > buildSimulation(const mumufit::Parameters &params) const
std::unique_ptr< IMinimizer > createMinimizer() const
FitObjectiveBuilder(JobItem *jobItem)
std::shared_ptr< GUIFitObserver > m_observer
std::unique_ptr< FitObjective > createFitObjective() const
mumufit::Parameters createParameters() const
std::unique_ptr< FitObjective > m_fit_objective
std::unique_ptr< OutputData< double > > createOutputData() const
void update_fit_parameters(const mumufit::Parameters &params) const
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting.
Definition: FitObjective.h:33
Serves as observer for FitObjective and saves fit iteration data for later display in GUI widgets.
Interface residual calculations.
Abstract base class for all kind minimizers.
Definition: IMinimizer.h:30
Abstract base class of OffSpecularSimulation, GISASSimulation and SpecularSimulation.
Definition: ISimulation.h:38
Templated class to store data of type double or CumulativeValue in multi-dimensional space.
Definition: OutputData.h:32
A collection of fit parameters.
Definition: Parameters.h:26
The multi-library, multi-algorithm fit wrapper library.