BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FormFactorItems.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/FormFactorItems.h
6 //! @brief Defines FormFactorItems classes
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_GUI_COREGUI_MODELS_FORMFACTORITEMS_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_FORMFACTORITEMS_H
17 
19 
20 class IFormFactor;
21 
22 class BA_CORE_API_ FormFactorItem : public SessionItem {
23 public:
24  explicit FormFactorItem(const QString& model_type) : SessionItem(model_type) {}
25  virtual std::unique_ptr<IFormFactor> createFormFactor() const = 0;
26 };
27 
28 class BA_CORE_API_ AnisoPyramidItem : public FormFactorItem {
29 public:
30  static const QString P_LENGTH;
31  static const QString P_WIDTH;
32  static const QString P_HEIGHT;
33  static const QString P_ALPHA;
35  std::unique_ptr<IFormFactor> createFormFactor() const;
36 };
37 
38 class BA_CORE_API_ BarGaussItem : public FormFactorItem {
39 public:
40  static const QString P_LENGTH;
41  static const QString P_WIDTH;
42  static const QString P_HEIGHT;
43  BarGaussItem();
44  std::unique_ptr<IFormFactor> createFormFactor() const;
45 };
46 
47 class BA_CORE_API_ BarLorentzItem : public FormFactorItem {
48 public:
49  static const QString P_LENGTH;
50  static const QString P_WIDTH;
51  static const QString P_HEIGHT;
53  std::unique_ptr<IFormFactor> createFormFactor() const;
54 };
55 
56 class BA_CORE_API_ BoxItem : public FormFactorItem {
57 public:
58  static const QString P_LENGTH;
59  static const QString P_WIDTH;
60  static const QString P_HEIGHT;
61  BoxItem();
62  std::unique_ptr<IFormFactor> createFormFactor() const;
63 };
64 
65 class BA_CORE_API_ ConeItem : public FormFactorItem {
66 public:
67  static const QString P_RADIUS;
68  static const QString P_HEIGHT;
69  static const QString P_ALPHA;
70  ConeItem();
71  std::unique_ptr<IFormFactor> createFormFactor() const;
72 };
73 
74 class BA_CORE_API_ Cone6Item : public FormFactorItem {
75 public:
76  static const QString P_BASEEDGE;
77  static const QString P_HEIGHT;
78  static const QString P_ALPHA;
79  Cone6Item();
80  std::unique_ptr<IFormFactor> createFormFactor() const;
81 };
82 
83 class BA_CORE_API_ CuboctahedronItem : public FormFactorItem {
84 public:
85  static const QString P_LENGTH;
86  static const QString P_HEIGHT;
87  static const QString P_HEIGHT_RATIO;
88  static const QString P_ALPHA;
90  std::unique_ptr<IFormFactor> createFormFactor() const;
91 };
92 
93 class BA_CORE_API_ CylinderItem : public FormFactorItem {
94 public:
95  static const QString P_RADIUS;
96  static const QString P_HEIGHT;
97  CylinderItem();
98  std::unique_ptr<IFormFactor> createFormFactor() const;
99 };
100 
101 class BA_CORE_API_ DodecahedronItem : public FormFactorItem {
102 public:
103  static const QString P_EDGE;
105  std::unique_ptr<IFormFactor> createFormFactor() const;
106 };
107 
108 class BA_CORE_API_ DotItem : public FormFactorItem {
109 public:
110  static const QString P_RADIUS;
111  DotItem();
112  std::unique_ptr<IFormFactor> createFormFactor() const;
113 };
114 
115 class BA_CORE_API_ EllipsoidalCylinderItem : public FormFactorItem {
116 public:
117  static const QString P_RADIUS_X;
118  static const QString P_RADIUS_Y;
119  static const QString P_HEIGHT;
121  std::unique_ptr<IFormFactor> createFormFactor() const;
122 };
123 
124 class BA_CORE_API_ FullSphereItem : public FormFactorItem {
125 public:
126  static const QString P_RADIUS;
127  FullSphereItem();
128  std::unique_ptr<IFormFactor> createFormFactor() const;
129 };
130 
131 class BA_CORE_API_ FullSpheroidItem : public FormFactorItem {
132 public:
133  static const QString P_RADIUS;
134  static const QString P_HEIGHT;
136  std::unique_ptr<IFormFactor> createFormFactor() const;
137 };
138 
139 class BA_CORE_API_ HemiEllipsoidItem : public FormFactorItem {
140 public:
141  static const QString P_RADIUS_X;
142  static const QString P_RADIUS_Y;
143  static const QString P_HEIGHT;
145  std::unique_ptr<IFormFactor> createFormFactor() const;
146 };
147 
148 class BA_CORE_API_ IcosahedronItem : public FormFactorItem {
149 public:
150  static const QString P_EDGE;
151  IcosahedronItem();
152  std::unique_ptr<IFormFactor> createFormFactor() const;
153 };
154 
155 class BA_CORE_API_ Prism3Item : public FormFactorItem {
156 public:
157  static const QString P_BASEEDGE;
158  static const QString P_HEIGHT;
159  Prism3Item();
160  std::unique_ptr<IFormFactor> createFormFactor() const;
161 };
162 
163 class BA_CORE_API_ Prism6Item : public FormFactorItem {
164 public:
165  static const QString P_BASEEDGE;
166  static const QString P_HEIGHT;
167  Prism6Item();
168  std::unique_ptr<IFormFactor> createFormFactor() const;
169 };
170 
171 class BA_CORE_API_ PyramidItem : public FormFactorItem {
172 public:
173  static const QString P_BASEEDGE;
174  static const QString P_HEIGHT;
175  static const QString P_ALPHA;
176  PyramidItem();
177  std::unique_ptr<IFormFactor> createFormFactor() const;
178 };
179 
180 class BA_CORE_API_ CosineRippleBoxItem : public FormFactorItem {
181 public:
182  static const QString P_LENGTH;
183  static const QString P_WIDTH;
184  static const QString P_HEIGHT;
186  std::unique_ptr<IFormFactor> createFormFactor() const;
187 };
188 
189 class BA_CORE_API_ CosineRippleGaussItem : public FormFactorItem {
190 public:
191  static const QString P_LENGTH;
192  static const QString P_WIDTH;
193  static const QString P_HEIGHT;
195  std::unique_ptr<IFormFactor> createFormFactor() const;
196 };
197 
198 class BA_CORE_API_ CosineRippleLorentzItem : public FormFactorItem {
199 public:
200  static const QString P_LENGTH;
201  static const QString P_WIDTH;
202  static const QString P_HEIGHT;
204  std::unique_ptr<IFormFactor> createFormFactor() const;
205 };
206 
207 class BA_CORE_API_ SawtoothRippleBoxItem : public FormFactorItem {
208 public:
209  static const QString P_LENGTH;
210  static const QString P_WIDTH;
211  static const QString P_HEIGHT;
212  static const QString P_ASYMMETRY;
214  std::unique_ptr<IFormFactor> createFormFactor() const;
215 };
216 
217 class BA_CORE_API_ SawtoothRippleGaussItem : public FormFactorItem {
218 public:
219  static const QString P_LENGTH;
220  static const QString P_WIDTH;
221  static const QString P_HEIGHT;
222  static const QString P_ASYMMETRY;
224  std::unique_ptr<IFormFactor> createFormFactor() const;
225 };
226 
227 class BA_CORE_API_ SawtoothRippleLorentzItem : public FormFactorItem {
228 public:
229  static const QString P_LENGTH;
230  static const QString P_WIDTH;
231  static const QString P_HEIGHT;
232  static const QString P_ASYMMETRY;
234  std::unique_ptr<IFormFactor> createFormFactor() const;
235 };
236 
237 class BA_CORE_API_ TetrahedronItem : public FormFactorItem {
238 public:
239  static const QString P_BASEEDGE;
240  static const QString P_HEIGHT;
241  static const QString P_ALPHA;
242  TetrahedronItem();
243  std::unique_ptr<IFormFactor> createFormFactor() const;
244 };
245 
246 class BA_CORE_API_ TruncatedCubeItem : public FormFactorItem {
247 public:
248  static const QString P_LENGTH;
249  static const QString P_REMOVED_LENGTH;
251  std::unique_ptr<IFormFactor> createFormFactor() const;
252 };
253 
254 class BA_CORE_API_ TruncatedSphereItem : public FormFactorItem {
255 public:
256  static const QString P_RADIUS;
257  static const QString P_HEIGHT;
258  static const QString P_REMOVED_TOP;
260  std::unique_ptr<IFormFactor> createFormFactor() const;
261 };
262 
263 class BA_CORE_API_ TruncatedSpheroidItem : public FormFactorItem {
264 public:
265  static const QString P_RADIUS;
266  static const QString P_HEIGHT;
267  static const QString P_HFC;
268  static const QString P_REMOVED_TOP;
270  std::unique_ptr<IFormFactor> createFormFactor() const;
271 };
272 
273 #endif // BORNAGAIN_GUI_COREGUI_MODELS_FORMFACTORITEMS_H
Defines class SessionItem.
static const QString P_ALPHA
static const QString P_WIDTH
static const QString P_LENGTH
static const QString P_HEIGHT
static const QString P_LENGTH
static const QString P_HEIGHT
static const QString P_WIDTH
static const QString P_LENGTH
static const QString P_WIDTH
static const QString P_HEIGHT
static const QString P_LENGTH
static const QString P_HEIGHT
static const QString P_WIDTH
static const QString P_HEIGHT
static const QString P_BASEEDGE
static const QString P_ALPHA
static const QString P_ALPHA
static const QString P_HEIGHT
static const QString P_RADIUS
static const QString P_WIDTH
static const QString P_HEIGHT
static const QString P_LENGTH
static const QString P_LENGTH
static const QString P_WIDTH
static const QString P_HEIGHT
static const QString P_LENGTH
static const QString P_WIDTH
static const QString P_HEIGHT
static const QString P_HEIGHT
static const QString P_LENGTH
static const QString P_HEIGHT_RATIO
static const QString P_ALPHA
static const QString P_RADIUS
static const QString P_HEIGHT
static const QString P_EDGE
static const QString P_RADIUS
static const QString P_RADIUS_X
static const QString P_HEIGHT
static const QString P_RADIUS_Y
virtual std::unique_ptr< IFormFactor > createFormFactor() const =0
FormFactorItem(const QString &model_type)
static const QString P_RADIUS
static const QString P_HEIGHT
static const QString P_RADIUS
static const QString P_RADIUS_Y
static const QString P_RADIUS_X
static const QString P_HEIGHT
Abstract base class for all form factors.
Definition: IFormFactor.h:36
static const QString P_EDGE
static const QString P_HEIGHT
static const QString P_BASEEDGE
static const QString P_HEIGHT
static const QString P_BASEEDGE
static const QString P_HEIGHT
static const QString P_ALPHA
static const QString P_BASEEDGE
static const QString P_HEIGHT
static const QString P_WIDTH
static const QString P_ASYMMETRY
static const QString P_LENGTH
static const QString P_WIDTH
static const QString P_ASYMMETRY
static const QString P_LENGTH
static const QString P_HEIGHT
static const QString P_HEIGHT
static const QString P_LENGTH
static const QString P_WIDTH
static const QString P_ASYMMETRY
static const QString P_ALPHA
static const QString P_BASEEDGE
static const QString P_HEIGHT
static const QString P_REMOVED_LENGTH
static const QString P_LENGTH
static const QString P_REMOVED_TOP
static const QString P_RADIUS
static const QString P_HEIGHT
static const QString P_HEIGHT
static const QString P_HFC
static const QString P_RADIUS
static const QString P_REMOVED_TOP
std::string model_type
Definition: types.h:23