BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SimulationFactory Class Reference
Inheritance diagram for SimulationFactory:
Collaboration diagram for SimulationFactory:

Public Types

typedef std::function< Simulation *()> CreateItemCallback
 
typedef std::map< std::string, CreateItemCallbackCallbackMap_t
 

Public Member Functions

 SimulationFactory ()
 
SimulationcreateItem (const std::string &item_key) const
 
std::unique_ptr< SimulationcreateItemPtr (const std::string &item_key) const
 
bool registerItem (const std::string &item_key, CreateItemCallback CreateFn)
 
bool contains (const std::string &item_key) const
 
size_t size () const
 

Protected Attributes

CallbackMap_t m_callbacks
 

Detailed Description

Registry to create standard pre-defined simulations.

Used in functional tests, performance measurements, etc.

Definition at line 26 of file SimulationFactory.h.

Member Typedef Documentation

◆ CreateItemCallback

typedef std::function<Simulation *()> IFactory< std::string , Simulation >::CreateItemCallback
inherited

function which will be used to create object of AbstractProduct base type

Definition at line 32 of file IFactory.h.

◆ CallbackMap_t

typedef std::map<std::string , CreateItemCallback> IFactory< std::string , Simulation >::CallbackMap_t
inherited

map for correspondance between object identifier and object creation function

Definition at line 35 of file IFactory.h.

Constructor & Destructor Documentation

◆ SimulationFactory()

SimulationFactory::SimulationFactory ( )

Definition at line 22 of file SimulationFactory.cpp.

