BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
GUIExamplesFactory.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/GUIExamplesFactory.cpp
6 //! @brief Implements class GUIExamplesFactory
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 
19 #include <memory>
20 
21 //! Defines correspondence between example name and real name of simulation from SimulationFactory
22 QMap<QString, QString> init_NameToRegistry()
23 {
24  QMap<QString, QString> result;
25  result["example01"] = "CylindersAndPrismsBuilder";
26  result["example02"] = "RadialParaCrystalBuilder";
27  result["example03"] = "HexParaCrystalBuilder";
28  result["example04"] = "CoreShellParticleBuilder";
29  result["example05"] = "MultiLayerWithRoughnessBuilder";
30  result["example06"] = "SquareLattice2DBuilder";
31  result["example07"] = "RotatedPyramidsBuilder";
32  result["example08"] = "CylindersWithSizeDistributionBuilder";
33  result["example09"] = "ParticleCompositionBuilder";
34  result["example10"] = "MesoCrystalBuilder";
35 
36  // temporary for testing
37  // result["example09"] = "MultipleLayoutBuilder";
38  // result["example09"] = "TwoTypesCylindersDistributionBuilder";
39  // result["example09"] = "RectParaCrystalBuilder";
40  // result["example09"] = "SizeDistributionLMAModelBuilder";
41  // result["example09"] = "CylindersInSSCABuilder";
42  // result["example09"] = "TransformBoxBuilder";
43  // result["example09"] = "BoxCompositionRotateZandYBuilder";
44  // result["example09"] = "CoreShellBoxRotateZandYBuilder";
45  // result["example09"] = "BoxStackCompositionBuilder";
46  // result["example09"] = "CylindersWithSizeDistributionBuilder";
47  // result["example09"] = "LargeCylindersInDWBABuilder";
48  // result["example09"] = "SlicedCompositionBuilder";
49  // result["example09"] = "RotatedPyramidsDistributionBuilder";
50  // result["example09"] = "SpheresWithLimitsDistributionBuilder";
51  // result["example09"] = "ConesWithLimitsDistributionBuilder";
52  return result;
53 }
54 
56 
58 {
59  return m_name_to_registry.contains(name);
60 }
61 
62 //! Populate sample model with
64  MaterialModel* materialModel)
65 {
66  QString exampleName = m_name_to_registry[name];
67 
68  SampleBuilderFactory factory;
69  const std::unique_ptr<MultiLayer> sample(factory.createSampleByName(exampleName.toStdString()));
70 
71  return GUIObjectBuilder::populateSampleModel(sampleModel, materialModel, *sample.get(), name);
72 }
QMap< QString, QString > init_NameToRegistry()
Defines correspondence between example name and real name of simulation from SimulationFactory.
Defines class GUIExamplesFactory.
Defines GUIObjectBuilder namespace.
Defines class MultiLayer.
Defines class SampleBuilderFactory.
static SessionItem * createSampleItems(const QString &name, SampleModel *sampleModel, MaterialModel *materialModel)
Populate sample model with.
static QMap< QString, QString > m_name_to_registry
correspondence of GUI example name and name from StandardSamples registry
static bool isValidExampleName(const QString &name)
Factory to create standard pre-defined samples.
MultiLayer * createSampleByName(const std::string &name)
Retrieves a SampleBuilder from the registry, does the build, and returns the result.
Main model to hold sample items.
Definition: SampleModel.h:24
SessionItem * populateSampleModel(SampleModel *sampleModel, MaterialModel *materialModel, const MultiLayer &sample, const QString &sample_name="")
QString const & name(EShape k)
Definition: particles.cpp:21