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_

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