BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SimulationToPython.h
Go to the documentation of this file.
1 // ************************************************************************** //
2 //
3 // BornAgain: simulate and fit scattering at grazing incidence
4 //
5 //! @file Core/Export/SimulationToPython.h
6 //! @brief Defines class SimulationToPython.
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 
15 #ifndef BORNAGAIN_CORE_EXPORT_SIMULATIONTOPYTHON_H
16 #define BORNAGAIN_CORE_EXPORT_SIMULATIONTOPYTHON_H
17 
18 #include <memory>
19 #include <string>
20 
21 class Beam;
22 class IFootprintFactor;
23 class GISASSimulation;
24 class OffSpecSimulation;
25 class Simulation;
26 class SpecularSimulation;
27 
28 //! Write a Python script that allows to run the current simulation.
29 
31 {
32 public:
33  enum EMainType {
34  RUN_SIMULATION, //!< main function runs simulation
35  SAVE_DATA //!< main function saves intensity data
36  };
37 
38  std::string generateSimulationCode(const Simulation& simulation, EMainType mainType);
39 
40 private:
41  std::string definePreamble() const;
42  std::string defineGetSimulation(const Simulation* simulation) const;
43  std::string defineGISASSimulation(const GISASSimulation* simulation) const;
44  std::string defineOffSpecSimulation(const OffSpecSimulation* simulation) const;
45  std::string defineSpecularSimulation(const SpecularSimulation* simulation) const;
46  std::string defineDetector(const Simulation* simulation) const;
47  std::string defineDetectorResolutionFunction(const Simulation* simulation) const;
48  std::string defineDetectorPolarizationAnalysis(const Simulation* simulation) const;
49 
50  std::string defineGISASBeam(const GISASSimulation& simulation) const;
51  std::string defineOffSpecBeam(const OffSpecSimulation& simulation) const;
52  std::string defineSpecularScan(const SpecularSimulation& simulation) const;
53 
54  std::string defineBeamPolarization(const Beam& beam) const;
55  std::string defineBeamIntensity(const Beam& beam) const;
56 
57  std::string defineParameterDistributions(const Simulation* simulation) const;
58  std::string defineMasks(const Simulation* simulation) const;
59  std::string defineSimulationOptions(const Simulation* simulation) const;
60  std::string defineBackground(const Simulation* simulation) const;
61  std::string defineMain(EMainType mainType = RUN_SIMULATION);
62 };
63 
64 #endif // BORNAGAIN_CORE_EXPORT_SIMULATIONTOPYTHON_H
Beam defined by wavelength, direction and intensity.
Definition: Beam.h:27
Main class to run a Grazing-Incidence Small-Angle Scattering simulation.
Abstract base for classes that calculate the beam footprint factor.
Main class to run an off-specular simulation.
Write a Python script that allows to run the current simulation.
std::string defineOffSpecSimulation(const OffSpecSimulation *simulation) const
std::string defineDetectorPolarizationAnalysis(const Simulation *simulation) const
std::string defineSpecularSimulation(const SpecularSimulation *simulation) const
@ SAVE_DATA
main function saves intensity data
@ RUN_SIMULATION
main function runs simulation
std::string defineOffSpecBeam(const OffSpecSimulation &simulation) const
std::string generateSimulationCode(const Simulation &simulation, EMainType mainType)
Returns a Python script that sets up a simulation and runs it if invoked as main program.
std::string defineSimulationOptions(const Simulation *simulation) const
std::string defineGISASBeam(const GISASSimulation &simulation) const
std::string defineDetectorResolutionFunction(const Simulation *simulation) const
std::string defineSpecularScan(const SpecularSimulation &simulation) const
std::string defineParameterDistributions(const Simulation *simulation) const
std::string defineBeamIntensity(const Beam &beam) const
std::string defineGetSimulation(const Simulation *simulation) const
std::string definePreamble() const
std::string defineBeamPolarization(const Beam &beam) const
std::string defineBackground(const Simulation *simulation) const
std::string defineGISASSimulation(const GISASSimulation *simulation) const
std::string defineMain(EMainType mainType=RUN_SIMULATION)
std::string defineMasks(const Simulation *simulation) const
std::string defineDetector(const Simulation *simulation) const
Pure virtual base class of OffSpecularSimulation, GISASSimulation and SpecularSimulation.
Definition: Simulation.h:38
Main class to run a specular simulation.