23 {
25 
27 
29 
31 
33 
35 
36  registerItem("MiniGISASDetectorResolution", StandardSimulations::MiniGISASDetectorResolution);
37 
39 
41 
43 
45 
47 
49 
50  // polarization
51 
53 
55 
57 
59 
60  // rectangular detectors
61 
63 
65 
66  registerItem("RectDetectorPerpToDirectBeam", StandardSimulations::RectDetectorPerpToDirectBeam);
67 
68  registerItem("RectDetectorPerpToReflectedBeam",
70 
71  registerItem("RectDetectorPerpToReflectedBeamDpos",
73 
75 
76  // Monte-Carlo
78 
79  // region of interest
80 
83 
84  // background
85 
87 
88  // specular simulations
89 
91 
93 
95 
97 
99 
100  registerItem("TOFRWithRelativeResolution", StandardSimulations::TOFRWithRelativeResolution);
101 
102  registerItem("TOFRWithPointwiseResolution", StandardSimulations::TOFRWithPointwiseResolution);
103 
105 
106  // polarized specular
107 
109 
111 
113 
115 
117 
119 
121 
123 
124  // depth probe simulations
125 
127 
129 }
bool registerItem(const std::string &item_key, CreateItemCallback CreateFn)
Registers object's creation function.
Definition: IFactory.h:53
SpecularSimulation * BasicSpecularQPP()
GISASSimulation * RectDetectorPerpToReflectedBeam()
GISAS simulation with the rectangular detector perpendicular to the reflected beam.
GISASSimulation * BasicGISAS00()
Basic GISAS for polarization studies.
GISASSimulation * RectDetectorPerpToDirectBeam()
GISAS simulation with the rectangular detector perpendicular to the direct beam.
SpecularSimulation * BasicSpecularMP()
GISASSimulation * BasicGISAS()
Basic GISAS simulation with the detector phi[0,2], theta[0,2].
GISASSimulation * MiniGISASBeamDivergence()
GISAS simulation with beam divergence applied.
SpecularSimulation * SpecularWithSquareBeam()
GISASSimulation * GISASWithMasks()
GISAS simulation with multiple masks on the detector plane.
GISASSimulation * MiniGISAS()
GISAS simulation with small detector and phi[-2,2], theta[0,2].
SpecularSimulation * BasicSpecularPM()
GISASSimulation * IsGISAXSSimulation1()
Typical IsGISAXS simulation with the detector phi[-1,1], theta[0,2].
OffSpecSimulation * MiniOffSpec()
GISASSimulation * ExtraLongWavelengthGISAS()
GISAS simulation with an extra long wavelength.
GISASSimulation * RectDetectorPerpToSample()
GISAS simulation with the rectangular detector perpendicular to the sample.
GISASSimulation * SphericalDetWithRoi()
GISAS simulation with spherical detector, region of interest and mask.
GISASSimulation * MiniGISASPolarizationPM()
SpecularSimulation * TOFRWithRelativeResolution()
GISASSimulation * MiniGISASDetectorResolution()
GISAS simulation with detector resolution.
SpecularSimulation * BasicSpecularQMP()
GISASSimulation * MiniGISASMonteCarlo()
GISAS simulation with Monte-Carlo integration switched ON.
SpecularSimulation * SpecularWithGaussianBeam()
GISASSimulation * MiniGISASPolarizationMM()
GISASSimulation * MiniGISASPolarizationMP()
DepthProbeSimulation * BasicDepthProbe()
GISASSimulation * IsGISAXSSimulation2()
Typical IsGISAXS simulation with the detector phi[0,2], theta[0,2].
GISASSimulation * ConstantBackgroundGISAS()
SpecularSimulation * BasicSpecularQPM()
GISASSimulation * RectDetectorGeneric()
GISAS simulation with generic rectangular detector.
SpecularSimulation * BasicSpecularMM()
GISASSimulation * MiniGISASPolarizationPP()
SpecularSimulation * BasicSpecularPP()
SpecularSimulation * BasicSpecularQ()
GISASSimulation * MaxiGISAS()
GISAS simulation with large detector to test performance.
GISASSimulation * MiniGISAS_v2()
GISAS simulation with small detector and phi[-1,1], theta[0,1].
GISASSimulation * RectDetectorPerpToReflectedBeamDpos()
GISAS simulation with the rectangular detector perpendicular to the reflected beam when the coordinat...
SpecularSimulation * TOFRWithPointwiseResolution()
GISASSimulation * MiniGISASSpecularPeak()
GISAS simulation with small detector and including specular peak.
GISASSimulation * RectDetWithRoi()
GISAS simulation with rectangular detector, region of interest and mask.
GISASSimulation * MiniGISASFit()
Simulation with fitting.
GISASSimulation * BasicPolarizedGISAS()
Basic GISAS simulation for spin flip channel.
SpecularSimulation * SpecularDivergentBeam()
SpecularSimulation * BasicSpecularQMM()
GISASSimulation * MaxiGISAS00()
Basic GISAS for polarization studies.
SpecularSimulation * BasicSpecular()

References StandardSimulations::BasicDepthProbe(), StandardSimulations::BasicGISAS(), StandardSimulations::BasicGISAS00(), StandardSimulations::BasicPolarizedGISAS(), StandardSimulations::BasicSpecular(), StandardSimulations::BasicSpecularMM(), StandardSimulations::BasicSpecularMP(), StandardSimulations::BasicSpecularPM(), StandardSimulations::BasicSpecularPP(), StandardSimulations::BasicSpecularQ(), StandardSimulations::BasicSpecularQMM(), StandardSimulations::BasicSpecularQMP(), StandardSimulations::BasicSpecularQPM(), StandardSimulations::BasicSpecularQPP(), StandardSimulations::ConstantBackgroundGISAS(), StandardSimulations::ExtraLongWavelengthGISAS(), StandardSimulations::GISASWithMasks(), StandardSimulations::IsGISAXSSimulation1(), StandardSimulations::IsGISAXSSimulation2(), StandardSimulations::MaxiGISAS(), StandardSimulations::MaxiGISAS00(), StandardSimulations::MiniGISAS(), StandardSimulations::MiniGISAS_v2(), StandardSimulations::MiniGISASBeamDivergence(), StandardSimulations::MiniGISASDetectorResolution(), StandardSimulations::MiniGISASFit(), StandardSimulations::MiniGISASMonteCarlo(), StandardSimulations::MiniGISASPolarizationMM(), StandardSimulations::MiniGISASPolarizationMP(), StandardSimulations::MiniGISASPolarizationPM(), StandardSimulations::MiniGISASPolarizationPP(), StandardSimulations::MiniGISASSpecularPeak(), StandardSimulations::MiniOffSpec(), StandardSimulations::RectDetectorGeneric(), StandardSimulations::RectDetectorPerpToDirectBeam(), StandardSimulations::RectDetectorPerpToReflectedBeam(), StandardSimulations::RectDetectorPerpToReflectedBeamDpos(), StandardSimulations::RectDetectorPerpToSample(), StandardSimulations::RectDetWithRoi(), IFactory< std::string, Simulation >::registerItem(), StandardSimulations::SpecularDivergentBeam(), StandardSimulations::SpecularWithGaussianBeam(), StandardSimulations::SpecularWithSquareBeam(), StandardSimulations::SphericalDetWithRoi(), StandardSimulations::TOFRWithPointwiseResolution(), and StandardSimulations::TOFRWithRelativeResolution().

Here is the call graph for this function:

Member Function Documentation

◆ createItem()

Simulation * IFactory< std::string , Simulation >::createItem ( const std::string &  item_key) const
inlineinherited

Creates object by calling creation function corresponded to given identifier.

Definition at line 38 of file IFactory.h.

39  {
40  auto it = m_callbacks.find(item_key);
41  assert(it != m_callbacks.end());
42  return (it->second)();
43  }
CallbackMap_t m_callbacks
map of correspondence of objectsId and creation functions
Definition: IFactory.h:68

◆ createItemPtr()

std::unique_ptr<Simulation > IFactory< std::string , Simulation >::createItemPtr ( const std::string &  item_key) const
inlineinherited

Definition at line 46 of file IFactory.h.

47  {
48  return std::unique_ptr<AbstractProduct>{createItem(item_key)};
49  }
Simulation * createItem(const std::string &item_key) const
Creates object by calling creation function corresponded to given identifier.
Definition: IFactory.h:38

◆ registerItem()

bool IFactory< std::string , Simulation >::registerItem ( const std::string &  item_key,
CreateItemCallback  CreateFn 
)
inlineinherited

Registers object's creation function.

Definition at line 53 of file IFactory.h.

54  {
55  assert(m_callbacks.find(item_key) == m_callbacks.end());
56  return m_callbacks.insert(make_pair(item_key, CreateFn)).second;
57  }

◆ contains()

bool IFactory< std::string , Simulation >::contains ( const std::string &  item_key) const
inlineinherited

Definition at line 59 of file IFactory.h.

60  {
61  return m_callbacks.find(item_key) != m_callbacks.end();
62  }

◆ size()

size_t IFactory< std::string , Simulation >::size ( ) const
inlineinherited

Returns number of registered objects.

Definition at line 65 of file IFactory.h.

65 { return m_callbacks.size(); }

Member Data Documentation

◆ m_callbacks

CallbackMap_t IFactory< std::string , Simulation >::m_callbacks
protectedinherited

map of correspondence of objectsId and creation functions

Definition at line 68 of file IFactory.h.


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