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

Catalog to hold info for GroupProperty creation. More...

Public Member Functions

 GroupInfoCatalog ()
 
bool containsGroup (const QString &groupType) const
 
GroupInfo groupInfo (const QString &groupType) const
 

Private Member Functions

void addInfo (const GroupInfo &info)
 

Private Attributes

QVector< GroupInfom_groups
 

Detailed Description

Catalog to hold info for GroupProperty creation.

Definition at line 22 of file GroupInfoCatalog.h.

Constructor & Destructor Documentation

◆ GroupInfoCatalog()

GroupInfoCatalog::GroupInfoCatalog ( )

Definition at line 18 of file GroupInfoCatalog.cpp.

19 {
20  GroupInfo info("Form Factor");
21  info.add("AnisoPyramid", "Aniso Pyramid");
22  info.add("BarGauss", "BarGauss");
23  info.add("BarLorentz", "BarLorentz");
24  info.add("Box", "Box");
25  info.add("Cone", "Cone");
26  info.add("Cone6", "Cone6");
27  info.add("Cuboctahedron", "Cuboctahedron");
28  info.add("Cylinder", "Cylinder");
29  info.add("Dodecahedron", "Dodecahedron");
30  info.add("Dot", "Dot");
31  info.add("EllipsoidalCylinder", "Ellipsoidal Cylinder");
32  info.add("FullSphere", "Full Sphere");
33  info.add("FullSpheroid", "Full Spheroid");
34  info.add("HemiEllipsoid", "Hemi Ellipsoid");
35  info.add("Icosahedron", "Icosahedron");
36  info.add("Prism3", "Prism3");
37  info.add("Prism6", "Prism6");
38  info.add("Pyramid", "Pyramid");
39  info.add("CosineRippleBox", "CosineRippleBox");
40  info.add("CosineRippleGauss", "CosineRippleGauss");
41  info.add("CosineRippleLorentz", "CosineRippleLorentz");
42  info.add("SawtoothRippleBox", "SawtoothRippleBox");
43  info.add("SawtoothRippleGauss", "SawtoothRippleGauss");
44  info.add("SawtoothRippleLorentz", "SawtoothRippleLorentz");
45  info.add("Tetrahedron", "Tetrahedron");
46  info.add("TruncatedCube", "Truncated Cube");
47  info.add("TruncatedSphere", "Truncated Sphere");
48  info.add("TruncatedSpheroid", "Truncated Spheroid");
49  info.setDefaultType("Cylinder");
50  addInfo(info);
51 
52  info = GroupInfo("Rotation group");
53  info.add("XRotation", "X axis Rotation");
54  info.add("YRotation", "Y axis Rotation");
55  info.add("ZRotation", "Z axis Rotation");
56  info.add("EulerRotation", "Euler Rotation");
57  info.setDefaultType("ZRotation");
58  addInfo(info);
59 
60  info = GroupInfo("Roughness");
61  info.add("LayerBasicRoughness", "Basic");
62  info.add("LayerZeroRoughness", "No");
63  info.setDefaultType("LayerZeroRoughness");
64  addInfo(info);
65 
66  info = GroupInfo("Detector group");
67  info.add("SphericalDetector", "Spherical detector");
68  info.add("RectangularDetector", "Rectangular detector");
69  info.setDefaultType("SphericalDetector");
70  addInfo(info);
71 
72  info = GroupInfo("Distribution group");
73  info.add("DistributionGate", "Gate distribution");
74  info.add("DistributionLorentz", "Lorentz distribution");
75  info.add("DistributionGaussian", "Gaussian distribution");
76  info.add("DistributionLogNormal", "Log Normal distribution");
77  info.add("DistributionCosine", "Cosine distribution");
78  info.add("DistributionTrapezoid", "Trapezoid distribution");
79  info.setDefaultType("DistributionGaussian");
80  addInfo(info);
81 
82  info = GroupInfo("Distribution extended group");
83  info.add("DistributionNone", "None");
84  info.add("DistributionGate", "Gate");
85  info.add("DistributionLorentz", "Lorentz");
86  info.add("DistributionGaussian", "Gaussian");
87  info.add("DistributionLogNormal", "Log Normal");
88  info.add("DistributionCosine", "Cosine");
89  info.add("DistributionTrapezoid", "Trapezoid");
90  info.setDefaultType("DistributionNone");
91  addInfo(info);
92 
93  info = GroupInfo("Symmetric distribution group");
94  info.add("DistributionNone", "None");
95  info.add("DistributionLorentz", "Lorentz");
96  info.add("DistributionGaussian", "Gaussian");
97  info.add("DistributionCosine", "Cosine");
98  info.setDefaultType("DistributionNone");
99  addInfo(info);
100 
101  info = GroupInfo("PDF 1D");
102  info.add("FTDistribution1DCauchy", "Cauchy 1D");
103  info.add("FTDistribution1DGauss", "Gauss 1D");
104  info.add("FTDistribution1DGate", "Gate 1D");
105  info.add("FTDistribution1DTriangle", "Triangle 1D");
106  info.add("FTDistribution1DCosine", "Cosine 1D");
107  info.add("FTDistribution1DVoigt", "Voigt 1D");
108  info.setDefaultType("FTDistribution1DCauchy");
109  addInfo(info);
110 
111  info = GroupInfo("PDF 2D");
112  info.add("FTDistribution2DCauchy", "Cauchy 2D");
113  info.add("FTDistribution2DGauss", "Gauss 2D");
114  info.add("FTDistribution2DGate", "Gate 2D");
115  info.add("FTDistribution2DCone", "Cone 2D");
116  info.add("FTDistribution2DVoigt", "Voigt 2D");
117  info.setDefaultType("FTDistribution2DCauchy");
118  addInfo(info);
119 
120  info = GroupInfo("Decay function 1D");
121  info.add("FTDecayFunction1DCauchy", "Cauchy 1D");
122  info.add("FTDecayFunction1DGauss", "Gauss 1D");
123  info.add("FTDecayFunction1DTriangle", "Triangle 1D");
124  info.add("FTDecayFunction1DVoigt", "Voigt 1D");
125  info.setDefaultType("FTDecayFunction1DCauchy");
126  addInfo(info);
127 
128  info = GroupInfo("Decay function 2D");
129  info.add("FTDecayFunction2DCauchy", "Cauchy 2D");
130  info.add("FTDecayFunction2DGauss", "Gauss 2D");
131  info.add("FTDecayFunction2DVoigt", "Voigt 2D");
132  info.setDefaultType("FTDecayFunction2DCauchy");
133  addInfo(info);
134 
135  info = GroupInfo("Lattice group");
136  info.add("BasicLattice2D", "Basic");
137  info.add("SquareLattice2D", "Square");
138  info.add("HexagonalLattice2D", "Hexagonal");
139  info.setDefaultType("HexagonalLattice2D");
140  addInfo(info);
141 
142  info = GroupInfo("Resolution function group");
143  info.add("ResolutionFunctionNone", "None");
144  info.add("ResolutionFunction2DGaussian", "2D Gaussian");
145  info.setDefaultType("ResolutionFunctionNone");
146  addInfo(info);
147 
148  info = GroupInfo("Minimizer library group");
149  info.add("Minuit2", "Minuit2");
150  info.add("GSLMultiMin", "GSL MultiMin");
151  info.add("Genetic", "TMVA Genetic");
152  info.add("GSLSimAn", "GSL Simulated Annealing");
153  info.add("GSLLMA", "GSL Levenberg-Marquardt");
154  info.add("Test", "Test minimizer");
155  info.setDefaultType("Minuit2");
156  addInfo(info);
157 
158  info = GroupInfo("RealLimits group");
159  info.add("RealLimitsLimitless", "Unlimited");
160  info.add("RealLimitsPositive", "Positive");
161  info.add("RealLimitsNonnegative", "Nonnegative");
162  info.add("RealLimitsLowerLimited", "LowerLimited");
163  info.add("RealLimitsUpperLimited", "UpperLimited");
164  info.add("RealLimitsLimited", "Limited");
165  info.setDefaultType("RealLimitsLimitless");
166  addInfo(info);
167 
168  info = GroupInfo("Background group");
169  info.add("NoBackground", "None");
170  info.add("ConstantBackground", "Constant background");
171  info.add("PoissonNoiseBackground", "Poisson noise");
172  info.setDefaultType("NoBackground");
173  addInfo(info);
174 
175  info = GroupInfo("Material data group");
176  info.add("MaterialRefractiveData", "Refractive index based");
177  info.add("MaterialSLDData", "SLD based");
178  info.setDefaultType("MaterialRefractiveData");
179  addInfo(info);
180 
181  info = GroupInfo("Footprint group");
182  info.add("NoFootprint", "None");
183  info.add("GaussianFootrpint", "Gaussian footprint");
184  info.add("SquareFootprint", "Square footprint");
185  info.setDefaultType("NoFootprint");
186  addInfo(info);
187 
188  info = GroupInfo("Axes group");
189  info.add("BasicAxis", "Uniform axis");
190  info.add("PointwiseAxis", "Non-uniform axis");
191  info.setDefaultType("BasicAxis");
192  addInfo(info);
193 
194  info = GroupInfo("Variance group");
195  info.add("VarianceSimFunction", "Simulation value based");
196  info.add("VarianceConstantFunction", "Constant");
197  info.setDefaultType("VarianceSimFunction");
198  addInfo(info);
199 }
void addInfo(const GroupInfo &info)
Defines info for GroupProperty, i.e.
Definition: GroupInfo.h:25

