BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SimulationSetupAssistant Class Reference

The SimulationSetupAssistant class provides sample, instrument and real data validation before submitting the job. More...

Public Member Functions

 SimulationSetupAssistant ()
 Returns true if given setup is valid for submitting the job. More...
 
bool isValidSimulationSetup (const MultiLayerItem *multiLayerItem, const InstrumentItem *instrumentItem, const RealDataItem *realData=0)
 

Private Member Functions

void checkFittingSetup (const InstrumentItem *instrumentItem, const RealDataItem *realData)
 Check if setup is suitable for fitting. More...
 
void checkInstrumentItem (const InstrumentItem *instrumentItem)
 
void checkMultiLayerItem (const MultiLayerItem *multiLayerItem)
 
void clear ()
 
QString composeMessage ()
 Composes the error message for message box. More...
 

Private Attributes

bool m_isValid
 
QStringList m_messages
 

Detailed Description

The SimulationSetupAssistant class provides sample, instrument and real data validation before submitting the job.

Definition at line 27 of file SimulationSetupAssistant.h.

Constructor & Destructor Documentation

◆ SimulationSetupAssistant()

SimulationSetupAssistant::SimulationSetupAssistant ( )

Returns true if given setup is valid for submitting the job.

Definition at line 24 of file SimulationSetupAssistant.cpp.

Member Function Documentation

◆ checkFittingSetup()

void SimulationSetupAssistant::checkFittingSetup ( const InstrumentItem instrumentItem,
const RealDataItem realData 
)
private

Check if setup is suitable for fitting.

In the case when there is a realData defined, its axes will be compared with current detector item.

Definition at line 74 of file SimulationSetupAssistant.cpp.

76 {
77  if (!realData || !instrumentItem || instrumentItem->alignedWith(realData))
78  return;
79 
80  m_isValid = false;
81  m_messages.append("The experimental data does not fit in the selected instrument. Try linking "
82  "them in Import Tab.");
83 }
virtual bool alignedWith(const RealDataItem *item) const

References InstrumentItem::alignedWith(), m_isValid, and m_messages.

Referenced by isValidSimulationSetup().

Here is the call graph for this function:

◆ checkInstrumentItem()

void SimulationSetupAssistant::checkInstrumentItem ( const InstrumentItem instrumentItem)
private

Definition at line 63 of file SimulationSetupAssistant.cpp.

64 {
65  if (!instrumentItem) {
66  m_messages.append("No instrument selected");
67  m_isValid = false;
68  }
69 }

References m_isValid, and m_messages.

Referenced by isValidSimulationSetup().

◆ checkMultiLayerItem()

void SimulationSetupAssistant::checkMultiLayerItem ( const MultiLayerItem multiLayerItem)
private

Definition at line 49 of file SimulationSetupAssistant.cpp.

50 {
51  if (!multiLayerItem) {
52  m_messages.append("No sample selected");
53  m_isValid = false;
54  } else {
55  SampleValidator sampleValidator;
56  if (!sampleValidator.isValidMultiLayer(multiLayerItem)) {
57  m_isValid = false;
58  m_messages.append(sampleValidator.getValidationMessage());
59  }
60  }
61 }
Validates SampleModel for MultiLayerItem suitable for simulation.
QString getValidationMessage() const
bool isValidMultiLayer(const MultiLayerItem *multilayer)

References SampleValidator::getValidationMessage(), SampleValidator::isValidMultiLayer(), m_isValid, and m_messages.

Referenced by isValidSimulationSetup().

Here is the call graph for this function:

◆ clear()

void SimulationSetupAssistant::clear ( )
private

Definition at line 43 of file SimulationSetupAssistant.cpp.

44 {
45  m_isValid = true;
46  m_messages.clear();
47 }

References m_isValid, and m_messages.

Referenced by isValidSimulationSetup().

◆ composeMessage()

QString SimulationSetupAssistant::composeMessage ( )
private

Composes the error message for message box.

Definition at line 87 of file SimulationSetupAssistant.cpp.

88 {
89  QString result("Can't run the job with current settings\n\n");
90  for (auto message : m_messages) {
91  QString text = QString("- %1 \n").arg(message);
92  result.append(text);
93  }
94  return result;
95 }

References m_messages.

Referenced by isValidSimulationSetup().

◆ isValidSimulationSetup()

bool SimulationSetupAssistant::isValidSimulationSetup ( const MultiLayerItem multiLayerItem,
const InstrumentItem instrumentItem,
const RealDataItem realData = 0 
)

Definition at line 26 of file SimulationSetupAssistant.cpp.

29 {
30  clear();
31 
32  checkMultiLayerItem(multiLayerItem);
33  checkInstrumentItem(instrumentItem);
34  checkFittingSetup(instrumentItem, realData);
35 
36  if (!m_isValid)
37  QMessageBox::warning(nullptr, "Can't run the job",
38  composeMessage()); // #baTODO fix modality
39 
40  return m_isValid;
41 }
void checkInstrumentItem(const InstrumentItem *instrumentItem)
QString composeMessage()
Composes the error message for message box.
void checkFittingSetup(const InstrumentItem *instrumentItem, const RealDataItem *realData)
Check if setup is suitable for fitting.
void checkMultiLayerItem(const MultiLayerItem *multiLayerItem)
void warning(QWidget *parent, const QString &title, const QString &text, const QString &detailedText)
Definition: GUIHelpers.cpp:74

References checkFittingSetup(), checkInstrumentItem(), checkMultiLayerItem(), clear(), composeMessage(), m_isValid, and GUIHelpers::warning().

Referenced by SimulationSetupWidget::onExportToPythonScript(), and SimulationSetupWidget::onRunSimulation().

Here is the call graph for this function:

Member Data Documentation

◆ m_isValid

bool SimulationSetupAssistant::m_isValid
private

◆ m_messages

QStringList SimulationSetupAssistant::m_messages
private

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