BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FitStatus Class Reference
Collaboration diagram for FitStatus:

Public Member Functions

 FitStatus (const FitObjective *fit_objective)
 
 ~FitStatus ()
 
void setInterrupted ()
 
bool isInterrupted () const
 
bool isCompleted () const
 
void update (const Fit::Parameters &params, double chi2)
 
void initPrint (int every_nth)
 
void addObserver (int every_nth, fit_observer_t)
 
IterationInfo iterationInfo () const
 
Fit::MinimizerResult minimizerResult () const
 
void finalize (const Fit::MinimizerResult &result)
 

Private Types

enum  EFitStatus {
  IDLE , RUNNING , COMPLETED , FAILED ,
  INTERRUPTED
}
 

Private Attributes

EFitStatus m_fit_status
 
FitObserver< FitObjectivem_observers
 
std::unique_ptr< FitPrintServicem_print_service
 
const FitObjectivem_fit_objective
 
IterationInfo m_iterationInfo
 
std::unique_ptr< Fit::MinimizerResultm_minimizer_result
 

Detailed Description

Contains status of the fitting (running, interupted etc) and all intermediate information which has to be collected during the fit.

Owned by FitObjective.

Definition at line 34 of file FitStatus.h.

Member Enumeration Documentation

◆ EFitStatus

enum FitStatus::EFitStatus
private
Enumerator
IDLE 
RUNNING 
COMPLETED 
FAILED 
INTERRUPTED 

Definition at line 58 of file FitStatus.h.

Constructor & Destructor Documentation

◆ FitStatus()

FitStatus::FitStatus ( const FitObjective fit_objective)

Definition at line 20 of file FitStatus.cpp.

21  : m_fit_status(IDLE), m_fit_objective(fit_objective)
22 {
23 }
EFitStatus m_fit_status
Definition: FitStatus.h:59
const FitObjective * m_fit_objective
Definition: FitStatus.h:62

◆ ~FitStatus()

FitStatus::~FitStatus ( )
default

Member Function Documentation

◆ setInterrupted()

void FitStatus::setInterrupted ( )

Definition at line 27 of file FitStatus.cpp.

28 {
30 }

References INTERRUPTED, and m_fit_status.

◆ isInterrupted()

bool FitStatus::isInterrupted ( ) const

Definition at line 32 of file FitStatus.cpp.

33 {
34  return m_fit_status == INTERRUPTED;
35 }

References INTERRUPTED, and m_fit_status.

Referenced by update().

◆ isCompleted()

bool FitStatus::isCompleted ( ) const

Definition at line 37 of file FitStatus.cpp.

38 {
39  return m_fit_status == COMPLETED;
40 }

References COMPLETED, and m_fit_status.

◆ update()

void FitStatus::update ( const Fit::Parameters params,
double  chi2 
)

Definition at line 42 of file FitStatus.cpp.

43 {
44  if (!isInterrupted())
46 
47  m_iterationInfo.update(params, chi2);
48 
50 }
void notify(const T &data)
Notifies all observers at their personally specified intervals.
Definition: FitObserver.h:69
IterationInfo m_iterationInfo
Definition: FitStatus.h:63
FitObserver< FitObjective > m_observers
Definition: FitStatus.h:60
bool isInterrupted() const
Definition: FitStatus.cpp:32
void update(const Fit::Parameters &params, double chi2)

References isInterrupted(), m_fit_objective, m_fit_status, m_iterationInfo, m_observers, FitObserver< T >::notify(), RUNNING, and IterationInfo::update().

Here is the call graph for this function:

◆ initPrint()

void FitStatus::initPrint ( int  every_nth)

Definition at line 52 of file FitStatus.cpp.

53 {
55 
56  FitObserver<FitObjective>::observer_t callback = [&](const FitObjective& objective) {
57  m_print_service->print(objective);
58  };
59 
60  addObserver(every_nth, callback);
61 }
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting.
Definition: FitObjective.h:34
Contains collection of observers and call them at specified intervals.
Definition: FitObserver.h:26
Prints fit statistics to standard output during minimizer iterations.
void addObserver(int every_nth, fit_observer_t)
Definition: FitStatus.cpp:63
std::unique_ptr< FitPrintService > m_print_service
Definition: FitStatus.h:61

References addObserver(), and m_print_service.

Here is the call graph for this function:

◆ addObserver()

void FitStatus::addObserver ( int  every_nth,
fit_observer_t  observer 
)

Definition at line 63 of file FitStatus.cpp.

64 {
65  m_observers.addObserver(every_nth, observer);
66 }
void addObserver(int every_nth, observer_t observer)
Adds observer to the list.
Definition: FitObserver.h:64

References FitObserver< T >::addObserver(), and m_observers.

Referenced by initPrint().

Here is the call graph for this function:

◆ iterationInfo()

IterationInfo FitStatus::iterationInfo ( ) const

Definition at line 68 of file FitStatus.cpp.

69 {
70  return m_iterationInfo;
71 }

References m_iterationInfo.

◆ minimizerResult()

Fit::MinimizerResult FitStatus::minimizerResult ( ) const

Definition at line 73 of file FitStatus.cpp.

74 {
75  if (!m_minimizer_result)
76  throw std::runtime_error("FitStatus::minimizerResult() -> Minimizer result wasn't set. "
77  "Make sure that FitObjective::finalize() was called.");
78 
80 }
std::unique_ptr< Fit::MinimizerResult > m_minimizer_result
Definition: FitStatus.h:64
Result of minimization round.

References m_minimizer_result.

◆ finalize()

void FitStatus::finalize ( const Fit::MinimizerResult result)

Should be explicitely called on last iteration to notify all observers.

Definition at line 82 of file FitStatus.cpp.

83 {
84  m_minimizer_result.reset(new Fit::MinimizerResult(result));
87 }
void notify_all(const T &data)
Definition: FitObserver.h:79

References COMPLETED, m_fit_objective, m_fit_status, m_minimizer_result, m_observers, and FitObserver< T >::notify_all().

Here is the call graph for this function:

Member Data Documentation

◆ m_fit_status

EFitStatus FitStatus::m_fit_status
private

Definition at line 59 of file FitStatus.h.

Referenced by finalize(), isCompleted(), isInterrupted(), setInterrupted(), and update().

◆ m_observers

FitObserver<FitObjective> FitStatus::m_observers
private

Definition at line 60 of file FitStatus.h.

Referenced by addObserver(), finalize(), and update().

◆ m_print_service

std::unique_ptr<FitPrintService> FitStatus::m_print_service
private

Definition at line 61 of file FitStatus.h.

Referenced by initPrint().

◆ m_fit_objective

const FitObjective* FitStatus::m_fit_objective
private

Definition at line 62 of file FitStatus.h.

Referenced by finalize(), and update().

◆ m_iterationInfo

IterationInfo FitStatus::m_iterationInfo
private

Definition at line 63 of file FitStatus.h.

Referenced by iterationInfo(), and update().

◆ m_minimizer_result

std::unique_ptr<Fit::MinimizerResult> FitStatus::m_minimizer_result
private

Definition at line 64 of file FitStatus.h.

Referenced by finalize(), and minimizerResult().


The documentation for this class was generated from the following files: