CTL  0.6.1
Computed Tomography Library
genericsource.h
1 #ifndef CTL_GENERICSOURCE_H
2 #define CTL_GENERICSOURCE_H
3 
4 #include "abstractsource.h"
5 #include "models/xrayspectrummodels.h"
6 
7 namespace CTL {
8 
9 class SimpleCTSystem;
10 
12 {
14 
15  // implementation of abstract interface
16  public:virtual EnergyRange nominalEnergyRange() const override;
17  protected:virtual double nominalPhotonFlux() const override;
18 
19 public:
20  GenericSource(const QString& name);
22  double photonFlux = -1.0,
23  const QSizeF& focalSpotSize = QSizeF(0.0, 0.0),
25  const QString& name = defaultName());
26  GenericSource(const QSizeF& focalSpotSize = QSizeF(0.0, 0.0),
28  const QString& name = defaultName());
29 
30  // virtual methods
31  SystemComponent* clone() const override;
32  QString info() const override;
33  uint spectrumDiscretizationHint() const override;
34  void fromVariant(const QVariant& variant) override; // de-serialization
35  QVariant toVariant() const override; // serialization
36 
37  // setter methods
38  void setEnergyRange(const EnergyRange& range);
39  void setSpectrum(const IntervalDataSeries& spectrum, bool updateFlux = false);
40  void setPhotonFlux(double flux);
41 
42  // static methods
43  static QString defaultName();
44  static void setPhotonCountInSystem(SimpleCTSystem* system, double photonsPerPixel);
45  // converter factory
46  static std::unique_ptr<GenericSource> fromOther(const AbstractSource& other,
47  uint nbSamplesForSpectrum = 0);
48 
49 protected:
50  EnergyRange _energyRange = { 0.0f, 0.0f };
52  double _totalFlux = 0.0;
53 
54 };
55 
56 } // namespace CTL
57 
58 #endif // CTL_GENERICSOURCE_H
virtual EnergyRange nominalEnergyRange() const override
Definition: genericsource.cpp:204
double photonFlux() const
Definition: abstractsource.h:523
uint _samplingHint
Number of samples from last set spectrum.
Definition: genericsource.h:51
const Vector3x1 & focalSpotPosition() const
Definition: abstractsource.h:335
EnergyRange _energyRange
Energy range of the emitted radiation.
Definition: genericsource.h:50
uint spectrumDiscretizationHint() const override
Definition: genericsource.cpp:210
void setPhotonFlux(double flux)
Definition: genericsource.cpp:220
const QSizeF & focalSpotSize() const
Definition: abstractsource.h:328
void setEnergyRange(const EnergyRange &range)
Definition: genericsource.cpp:145
virtual IntervalDataSeries spectrum(uint nbSamples) const
Returns the (relative) emitted radiation spectrum sampled with nbSamples bins covering the energy ran...
Definition: abstractsource.h:272
void setSpectrum(const IntervalDataSeries &spectrum, bool updateFlux=false)
Definition: genericsource.cpp:161
const QString & name() const
Definition: systemcomponent.cpp:42
double _totalFlux
Total photon flux (photons/cm² in 1m distance).
Definition: genericsource.h:52
The IntervalDataSeries class is a container for a series of values sampled in equidistant steps (i....
Definition: intervaldataseries.h:65
QString info() const override
Definition: genericsource.cpp:85
Base class for all system components.
Definition: systemcomponent.h:53
static QString defaultName()
Definition: genericsource.cpp:44
virtual double nominalPhotonFlux() const override
Definition: genericsource.cpp:215
SystemComponent * clone() const override
Definition: genericsource.cpp:199
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
QVariant toVariant() const override
Definition: genericsource.cpp:112
void fromVariant(const QVariant &variant) override
Definition: genericsource.cpp:97
Base class for source components.
Definition: abstractsource.h:68
Definition: genericsource.h:11
The SimpleCTSystem class is a specialized sub-class of CTSystem for simple systems (i....
Definition: simplectsystem.h:95