QBaseLoadCurve.hh
00001
00011 #ifndef _QBASE_LOAD_CURVE_HH_
00012 #define _QBASE_LOAD_CURVE_HH_
00013
00014 #include "QCuore.hh"
00015 #include "QEleChannelConfig.hh"
00016
00017 #include <map>
00018 #include <vector>
00019 #include <string>
00020 #include <ostream>
00021
00022 namespace Cuore {class QEvent;}
00023 using namespace Cuore;
00024 class QLCMeasConfig;
00025
00026 class QBaseLoadCurve {
00027
00028 public:
00029
00035 enum QLCProcedure_t {
00036 QDefault_p,
00038 QSequential_p,
00040 QBisection_p
00042 };
00043
00048 QBaseLoadCurve(unsigned int lg);
00049
00051 virtual ~QBaseLoadCurve();
00052
00062 virtual QLCProcedure_t SetProcedure(QLCProcedure_t procedure) = 0;
00063
00074 virtual void AddMeasurement(const QEvent* const ev,
00075 const QEleChannelConfig* config) = 0;
00076
00078 unsigned int GetLg() const { return fLg; }
00079
00080 virtual void Dump(std::ostream& file) const = 0;
00081 protected:
00082
00091 virtual unsigned int
00092 FindMeasurement(QEleChannelConfig* refMeas,
00093 std::vector<unsigned int>& matching) const;
00094
00101 virtual unsigned int
00102 FindMostRecent(const std::vector<unsigned int>& measIds) const;
00103
00108 virtual bool ScheduleNextMeasurement() = 0;
00109
00111 QLCProcedure_t fProcedure;
00112
00117 std::map<unsigned int,QEleChannelConfig*> fMeasurements;
00118
00120 unsigned int fMeasurementId;
00121
00123 unsigned int fPointId;
00124
00126 const unsigned int fLg;
00127 };
00128
00129 #endif // _QBASE_LOAD_CURVE_HH_