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_

Generated on Tue Nov 16 10:49:57 2010 for CUORE Software by  doxygen 1.5.6