CTL  0.6.1
Computed Tomography Library
xraylaser.h
1 #ifndef CTL_XRAYLASER_H
2 #define CTL_XRAYLASER_H
3 
4 #include "abstractsource.h"
5 
6 namespace CTL {
7 
8 constexpr double ELEC_VOLT = 1.6021766208e-19; // in Joule (=Ws)
9 
13 class XrayLaser : public AbstractSource
14 {
16 
17  // implementation of abstract interface
18  public: EnergyRange nominalEnergyRange() const override;
19  protected: double nominalPhotonFlux() const override;
20 
21 public:
22  XrayLaser(const QString& name);
23  XrayLaser(double energy, double output, const QString &name = defaultName());
24  XrayLaser(const QSizeF &focalSpotSize = QSizeF(0.0, 0.0),
26  double energy = 100.0,
27  double output = 1.0,
28  const QString &name = defaultName());
29 
30  // virtual methods
31  SystemComponent* clone() const override;
32  QString info() const override;
33  IntervalDataSeries spectrum(uint nbSamples) const override;
34  uint spectrumDiscretizationHint() const override;
35  void fromVariant(const QVariant& variant) override; // de-serialization
36  QVariant toVariant() const override; // serialization
37 
38  // getter
39  double photonEnergy() const;
40  double radiationOutput() const;
41 
42  // setter
43  void setPhotonEnergy(double energy);
44  void setRadiationOutput(double output);
45 
46  // static methods
47  static QString defaultName();
48 
49 
50 protected:
51  double _energy;
52  double _output;
53 
54 private:
56 };
57 
58 } // namespace CTL
59 
60 #endif // CTL_XRAYLASER_H
The XrayLaser class represents source components that emit monoenergetic radiation.
Definition: xraylaser.h:13
void setRadiationOutput(double output)
Definition: xraylaser.cpp:181
const Vector3x1 & focalSpotPosition() const
Definition: abstractsource.h:335
double _energy
Energy of the emitted photons (in keV).
Definition: xraylaser.h:51
const QSizeF & focalSpotSize() const
Definition: abstractsource.h:328
double _output
Total emission output (in mWs).
Definition: xraylaser.h:52
QString info() const override
Definition: xraylaser.cpp:76
const QString & name() const
Definition: systemcomponent.cpp:42
EnergyRange nominalEnergyRange() const override
Returns the energy range [in keV] of the radiation emitted by this instance.
Definition: xraylaser.cpp:61
void setPhotonEnergy(double energy)
Definition: xraylaser.cpp:169
The IntervalDataSeries class is a container for a series of values sampled in equidistant steps (i....
Definition: intervaldataseries.h:65
double nominalPhotonFlux() const override
Definition: xraylaser.cpp:53
double radiationOutput() const
Definition: xraylaser.cpp:164
QVariant toVariant() const override
Definition: xraylaser.cpp:131
IntervalDataSeries spectrum(uint nbSamples) const override
Returns the (relative) emitted radiation spectrum sampled with nbSamples bins covering the energy ran...
Definition: xraylaser.cpp:105
Base class for all system components.
Definition: systemcomponent.h:53
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
static QString defaultName()
Definition: xraylaser.cpp:144
double photonEnergy() const
Definition: xraylaser.cpp:158
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
SystemComponent * clone() const override
Definition: xraylaser.cpp:152
virtual void setSpectrumModel(AbstractXraySpectrumModel *model)
Definition: abstractsource.h:431
Base class for source components.
Definition: abstractsource.h:68
void fromVariant(const QVariant &variant) override
Definition: xraylaser.cpp:121
uint spectrumDiscretizationHint() const override
Definition: xraylaser.cpp:115