CTL  0.6.1
Computed Tomography Library
xrayspectrummodels.h
1 #ifndef CTL_XRAYSPECTRUMMODELS_H
2 #define CTL_XRAYSPECTRUMMODELS_H
3 
4 #include "abstractxrayspectrummodel.h"
5 #include "tabulateddatamodel.h"
6 
7 namespace CTL {
8 
74 {
76 
77  // abstract interfaces
78  public: float valueAt(float position) const override;
79  public: float binIntegral(float position, float binWidth) const override;
80  public: XraySpectrumTabulatedModel* clone() const override;
81 
82 public:
84  void addLookupTable(float voltage, const TabulatedDataModel& table);
85  void setLookupTables(const QMap<float, TabulatedDataModel>& tables);
86 
87  QVariant parameter() const override;
88  void setParameter(const QVariant& parameter) override;
89 
90  bool hasTabulatedDataFor(float voltage) const;
91 
92 protected:
94 
95 };
96 
135 {
137 
138  // abstract interfaces
139  public: float valueAt(float position) const override;
140  public: float binIntegral(float position, float binWidth) const override;
141  public: XrayLaserSpectrumModel* clone() const override;
142 
143 public:
145  explicit XrayLaserSpectrumModel(float energy);
146 };
147 
214 {
216 
217  // abstract interfaces
218  public: float valueAt(float position) const override;
219  public: float binIntegral(float position, float binWidth) const override;
220  public: FixedXraySpectrumModel* clone() const override;
221 
222 public:
224  explicit FixedXraySpectrumModel(const TabulatedDataModel& table);
225 
226  QVariant parameter() const override;
227  void setParameter(const QVariant& parameter) override;
228 
229  // getter
230  TabulatedDataModel& lookupTable();
231  const TabulatedDataModel& lookupTable() const;
232 
233  // setter
234  void setLookupTable(const TabulatedDataModel& table);
235 
236 protected:
237  TabulatedDataModel _lookupTable;
238 
239 };
240 
261 {
263 
264  // abstract interfaces
265  public: float valueAt(float position) const override;
266  public: float binIntegral(float position, float binWidth) const override;
267  public: KramersLawSpectrumModel* clone() const override;
268 
269 public:
271 };
272 
297 {
299 
300  // abstract interfaces
301  public: float valueAt(float position) const override;
302  public: float binIntegral(float position, float binWidth) const override;
303  public: HeuristicCubicSpectrumModel* clone() const override;
304 
305 public:
307 };
308 
352 {
354 
355  // abstract interfaces
356  public: TASMIPSpectrumModel* clone() const override;
357 
358 public:
359  explicit TASMIPSpectrumModel(float tubeVoltage = 100.0f);
360 
361  void setParameter(const QVariant& parameter) override;
362 
363 private:
364  TabulatedDataModel TASMIPtable(float tubeVoltage);
365  using FixedXraySpectrumModel::setLookupTable;
366 };
367 
368 } // namespace CTL
369 
370 #endif // CTL_XRAYSPECTRUMMODELS_H
QVariant parameter() const override
Definition: xrayspectrummodels.cpp:124
void setLookupTables(const QMap< float, TabulatedDataModel > &tables)
Sets the lookup tables used by this instance to tables.
Definition: xrayspectrummodels.cpp:191
The XrayLaserSpectrumModel class is a data model to represent monoenergetic X-ray spectra.
Definition: xrayspectrummodels.h:134
void addLookupTable(float voltage, const TabulatedDataModel &table)
Inserts table as a lookup table for the energy setting voltage.
Definition: xrayspectrummodels.cpp:201
The HeuristicCubicSpectrumModel class is a data model to represent an (heuristic) X-ray spectrum with...
Definition: xrayspectrummodels.h:296
The AbstractXraySpectrumModel class is the abstract base class for data models representing X-ray spe...
Definition: abstractxrayspectrummodel.h:27
The XraySpectrumTabulatedModel class provides an implementation of an X-ray spectrum model based on t...
Definition: xrayspectrummodels.h:73
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
The TabulatedDataModel class is a data model that handles values in a lookup table.
Definition: tabulateddatamodel.h:38
XraySpectrumTabulatedModel * clone() const override
Definition: xrayspectrummodels.cpp:118
float binIntegral(float position, float binWidth) const override
Returns the integral over model values (i.e. total number of photons) in the (energy) interval [posit...
Definition: xrayspectrummodels.cpp:90
The KramersLawSpectrumModel class is a data model to represent an (idealized) X-ray spectrum with res...
Definition: xrayspectrummodels.h:260
The TASMIPSpectrumModel class is a data model to represent a realistic X-ray spectrum based on a set ...
Definition: xrayspectrummodels.h:351
The FixedXraySpectrumModel class is a data model that uses a single well-defined lookup table to samp...
Definition: xrayspectrummodels.h:213
void setParameter(const QVariant &parameter) override
Sets the parameters of this instance based in data in parameter.
Definition: xrayspectrummodels.cpp:157
bool hasTabulatedDataFor(float voltage) const
Returns true if this instance can provide data for an energy parameter set to voltage.
Definition: xrayspectrummodels.cpp:216
float valueAt(float position) const override
Returns the value (i.e. photon count per energy) of the model at the given position (in keV).
Definition: xrayspectrummodels.cpp:46
QMap< float, TabulatedDataModel > _lookupTables
The spectra lookup tables (key = energy).
Definition: xrayspectrummodels.h:93