BornAgain
1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Provides quick reflectometry simulations on any change of SampleModel and MaterialModel. More...
Public Slots | |
void | onInterruptRequest () |
Requests interruption of running simulaitons. More... | |
void | onRealTimeRequest (bool status) |
void | onRunSimulationRequest () |
Processes multilayer on request. Doesn't work in real time mode. More... | |
Signals | |
void | progressChanged (int value) |
Public Member Functions | |
QuickSimController (QObject *parent=nullptr) | |
~QuickSimController () | |
void | setModels (ApplicationModels *models) |
Private Slots | |
void | onMultiLayerChange () |
Processes multilayer on any model change. Works only in realtime mode. More... | |
void | onSimulationCompleted () |
Takes simulation results from JobManager and write into the model. More... | |
Private Member Functions | |
InstrumentModel * | instrumentModel () const |
JobModel * | jobModel () const |
void | process_multilayer (bool submit_simulation=false) |
Constructs multislice, calculates profile and submits specular simulation. More... | |
void | setup_jobmanager_connections () |
Connect signals going from JobManager. More... | |
void | submit_specular_simulation (const multislice_t &multislice) |
Submit data to JobManager for consequent specular simulation in a separate thread. More... | |
void | update_sld_profile (const multislice_t &multilayer) |
Calculates sld profile from slice and immediately update data items. More... | |
Private Attributes | |
std::unique_ptr< ModelView::ModelHasChangedController > | m_instrumentChangedController |
bool | m_isRealTimeMode |
JobManager * | m_jobManager {nullptr} |
std::unique_ptr< ModelView::ModelHasChangedController > | m_materialChangedController |
Run simulation on every parameter change. More... | |
ApplicationModels * | m_models {nullptr} |
std::unique_ptr< ModelView::ModelHasChangedController > | m_sampleChangedController |
Provides quick reflectometry simulations on any change of SampleModel and MaterialModel.
Listens for any change in SampleModel and MaterialModel, extracts the data needed for the simulation, and then submit simulation request to JobManager. As soon as JobManager reports about completed simulations, extract results from there and put them into JobModel.
Definition at line 39 of file quicksimcontroller.h.
gui2::QuickSimController::QuickSimController | ( | QObject * | parent = nullptr | ) |
Definition at line 38 of file quicksimcontroller.cpp.
|
default |
|
private |
Definition at line 146 of file quicksimcontroller.cpp.
References gui2::ApplicationModels::instrumentModel(), and m_models.
Referenced by submit_specular_simulation().
|
private |
Definition at line 141 of file quicksimcontroller.cpp.
References gui2::ApplicationModels::jobModel(), and m_models.
Referenced by onSimulationCompleted(), setModels(), and update_sld_profile().
|
slot |
Requests interruption of running simulaitons.
Definition at line 67 of file quicksimcontroller.cpp.
References m_jobManager, and gui2::JobManager::onInterruptRequest().
Referenced by gui2::QuickSimEditor::setup_toolbar_connections().
|
privateslot |
Processes multilayer on any model change. Works only in realtime mode.
Definition at line 86 of file quicksimcontroller.cpp.
References m_isRealTimeMode, and process_multilayer().
Referenced by setModels().
|
slot |
Definition at line 72 of file quicksimcontroller.cpp.
References m_isRealTimeMode.
Referenced by gui2::QuickSimEditor::setup_toolbar_connections().
|
slot |
Processes multilayer on request. Doesn't work in real time mode.
Definition at line 79 of file quicksimcontroller.cpp.
References process_multilayer().
Referenced by gui2::QuickSimEditor::setup_toolbar_connections().
|
privateslot |
Takes simulation results from JobManager and write into the model.
Definition at line 93 of file quicksimcontroller.cpp.
References jobModel(), m_jobManager, gui2::JobManager::simulationResult(), and gui2::JobModel::updateSpecularData().
Referenced by setup_jobmanager_connections().
|
private |
Constructs multislice, calculates profile and submits specular simulation.
Definition at line 100 of file quicksimcontroller.cpp.
References gui2::Utils::CreateMultiSlice(), m_models, gui2::ApplicationModels::sampleModel(), submit_specular_simulation(), ModelView::SessionModel::topItem(), and update_sld_profile().
Referenced by onMultiLayerChange(), and onRunSimulationRequest().
|
signal |
Referenced by gui2::QuickSimEditor::setup_controller_connections(), and setup_jobmanager_connections().
void gui2::QuickSimController::setModels | ( | ApplicationModels * | models | ) |
Definition at line 47 of file quicksimcontroller.cpp.
References gui2::ApplicationModels::instrumentModel(), jobModel(), m_instrumentChangedController, m_materialChangedController, m_models, m_sampleChangedController, gui2::ApplicationModels::materialModel(), onMultiLayerChange(), gui2::ApplicationModels::sampleModel(), setup_jobmanager_connections(), ModelView::ViewportItem::setViewportToContent(), and gui2::JobModel::sldViewport().
Referenced by gui2::QuickSimEditor::setModels().
|
private |
Connect signals going from JobManager.
Connections are made queued since signals are emitted from non-GUI thread and we want to deal with widgets.
Definition at line 129 of file quicksimcontroller.cpp.
References m_jobManager, onSimulationCompleted(), gui2::JobManager::progressChanged(), progressChanged(), and gui2::JobManager::simulationCompleted().
Referenced by setModels().
|
private |
Submit data to JobManager for consequent specular simulation in a separate thread.
Definition at line 119 of file quicksimcontroller.cpp.
References gui2::SpecularInstrumentItem::beamItem(), instrumentModel(), m_jobManager, gui2::JobManager::requestSimulation(), and ModelView::SessionModel::topItem().
Referenced by process_multilayer().
|
private |
Calculates sld profile from slice and immediately update data items.
Definition at line 111 of file quicksimcontroller.cpp.
References jobModel(), gui2::SpecularToySimulation::sld_profile(), and gui2::JobModel::updateSLDProfile().
Referenced by process_multilayer().
|
private |
Definition at line 76 of file quicksimcontroller.h.
Referenced by setModels().
|
private |
Definition at line 72 of file quicksimcontroller.h.
Referenced by onMultiLayerChange(), and onRealTimeRequest().
|
private |
Definition at line 70 of file quicksimcontroller.h.
Referenced by onInterruptRequest(), onSimulationCompleted(), setup_jobmanager_connections(), and submit_specular_simulation().
|
private |
Run simulation on every parameter change.
Definition at line 74 of file quicksimcontroller.h.
Referenced by setModels().
|
private |
Definition at line 69 of file quicksimcontroller.h.
Referenced by instrumentModel(), jobModel(), process_multilayer(), and setModels().
|
private |
Definition at line 75 of file quicksimcontroller.h.
Referenced by setModels().