References GroupInfo::add(), addInfo(), and GroupInfo::setDefaultType().

Here is the call graph for this function:

Member Function Documentation

◆ addInfo()

void GroupInfoCatalog::addInfo ( const GroupInfo info)
private

Definition at line 220 of file GroupInfoCatalog.cpp.

221 {
222  if (containsGroup(info.groupType()))
223  throw GUIHelpers::Error("GroupInfoCatalog::addInfo -> Error. Already exists '"
224  + info.groupType() + "'");
225 
226  m_groups.push_back(info);
227 }
QVector< GroupInfo > m_groups
bool containsGroup(const QString &groupType) const
QString groupType() const
Definition: GroupInfo.cpp:55

References containsGroup(), GroupInfo::groupType(), and m_groups.

Referenced by GroupInfoCatalog().

Here is the call graph for this function:

◆ containsGroup()

bool GroupInfoCatalog::containsGroup ( const QString &  groupType) const

Definition at line 211 of file GroupInfoCatalog.cpp.

212 {
213  for (auto& info : m_groups)
214  if (info.groupType() == groupType)
215  return true;
216 
217  return false;
218 }

References m_groups.

Referenced by addInfo().

◆ groupInfo()

GroupInfo GroupInfoCatalog::groupInfo ( const QString &  groupType) const

Definition at line 201 of file GroupInfoCatalog.cpp.

202 {
203  for (auto& info : m_groups)
204  if (info.groupType() == groupType)
205  return info;
206 
207  throw GUIHelpers::Error("GroupInfoCatalog::groupInfo() -> Error. No such group '" + groupType
208  + "'");
209 }

References m_groups.

Member Data Documentation

◆ m_groups

QVector<GroupInfo> GroupInfoCatalog::m_groups
private

Definition at line 32 of file GroupInfoCatalog.h.

Referenced by addInfo(), containsGroup(), and groupInfo().


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