BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ItemCatalog Class Reference

Catalog of SessionItems. A single instance is created and used in ItemFactory.cpp. More...

Collaboration diagram for ItemCatalog:
[legend]

Public Member Functions

 ItemCatalog ()
 
std::unique_ptr< SessionItemcreateItemPtr (const QString &modelType) const
 

Static Public Member Functions

static QStringList validTopItemTypes ()
 

Private Member Functions

void add (const QString &modelType, std::function< SessionItem *()> f)
 

Private Attributes

IFactory< QString, SessionItemm_data
 

Detailed Description

Catalog of SessionItems. A single instance is created and used in ItemFactory.cpp.

Definition at line 26 of file ItemCatalog.h.

Constructor & Destructor Documentation

◆ ItemCatalog()

ItemCatalog::ItemCatalog ( )

Definition at line 65 of file ItemCatalog.cpp.

66 {
67  add("MultiLayer", create_new<MultiLayerItem>);
68  add("Layer", create_new<LayerItem>);
69  add("ParticleLayout", create_new<ParticleLayoutItem>);
70  add("Particle", create_new<ParticleItem>);
71  add("Rotation", create_new<TransformationItem>);
72  add("ParticleCoreShell", create_new<ParticleCoreShellItem>);
73  add("ParticleComposition", create_new<ParticleCompositionItem>);
74  add("ParticleDistribution", create_new<ParticleDistributionItem>);
75  add("MesoCrystal", create_new<MesoCrystalItem>);
76  add("Interference1DLattice", create_new<InterferenceFunction1DLatticeItem>);
77  add("Interference2DLattice", create_new<InterferenceFunction2DLatticeItem>);
78  add("Interference2DParaCrystal", create_new<InterferenceFunction2DParaCrystalItem>);
79  add("InterferenceFinite2DLattice", create_new<InterferenceFunctionFinite2DLatticeItem>);
80  add("InterferenceHardDisk", create_new<InterferenceFunctionHardDiskItem>);
81  add("InterferenceRadialParaCrystal", create_new<InterferenceFunctionRadialParaCrystalItem>);
82  add("GISASInstrument", create_new<GISASInstrumentItem>);
83  add("OffSpecularInstrument", create_new<OffSpecularInstrumentItem>);
84  add("SpecularInstrument", create_new<SpecularInstrumentItem>);
85  add("GISASBeam", create_new<GISASBeamItem>);
86  add("SpecularBeam", create_new<SpecularBeamItem>);
87  add("NoBackground", create_new<BackgroundNoneItem>);
88  add("ConstantBackground", create_new<ConstantBackgroundItem>);
89  add("PoissonNoiseBackground", create_new<PoissonNoiseBackgroundItem>);
90  add("NoFootprint", create_new<FootprintNoneItem>);
91  add("GaussianFootrpint", create_new<FootprintGaussianItem>);
92  add("SquareFootprint", create_new<FootprintSquareItem>);
93  add("Vector", create_new<VectorItem>);
94  add("Property", create_new<PropertyItem>);
95 
96  add("AnisoPyramid", create_new<AnisoPyramidItem>);
97  add("BarGauss", create_new<BarGaussItem>);
98  add("BarLorentz", create_new<BarLorentzItem>);
99  add("Box", create_new<BoxItem>);
100  add("Cone", create_new<ConeItem>);
101  add("Cone6", create_new<Cone6Item>);
102  add("Cuboctahedron", create_new<CuboctahedronItem>);
103  add("Dodecahedron", create_new<DodecahedronItem>);
104  add("Dot", create_new<DotItem>);
105  add("Cylinder", create_new<CylinderItem>);
106  add("EllipsoidalCylinder", create_new<EllipsoidalCylinderItem>);
107  add("FullSphere", create_new<FullSphereItem>);
108  add("FullSpheroid", create_new<FullSpheroidItem>);
109  add("HemiEllipsoid", create_new<HemiEllipsoidItem>);
110  add("Icosahedron", create_new<IcosahedronItem>);
111  add("Prism3", create_new<Prism3Item>);
112  add("Prism6", create_new<Prism6Item>);
113  add("Pyramid", create_new<PyramidItem>);
114  add("CosineRippleBox", create_new<CosineRippleBoxItem>);
115  add("CosineRippleGauss", create_new<CosineRippleGaussItem>);
116  add("CosineRippleLorentz", create_new<CosineRippleLorentzItem>);
117  add("SawtoothRippleBox", create_new<SawtoothRippleBoxItem>);
118  add("SawtoothRippleGauss", create_new<SawtoothRippleGaussItem>);
119  add("SawtoothRippleLorentz", create_new<SawtoothRippleLorentzItem>);
120  add("Tetrahedron", create_new<TetrahedronItem>);
121  add("TruncatedCube", create_new<TruncatedCubeItem>);
122  add("TruncatedSphere", create_new<TruncatedSphereItem>);
123  add("TruncatedSpheroid", create_new<TruncatedSpheroidItem>);
124 
125  add("XRotation", create_new<XRotationItem>);
126  add("YRotation", create_new<YRotationItem>);
127  add("ZRotation", create_new<ZRotationItem>);
128  add("EulerRotation", create_new<EulerRotationItem>);
129 
130  add("LayerBasicRoughness", create_new<LayerBasicRoughnessItem>);
131  add("LayerZeroRoughness", create_new<LayerZeroRoughnessItem>);
132 
133  add("SphericalDetector", create_new<SphericalDetectorItem>);
134  add("RectangularDetector", create_new<RectangularDetectorItem>);
135 
136  add("DistributionNone", create_new<DistributionNoneItem>);
137  add("DistributionGate", create_new<DistributionGateItem>);
138  add("DistributionLorentz", create_new<DistributionLorentzItem>);
139  add("DistributionGaussian", create_new<DistributionGaussianItem>);
140  add("DistributionLogNormal", create_new<DistributionLogNormalItem>);
141  add("DistributionCosine", create_new<DistributionCosineItem>);
142  add("DistributionTrapezoid", create_new<DistributionTrapezoidItem>);
143 
144  add("FTDistribution1DCauchy", create_new<FTDistribution1DCauchyItem>);
145  add("FTDistribution1DGauss", create_new<FTDistribution1DGaussItem>);
146  add("FTDistribution1DGate", create_new<FTDistribution1DGateItem>);
147  add("FTDistribution1DTriangle", create_new<FTDistribution1DTriangleItem>);
148  add("FTDistribution1DCosine", create_new<FTDistribution1DCosineItem>);
149  add("FTDistribution1DVoigt", create_new<FTDistribution1DVoigtItem>);
150 
151  add("FTDistribution2DCauchy", create_new<FTDistribution2DCauchyItem>);
152  add("FTDistribution2DGauss", create_new<FTDistribution2DGaussItem>);
153  add("FTDistribution2DGate", create_new<FTDistribution2DGateItem>);
154  add("FTDistribution2DCone", create_new<FTDistribution2DConeItem>);
155  add("FTDistribution2DVoigt", create_new<FTDistribution2DVoigtItem>);
156 
157  add("FTDecayFunction1DCauchy", create_new<FTDecayFunction1DCauchyItem>);
158  add("FTDecayFunction1DGauss", create_new<FTDecayFunction1DGaussItem>);
159  add("FTDecayFunction1DTriangle", create_new<FTDecayFunction1DTriangleItem>);
160  add("FTDecayFunction1DVoigt", create_new<FTDecayFunction1DVoigtItem>);
161 
162  add("FTDecayFunction2DCauchy", create_new<FTDecayFunction2DCauchyItem>);
163  add("FTDecayFunction2DGauss", create_new<FTDecayFunction2DGaussItem>);
164  add("FTDecayFunction2DVoigt", create_new<FTDecayFunction2DVoigtItem>);
165 
166  add("BasicLattice2D", create_new<BasicLattice2DItem>);
167  add("SquareLattice2D", create_new<SquareLattice2DItem>);
168  add("HexagonalLattice2D", create_new<HexagonalLattice2DItem>);
169 
170  add("Material", create_new<MaterialItem>);
171  add("MaterialContainer", create_new<MaterialItemContainer>);
172 
173  add("MaterialRefractiveData", create_new<MaterialRefractiveDataItem>);
174  add("MaterialSLDData", create_new<MaterialSLDDataItem>);
175 
176  add("JobItem", create_new<JobItem>);
177 
178  add("IntensityData", create_new<IntensityDataItem>);
179  add("SpecularData", create_new<SpecularDataItem>);
180  add("Data1DViewItem", create_new<Data1DViewItem>);
181  add("DataPropertyContainer", create_new<DataPropertyContainer>);
182  add("DataItem1DProperties", create_new<Data1DProperties>);
183 
184  add("BasicAxis", create_new<BasicAxisItem>);
185  add("PointwiseAxis", create_new<PointwiseAxisItem>);
186  add("AmplitudeAxis", create_new<AmplitudeAxisItem>);
187 
188  add("BeamWavelength", create_new<BeamWavelengthItem>);
189  add("BeamAzimuthalAngle", create_new<BeamAzimuthalAngleItem>);
190  add("BeamInclinationAngle", create_new<BeamInclinationAngleItem>);
191  add("SpecularBeamInclinationAxis", create_new<SpecularBeamInclinationItem>);
192  add("SpecularBeamWavelength", create_new<SpecularBeamWavelengthItem>);
193 
194  add("ResolutionFunctionNone", create_new<ResolutionFunctionNoneItem>);
195  add("ResolutionFunction2DGaussian", create_new<ResolutionFunction2DGaussianItem>);
196 
197  add("MaskContainer", create_new<MaskContainerItem>);
198  add("RectangleMask", create_new<RectangleItem>);
199  add("PolygonPoint", create_new<PolygonPointItem>);
200  add("PolygonMask", create_new<PolygonItem>);
201  add("VerticalLineMask", create_new<VerticalLineItem>);
202  add("HorizontalLineMask", create_new<HorizontalLineItem>);
203  add("EllipseMask", create_new<EllipseItem>);
204  add("MaskAllMask", create_new<MaskAllItem>);
205 
206  add("RegionOfInterest", create_new<RegionOfInterestItem>);
207 
208  add("GroupProperty", create_new<GroupItem>);
209 
210  add("Parameter Container", create_new<ParameterContainerItem>);
211  add("Parameter Label", create_new<ParameterLabelItem>);
212  add("Parameter", create_new<ParameterItem>);
213 
214  add("FitParameterContainer", create_new<FitParameterContainerItem>);
215  add("FitParameter", create_new<FitParameterItem>);
216  add("FitParameterLink", create_new<FitParameterLinkItem>);
217  add("FitSuite", create_new<FitSuiteItem>);
218 
219  add("SimulationOptions", create_new<SimulationOptionsItem>);
220 
221  add("RealData", create_new<RealDataItem>);
222 
223  add("MinimizerContainer", create_new<MinimizerContainerItem>);
224  add("Minuit2", create_new<MinuitMinimizerItem>);
225  add("GSLMultiMin", create_new<GSLMultiMinimizerItem>);
226  add("Genetic", create_new<GeneticMinimizerItem>);
227  add("GSLSimAn", create_new<SimAnMinimizerItem>);
228  add("GSLLMA", create_new<GSLLMAMinimizerItem>);
229  add("Test", create_new<TestMinimizerItem>);
230 
231  add("RealLimitsLimitless", create_new<LimitlessItem>);
232  add("RealLimitsPositive", create_new<PositiveItem>);
233  add("RealLimitsNonnegative", create_new<NonnegativeItem>);
234  add("RealLimitsLowerLimited", create_new<LowerLimitedItem>);
235  add("RealLimitsUpperLimited", create_new<UpperLimitedItem>);
236  add("RealLimitsLimited", create_new<LimitedItem>);
237 
238  add("ProjectionContainer", create_new<ProjectionContainerItem>);
239 
240  add("DepthProbeInstrument", create_new<DepthProbeInstrumentItem>);
241 }
void add(const QString &modelType, std::function< SessionItem *()> f)

