CTL  0.6.1
Computed Tomography Library
abstractbeammodifier.h
1 #ifndef CTL_ABSTRACTBEAMMODIFIER_H
2 #define CTL_ABSTRACTBEAMMODIFIER_H
3 
4 #include "systemcomponent.h"
5 #include "models/intervaldataseries.h"
6 
7 /*
8  * NOTE: This is header only.
9  */
10 
11 namespace CTL {
12 
13 // future releases: spatial dependency
14 // * To describe angular dependency of the modification, angles \a theta and \a phi can be
15 // * passed as optional parameters. These stick to the conventional angle definitions in spherical
16 // * coordinates (\a phi - azimuthal angle, \a theta - polar angle).
17 
46 {
49 
50  // abstract interface
51  public:virtual IntervalDataSeries modifiedSpectrum(const IntervalDataSeries& inputSpectrum) = 0;
52  public:virtual double modifiedFlux(double inputFlux,
53  const IntervalDataSeries& inputSpectrum) = 0;
54 
55 public:
56  // virtual methods
57  QString info() const override;
58 
59  void fromVariant(const QVariant& variant) override; // de-serialization
60  QVariant toVariant() const override; // serialization
61 
62  ~AbstractBeamModifier() override = default;
63 
64 protected:
65  AbstractBeamModifier() = default;
66  AbstractBeamModifier(const QString& name);
67 
70  AbstractBeamModifier& operator=(const AbstractBeamModifier&) = default;
71  AbstractBeamModifier& operator=(AbstractBeamModifier&&) = default;
72 };
73 
79 {
80 }
81 
85 inline QString AbstractBeamModifier::info() const
86 {
87  QString ret(SystemComponent::info());
88 
89  ret += typeInfoString(typeid(this));
90  ret += (this->type() == AbstractBeamModifier::Type) ? QLatin1String("}\n") : QLatin1String("");
91 
92  return ret;
93 }
94 
95 // Use SerializationInterface::fromVariant() documentation.
96 inline void AbstractBeamModifier::fromVariant(const QVariant& variant)
97 {
99 }
100 
101 // Use SerializationInterface::toVariant() documentation.
102 inline QVariant AbstractBeamModifier::toVariant() const
103 {
105 }
106 
114 } // namespace CTL
115 
116 #endif // CTL_ABSTRACTBEAMMODIFIER_H
#define DECLARE_ELEMENTAL_TYPE
Definition: systemcomponent.h:148
QString info() const override
Definition: abstractbeammodifier.h:85
QVariant toVariant() const override
Definition: abstractbeammodifier.h:102
Base class for components that modify the X-ray beam.
Definition: abstractbeammodifier.h:45
static QString typeInfoString(const std::type_info &type)
Definition: systemcomponent.cpp:52
virtual QString info() const
Definition: systemcomponent.cpp:29
int type() const override
Definition: abstractbeammodifier.h:47
const QString & name() const
Definition: systemcomponent.cpp:42
QVariant toVariant() const override
Definition: systemcomponent.cpp:64
The IntervalDataSeries class is a container for a series of values sampled in equidistant steps (i....
Definition: intervaldataseries.h:65
Base class for all system components.
Definition: systemcomponent.h:53
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
void fromVariant(const QVariant &variant) override
Definition: systemcomponent.cpp:58
void fromVariant(const QVariant &variant) override
Definition: abstractbeammodifier.h:96