BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
DomainSimulationBuilder Namespace Reference

Contains functions to build the domain simulation from instrument and sample models. More...

Functions

std::unique_ptr< ISimulationcreateSimulation (const MultiLayerItem *sampleItem, const InstrumentItem *instrumentItem, const SimulationOptionsItem *optionsItem=nullptr)
 Creates domain simulation from sample and instrument items. More...
 

Detailed Description

Contains functions to build the domain simulation from instrument and sample models.

Function Documentation

◆ createSimulation()

std::unique_ptr< ISimulation > DomainSimulationBuilder::createSimulation ( const MultiLayerItem sampleItem,
const InstrumentItem instrumentItem,
const SimulationOptionsItem optionsItem = nullptr 
)

Creates domain simulation from sample and instrument items.

Definition at line 61 of file DomainSimulationBuilder.cpp.

64 {
65  if (sampleItem == nullptr || instrumentItem == nullptr) {
66  QString message("DomainSimulationBuilder::getSimulation() -> Error. Either MultiLayerItem "
67  " or InstrumentItem is not defined.");
68  throw GUIHelpers::Error(message);
69  }
70 
71  auto P_multilayer = DomainObjectBuilder::buildMultiLayer(*sampleItem);
72 
73  if (auto gisasInstrument = dynamic_cast<const GISASInstrumentItem*>(instrumentItem))
74  return createGISASSimulation(std::move(P_multilayer), gisasInstrument, optionsItem);
75  else if (auto offspecInstrument =
76  dynamic_cast<const OffSpecularInstrumentItem*>(instrumentItem))
77  return createOffSpecularSimulation(std::move(P_multilayer), offspecInstrument, optionsItem);
78  else if (auto specular_instrument = dynamic_cast<const SpecularInstrumentItem*>(instrumentItem))
79  return createSpecularSimulation(std::move(P_multilayer), specular_instrument, optionsItem);
80  else if (auto penetrator = dynamic_cast<const DepthProbeInstrumentItem*>(instrumentItem))
81  return createDepthProbeSimulation(std::move(P_multilayer), penetrator, optionsItem);
82 
83  throw GUIHelpers::Error(
84  "DomainSimulationBuilder::createSimulation() -> Error. Not yet implemented");
85 }
std::unique_ptr< MultiLayer > buildMultiLayer(const SessionItem &multilayer_item)

References DomainObjectBuilder::buildMultiLayer().

Referenced by FitObjectiveBuilder::buildSimulation(), PythonScriptWidget::generatePythonScript(), and JobQueueData::runJob().

Here is the call graph for this function: