CTL  0.6.1
Computed Tomography Library
xraytube.h
1 #ifndef CTL_XRAYTUBE_H
2 #define CTL_XRAYTUBE_H
3 
4 #include "abstractsource.h"
5 
6 namespace CTL {
7 
8 class XrayTube : public AbstractSource
9 {
11 
12  // implementation of abstract interface
13  public:virtual EnergyRange nominalEnergyRange() const override;
14  protected:virtual double nominalPhotonFlux() const override;
15 
16 public:
17  XrayTube(const QString &name);
18  XrayTube(const QSizeF &focalSpotSize = QSizeF(0.0, 0.0),
20  double tubeVoltage = 100.0,
21  double mAs = 1.0,
22  const QString &name = defaultName());
23  XrayTube(const QSizeF &focalSpotSize, double tubeVoltage, double mAs, const QString &name = defaultName());
24  XrayTube(double tubeVoltage, double mAs, const QString &name = defaultName());
25 
26  // virtual methods
27  SystemComponent* clone() const override;
28  QString info() const override;
29  void fromVariant(const QVariant& variant) override; // de-serialization
30  QVariant toVariant() const override; // serialization
31  //void setSpectrumModel(AbstractXraySpectrumModel* model) override; //deprecated
32  uint spectrumDiscretizationHint() const override;
33 
34  // getter methods
35  double tubeVoltage() const;
36  double mAs() const;
37  //IntervalDataSeries spectrum() const; // convenience alternative
38 
39  // setter methods
40  void setTubeVoltage(double voltage);
41  void setMilliampereSeconds(double mAs);
42  // void setIntensityConstant(double value); //deprecated
43 
44 
45 
46  // static methods
47  static QString defaultName();
48 
49 protected:
50  double _tubeVoltage = 100.0;
51  double _mAs = 1.0;
52  double _intensityConstant = 3.2e8; // Default intensity constant [PHOTONS / (mAs * cm^2)]
53 
54 private:
55  void updateIntensityConstant();
56 };
57 
58 } // namespace CTL
59 
60 #endif // CTL_XRAYTUBE_H
double tubeVoltage() const
Definition: xraytube.cpp:127
const Vector3x1 & focalSpotPosition() const
Definition: abstractsource.h:335
virtual EnergyRange nominalEnergyRange() const override
Definition: xraytube.cpp:76
static QString defaultName()
Definition: xraytube.cpp:105
const QSizeF & focalSpotSize() const
Definition: abstractsource.h:328
const QString & name() const
Definition: systemcomponent.cpp:42
void fromVariant(const QVariant &variant) override
Definition: xraytube.cpp:151
QVariant toVariant() const override
Definition: xraytube.cpp:161
Definition: xraytube.h:8
void setTubeVoltage(double voltage)
Definition: xraytube.cpp:137
virtual double nominalPhotonFlux() const override
Definition: xraytube.cpp:69
Base class for all system components.
Definition: systemcomponent.h:53
SystemComponent * clone() const override
Definition: xraytube.cpp:100
QString info() const override
Definition: xraytube.cpp:86
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
uint spectrumDiscretizationHint() const override
Definition: xraytube.cpp:195
Base class for source components.
Definition: abstractsource.h:68
double mAs() const
Definition: xraytube.cpp:132
void setMilliampereSeconds(double mAs)
Definition: xraytube.cpp:148