BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
InterferenceFunctionItems.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/InterferenceFunctionItems.h
6 //! @brief Defines InterferenceFunctionItems's 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_INTERFERENCEFUNCTIONITEMS_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_INTERFERENCEFUNCTIONITEMS_H
17 
20 
21 class BA_CORE_API_ InterferenceFunctionItem : public SessionGraphicsItem {
22 public:
23  static const QString P_POSITION_VARIANCE;
24  explicit InterferenceFunctionItem(const QString& modelType);
26  virtual std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const = 0;
27 
28 protected:
29  void setPositionVariance(IInterferenceFunction* p_iff) const;
30 };
31 
33 public:
34  static const QString P_LENGTH;
35  static const QString P_ROTATION_ANGLE;
36  static const QString P_DECAY_FUNCTION;
38  std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
39 };
40 
42 public:
43  static const QString P_LATTICE_TYPE;
44  static const QString P_DECAY_FUNCTION;
45  static const QString P_XI_INTEGRATION;
47  std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
48 
49 private:
50  void update_rotation_availability();
51 };
52 
54 public:
55  static const QString P_DAMPING_LENGTH;
56  static const QString P_DOMAIN_SIZE1;
57  static const QString P_DOMAIN_SIZE2;
58  static const QString P_XI_INTEGRATION;
59  static const QString P_PDF1;
60  static const QString P_PDF2;
62  std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
63 
64 private:
65  void update_rotation_availability();
66  void update_distribution_displaynames();
67 };
68 
70 public:
71  static const QString P_XI_INTEGRATION;
72  static const QString P_DOMAIN_SIZE_1;
73  static const QString P_DOMAIN_SIZE_2;
75  std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
76 
77 private:
78  void update_rotation_availability();
79 };
80 
82 public:
83  static const QString P_RADIUS;
84  static const QString P_DENSITY;
86  std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
87 };
88 
90 public:
91  static const QString P_PEAK_DISTANCE;
92  static const QString P_DAMPING_LENGTH;
93  static const QString P_DOMAIN_SIZE;
94  static const QString P_KAPPA;
95  static const QString P_PDF;
97  std::unique_ptr<IInterferenceFunction> createInterferenceFunction() const;
98 };
99 
100 #endif // BORNAGAIN_GUI_COREGUI_MODELS_INTERFERENCEFUNCTIONITEMS_H
Defines class SessionGraphicsItem.
Abstract base class of interference functions.
static const QString P_POSITION_VARIANCE
virtual ~InterferenceFunctionItem()
virtual std::unique_ptr< IInterferenceFunction > createInterferenceFunction() const =0