BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
InstrumentItems.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/InstrumentItems.h
6 //! @brief Defines InstrumentItems 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_INSTRUMENTITEMS_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_INSTRUMENTITEMS_H
17 
19 
20 class BackgroundItem;
21 class DataItem;
22 class DetectorItem;
23 class GroupItem;
24 class Instrument;
25 class IUnitConverter;
26 class MaskContainerItem;
27 class RealDataItem;
28 
29 class BA_CORE_API_ InstrumentItem : public SessionItem {
30 private:
31  static const QString P_IDENTIFIER;
32 
33 public:
34  static const QString P_BEAM;
35  static const QString P_BACKGROUND;
36 
37 public:
38  QStringList translateList(const QStringList& list) const override;
39 
40  QString id() const;
41  void setId(const QString& id);
42 
43  void setName(const QString& instrumentName);
44  QString name() const;
45 
46  virtual BeamItem* beamItem() const;
47  BackgroundItem* backgroundItem() const;
48  GroupItem* backgroundGroup();
49 
50  virtual std::unique_ptr<Instrument> createInstrument() const = 0;
51  virtual std::vector<int> shape() const = 0;
52  virtual void clearMasks() {}
53  virtual void importMasks(const MaskContainerItem*) {}
54  virtual void updateToRealData(const RealDataItem* item) = 0;
55  virtual bool alignedWith(const RealDataItem* item) const;
56 
57  //! The default user visible name when creating an instrument
58  virtual QString defaultName() const = 0;
59 
60 protected:
61  explicit InstrumentItem(const QString& modelType);
62 
63  void initBackgroundGroup();
64 };
65 
66 class BA_CORE_API_ SpecularInstrumentItem : public InstrumentItem {
67 public:
70 
71  SpecularBeamItem* beamItem() const override;
72 
73  std::unique_ptr<Instrument> createInstrument() const override;
74  std::vector<int> shape() const override;
75  void updateToRealData(const RealDataItem* item) override;
76  bool alignedWith(const RealDataItem* item) const override;
77  virtual QString defaultName() const override;
78 
79  std::unique_ptr<IUnitConverter> createUnitConverter() const;
80 };
81 
82 class BA_CORE_API_ Instrument2DItem : public InstrumentItem {
83 public:
84  static const QString P_DETECTOR;
85 
86  ~Instrument2DItem() override;
87 
88  DetectorItem* detectorItem() const;
89  GroupItem* detectorGroup();
90 
91  void setDetectorGroup(const QString& modelType);
92 
93  void clearMasks() override;
94  void importMasks(const MaskContainerItem* maskContainer) override;
95 
96  std::unique_ptr<Instrument> createInstrument() const override;
97 
98 protected:
99  explicit Instrument2DItem(const QString& modelType);
100 };
101 
102 class BA_CORE_API_ GISASInstrumentItem : public Instrument2DItem {
103 public:
105  std::vector<int> shape() const override;
106  void updateToRealData(const RealDataItem* item) override;
107  virtual QString defaultName() const override;
108 };
109 
110 class BA_CORE_API_ OffSpecularInstrumentItem : public Instrument2DItem {
111 public:
112  static const QString P_ALPHA_AXIS;
113 
115  std::vector<int> shape() const override;
116  void updateToRealData(const RealDataItem* item) override;
117  virtual QString defaultName() const override;
118 };
119 
120 #endif // BORNAGAIN_GUI_COREGUI_MODELS_INSTRUMENTITEMS_H
Defines BeamItem hierarchy.
Provides common functionality for IntensityDataItem and SpecularDataItem.
Definition: DataItem.h:29
Interface to provide axis translations to different units for simulation output.
~Instrument2DItem() override
static const QString P_DETECTOR
virtual void updateToRealData(const RealDataItem *item)=0
virtual QString defaultName() const =0
The default user visible name when creating an instrument.
static const QString P_IDENTIFIER
static const QString P_BEAM
virtual std::vector< int > shape() const =0
virtual void clearMasks()
static const QString P_BACKGROUND
virtual void importMasks(const MaskContainerItem *)
Assembles beam, detector and their relative positions with respect to the sample.
Definition: Instrument.h:32
Container holding various masks as children.
Definition: MaskItems.h:24
static const QString P_ALPHA_AXIS
The RealDataItem class represents intensity data imported from file and intended for fitting.
Definition: RealDataItem.h:35
virtual QStringList translateList(const QStringList &list) const
~SpecularInstrumentItem() override
std::unique_ptr< IUnitConverter > createUnitConverter(const InstrumentItem *instrumentItem)
Creates a unit converter corresponding to the given instrument item.
QString const & name(EShape k)
Definition: particles.cpp:21