BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FitStatus.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file Core/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_CORE_FITTING_FITSTATUS_H
21 #define BORNAGAIN_CORE_FITTING_FITSTATUS_H
22 
25 #include <functional>
26 #include <vector>
27 
28 namespace mumufit {
29 class MinimizerResult;
30 }
31 class FitObjective;
32 class FitPrintService;
33 
34 //! Contains status of the fitting (running, interupted etc) and all intermediate
35 //! information which has to be collected during the fit.
36 //! Owned by FitObjective.
37 
38 class FitStatus {
39 public:
40  FitStatus(const FitObjective* fit_objective);
42 
43  void setInterrupted();
44  bool isInterrupted() const;
45  bool isCompleted() const;
46 
47  void update(const mumufit::Parameters& params, double chi2);
48 
49  void initPrint(int every_nth);
50 
51  void addObserver(int every_nth, fit_observer_t);
52 
54 
56 
57  //! Should be explicitely called on last iteration to notify all observers.
58  void finalize(const mumufit::MinimizerResult& result);
59 
60 private:
64  std::unique_ptr<FitPrintService> m_print_service;
67  std::unique_ptr<mumufit::MinimizerResult> m_minimizer_result;
68 };
69 
70 #endif // BORNAGAIN_CORE_FITTING_FITSTATUS_H
71 #endif // USER_API
Defines class FitObserver.
std::function< void(const FitObjective &)> fit_observer_t
Definition: FitTypes.h:35
Defines class IterationInfo.
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting.
Definition: FitObjective.h:33
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:38
void setInterrupted()
Definition: FitStatus.cpp:27
bool isCompleted() const
Definition: FitStatus.cpp:37
void update(const mumufit::Parameters &params, double chi2)
Definition: FitStatus.cpp:42
IterationInfo iterationInfo() const
Definition: FitStatus.cpp:68
void initPrint(int every_nth)
Definition: FitStatus.cpp:52
FitStatus(const FitObjective *fit_objective)
Definition: FitStatus.cpp:20
EFitStatus m_fit_status
Definition: FitStatus.h:62
std::unique_ptr< mumufit::MinimizerResult > m_minimizer_result
Definition: FitStatus.h:67
const FitObjective * m_fit_objective
Definition: FitStatus.h:65
@ INTERRUPTED
Definition: FitStatus.h:61
@ COMPLETED
Definition: FitStatus.h:61
mumufit::MinimizerResult minimizerResult() const
Definition: FitStatus.cpp:73
void finalize(const mumufit::MinimizerResult &result)
Should be explicitely called on last iteration to notify all observers.
Definition: FitStatus.cpp:82
IterationInfo m_iterationInfo
Definition: FitStatus.h:66
void addObserver(int every_nth, fit_observer_t)
Definition: FitStatus.cpp:63
FitObserver< FitObjective > m_observers
Definition: FitStatus.h:63
std::unique_ptr< FitPrintService > m_print_service
Definition: FitStatus.h:64
bool isInterrupted() const
Definition: FitStatus.cpp:32
Stores fit iteration info to track fit flow from various observers.
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.