QBaseLoadCurve.hh
00001
00002 #ifndef _QBASE_LOAD_CURVE_HH_
00003 #define _QBASE_LOAD_CURVE_HH_
00004
00005 #include "QCuore.hh"
00006
00007 #include <vector>
00008 #include <set>
00009 #include <string>
00010 #include <ostream>
00011
00012 #include "QOnlineMessenger.hh"
00013
00014 namespace Cuore {class QEvent;}
00015
00016 class QEleChannelConfig;
00017 class QLCBaseMeasurement;
00018
00028 class QBaseLoadCurve: public QOnlineMessenger
00029 {
00030 public:
00036 QBaseLoadCurve(unsigned int lg, const std::string& name);
00037
00039 virtual ~QBaseLoadCurve();
00040
00047 bool AddMeasurement(const Cuore::QEvent* const ev);
00048
00050 unsigned int GetLg() const { return fLg; }
00051
00053 virtual void Dump(std::ostream& file) const = 0;
00054
00059 virtual void ProcessCurve();
00060
00065 const QEleChannelConfig* GetOutputConfig() const
00066 { return fOutputConfig; }
00067
00072 bool GetIsActive() const { return fIsActive; }
00073
00074
00075 bool GetHeaterIsWorking() const { return fHasHeater; }
00076
00077 protected:
00078
00094 virtual QLCBaseMeasurement*
00095 FillMeasurement(const Cuore::QEvent* ev,
00096 const QEleChannelConfig* config) const = 0;
00097
00098
00099 virtual bool ValidateChild(const QLCBaseMeasurement* meas) const
00100 { return true; }
00101
00109 virtual void ClassifyMeasurement(const QLCBaseMeasurement* meas) {}
00110
00119 unsigned int
00120 FindMeasurements(const QEleChannelConfig* refMeas,
00121 std::set<const QLCBaseMeasurement*>& matching) const;
00122
00127 virtual void ProcessCurveChild() = 0;
00128
00135 virtual void SetOutputConfig() = 0;
00136
00145 virtual void SetIsActive() {}
00146
00155 virtual void SetHeaterIsWorking() {}
00156
00158 QEleChannelConfig *fOutputConfig;
00159
00165 bool fIsActive;
00166
00171 bool fHasHeater;
00172
00173 private:
00174
00180 bool ValidateMeasurement(const QLCBaseMeasurement* meas) const;
00181
00183 const unsigned int fLg;
00184
00186 std::vector<QLCBaseMeasurement*> fMeasurements;
00187 };
00188 #endif // _QBASE_LOAD_CURVE_HH_