00001 00008 #ifndef _QLOAD_CURVE_HH_ 00009 #define _QLOAD_CURVE_HH_ 00010 00011 #include "QCuore.hh" 00012 00013 #include "QBaseLoadCurve.hh" 00014 #include "QLCMeasurement.hh" 00015 #include "QLCCurvePoint.hh" 00016 #include "QEvent.hh" 00017 #include "QRawEvent.hh" 00018 00019 class QLoadCurve : public QBaseLoadCurve { 00020 00021 public: 00022 00027 QLoadCurve(unsigned short lg); 00028 00030 virtual ~QLoadCurve(); 00031 00040 virtual QLCProcedure_t SetProcedure(QLCProcedure_t procedure); 00041 00048 virtual void AddMeasurement(const QEvent* const ev, 00049 const QLCSlowConfig* config); 00050 00051 virtual void Dump(std::ostream& file) const; 00052 00058 void EnableStrictCheck(const bool enable) { fStrictCheck = enable; }; 00059 00064 void SetMaxExternalBias(const float maxBias) { fMaxExternalBias = maxBias; } 00065 00070 void SetNumHpPerConfig(size_t min) { fNumHpPerConfig = min; } 00071 00076 void SetNumNoisePerConfig(size_t min) { fNumNoisePerConfig = min; } 00077 00078 protected: 00079 00091 virtual bool ProcessPoint(QLCCurvePoint* point); 00092 00100 virtual bool ProcessCurve() const; 00101 00112 virtual bool ScheduleNextMeasurement(); 00113 00120 virtual bool ScheduleNextMeasSequential(); 00121 00127 virtual void FillMeasurement(const QEvent* ev, QLCMeasurement* meas) const; 00128 00139 virtual bool ValidateMeasurement(const QLCMeasurement* meas); 00140 00149 virtual unsigned short FindPoint(const float bias) const; 00150 00157 virtual QLCCurvePoint* GetPoint(const float bias); 00158 00166 virtual size_t GetCurve(std::map<double, double>& points, 00167 const bool onlyDonePoints) const; 00168 00169 private: 00170 std::map<unsigned short, QLCCurvePoint*> fCurvePoints; 00171 00172 bool CheckSameOffsetAndGain(const std::vector<unsigned short>& measList, 00173 const QLCMeasurement* refMeas) const; 00174 00175 const QLCMeasurement* GetMeasurement(const unsigned short id) const; 00176 00181 const double fBaselineMax; 00182 00184 const int fPointsOverIP; 00185 00187 float fMaxExternalBias; 00188 00196 bool fStrictCheck; 00197 00198 size_t fNumNoisePerConfig; 00199 size_t fNumHpPerConfig; 00200 }; 00201 00202 #endif // _QLOAD_CURVE_HH_