BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
FitStatus.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Sim/Fitting/FitStatus.h
6 //! @brief Defines class FitStatus.
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 #ifdef SWIG
16 #error no need to expose this header to Swig
17 #endif
18 
19 #ifndef USER_API
20 #ifndef BORNAGAIN_SIM_FITTING_FITSTATUS_H
21 #define BORNAGAIN_SIM_FITTING_FITSTATUS_H
22 
25 #include <functional>
26 #include <vector>
27 
28 namespace mumufit {
29 
30 class MinimizerResult;
31 }
32 class FitObjective;
33 class FitPrintService;
34 
35 //! Contains status of the fitting (running, interupted etc) and all intermediate
36 //! information which has to be collected during the fit.
37 //! Owned by FitObjective.
38 
39 class FitStatus {
40 public:
41  FitStatus(const FitObjective* fit_objective);
43 
44  void setInterrupted();
45  bool isInterrupted() const;
46  bool isCompleted() const;
47 
48  void update(const mumufit::Parameters& params, double chi2);
49 
50  void initPrint(int every_nth);
51 
52  void addObserver(int every_nth, fit_observer_t&&);
53 
55 
57 
58  //! Should be explicitly called on last iteration to notify all observers.
59  void finalize(const mumufit::MinimizerResult& result);
60 
61 private:
65  std::unique_ptr<FitPrintService> m_print_service;
68  std::unique_ptr<mumufit::MinimizerResult> m_minimizer_result;
69 };
70 
71 #endif // BORNAGAIN_SIM_FITTING_FITSTATUS_H
72 #endif // USER_API
Defines class FitObserver.
std::function< void(const FitObjective &)> fit_observer_t
Definition: FitTypes.h:36
Defines class IterationInfo.
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting....
Definition: FitObjective.h:42
Prints fit statistics to standard output during minimizer iterations.
Contains status of the fitting (running, interupted etc) and all intermediate information which has t...
Definition: FitStatus.h:39
void setInterrupted()
Definition: FitStatus.cpp:29
bool isCompleted() const
Definition: FitStatus.cpp:39
void update(const mumufit::Parameters &params, double chi2)
Definition: FitStatus.cpp:44
IterationInfo iterationInfo() const
Definition: FitStatus.cpp:70
void initPrint(int every_nth)
Definition: FitStatus.cpp:54
FitStatus(const FitObjective *fit_objective)
Definition: FitStatus.cpp:21
EFitStatus m_fit_status
Definition: FitStatus.h:63
std::unique_ptr< mumufit::MinimizerResult > m_minimizer_result
Definition: FitStatus.h:68
const FitObjective * m_fit_objective
Definition: FitStatus.h:66
@ INTERRUPTED
Definition: FitStatus.h:62
@ COMPLETED
Definition: FitStatus.h:62
mumufit::MinimizerResult minimizerResult() const
Definition: FitStatus.cpp:75
void finalize(const mumufit::MinimizerResult &result)
Should be explicitly called on last iteration to notify all observers.
Definition: FitStatus.cpp:84
IterationInfo m_iterationInfo
Definition: FitStatus.h:67
FitObserver< FitObjective > m_observers
Definition: FitStatus.h:64
std::unique_ptr< FitPrintService > m_print_service
Definition: FitStatus.h:65
bool isInterrupted() const
Definition: FitStatus.cpp:34
void addObserver(int every_nth, fit_observer_t &&)
Definition: FitStatus.cpp:65
Stores fit iteration info to track fit flow from various observers. Used in context of FitObjective.
Definition: IterationInfo.h:25
Result of minimization round.
A collection of fit parameters.
Definition: Parameters.h:26
The multi-library, multi-algorithm fit wrapper library.