References add().

Here is the call graph for this function:

Member Function Documentation

◆ add()

void ItemCatalog::add ( const QString &  modelType,
std::function< SessionItem *()>  f 
)
private

Definition at line 271 of file ItemCatalog.cpp.

272 {
273  m_data.registerItem(modelType, f);
274 }
bool registerItem(const Key &item_key, CreateItemCallback CreateFn)
Registers object's creation function.
Definition: IFactory.h:53
IFactory< QString, SessionItem > m_data
Definition: ItemCatalog.h:37

References m_data, and IFactory< Key, AbstractProduct >::registerItem().

Referenced by ItemCatalog().

Here is the call graph for this function:

◆ createItemPtr()

std::unique_ptr< SessionItem > ItemCatalog::createItemPtr ( const QString &  modelType) const

Definition at line 243 of file ItemCatalog.cpp.

244 {
245  if (!m_data.contains(modelType))
246  throw GUIHelpers::Error("ItemFactory::createItem() -> Error: Model name does not exist: "
247  + modelType);
248 
249  return m_data.createItemPtr(modelType);
250 }
bool contains(const Key &item_key) const
Definition: IFactory.h:59
std::unique_ptr< AbstractProduct > createItemPtr(const Key &item_key) const
Definition: IFactory.h:46

References IFactory< Key, AbstractProduct >::contains(), IFactory< Key, AbstractProduct >::createItemPtr(), and m_data.

Here is the call graph for this function:

◆ validTopItemTypes()

QStringList ItemCatalog::validTopItemTypes ( )
static

Definition at line 252 of file ItemCatalog.cpp.

253 {
254  return {"MultiLayer",
255  "Layer",
256  "ParticleLayout",
257  "Particle",
258  "ParticleCoreShell",
259  "ParticleComposition",
260  "MesoCrystal",
261  "ParticleDistribution",
262  "Rotation",
263  "Interference1DLattice",
264  "Interference2DLattice",
265  "Interference2DParaCrystal",
266  "InterferenceFinite2DLattice",
267  "InterferenceHardDisk",
268  "InterferenceRadialParaCrystal"};
269 }

Member Data Documentation

◆ m_data

IFactory<QString, SessionItem> ItemCatalog::m_data
private

Definition at line 37 of file ItemCatalog.h.

Referenced by add(), and createItemPtr().


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