QVector.hh

Go to the documentation of this file.
00001 
00015 #ifndef __QVECTOR_HH_
00016 #define __QVECTOR_HH_
00017 
00018 #include <gsl/gsl_vector.h>
00019 #include <iostream>
00020 #include <string>
00021 #include "QObject.hh"
00022 
00023 Q_BEGIN_NAMESPACE
00024 
00025 class QMatrix;
00026 
00027 class QVector : public QObject {
00028         public:
00032                 QVector();
00037                 QVector(size_t size);
00042                 QVector(const QVector& orig);
00049                 QVector(const QVector& orig, size_t size, size_t ioff = 0);
00056                 QVector(const QMatrix& mat);
00060                 virtual ~QVector();
00065                 inline size_t Size() const {return fMathVec  ? fMathVec->size : 0;}
00070                 void Initialize(double val = 0);
00076                 double& operator[](size_t i);
00077                 inline double& operator()(size_t i){return operator[](i);}
00085                 double operator[] (size_t i) const;
00086                 inline double operator() (size_t i) const { return operator[](i);}
00091                 const QVector& operator = (const QVector& orig);
00092                 // MV levare?
00096                 QVector  operator-() const;
00104                 const QVector& Mult(const QVector& other);
00112                 const QVector& Div(const QVector& other);
00118                 const QVector& operator*=(double t);
00124                 const QVector & operator/=(double v);
00130                 const QVector & operator+=(const QVector&v);
00136                 const QVector & operator-=(const QVector&v);
00142                 double operator*(const QVector& other) const;
00148                 QVector operator+(const QVector& other) const;
00154                 QVector operator-(const QVector& other) const;
00160                 QVector operator*(double t) const;
00166                 QVector operator/(double t) const;
00173                 QMatrix T();
00179         const QVector& Shift(int nstep);
00187         const QVector& ShiftReal(double fstep);
00191         const QVector& Differentiate();
00192 
00194         QVector Derivative2P(const double delta = 1.) const;
00196         QVector Derivative2PF(const double delta = 1.) const;
00197         
00199         QVector Derivative3P(const double delta = 1.) const;
00200         
00202         QVector Derivative3PB(const double delta = 1.) const;
00204         QVector Derivative3PF(const double delta = 1.) const;
00205 
00207         QVector Derivative5P(const double delta = 1.) const;
00208 
00210         QVector Derivative5PB(const double delta = 1.) const;
00211 
00213         QVector DerivativeEulero(const double delta = 1.) const;
00218         const QVector& Sort(bool asc=true);
00223         const QVector& Integrate(double constTerm = 0);
00228         void Resize(size_t newsize);
00235                 void Append(double val);
00241                 double Norma() const;
00245                 double Sum(size_t nelem, size_t first = 0) const; 
00251                 double GetRMS(size_t nelem, size_t first = 0) const; 
00255         double GetMedian() const;
00259         double GetMedianAbsoluteDeviation() const;
00263                 inline double GetMax() const {return gsl_vector_max(fMathVec);}
00267                 inline double GetMin() const {return gsl_vector_min(fMathVec);}
00271                 int GetMaxIndex(size_t nelem, size_t first) const;
00275                 int GetMinIndex(size_t nelem, size_t first) const;
00279                 inline size_t GetMaxIndex() const {return gsl_vector_max_index(fMathVec);}
00283                 inline size_t GetMinIndex() const {return gsl_vector_min_index(fMathVec);}
00287                 double* GetArray() const;
00294         const double* GetConstArray() const {return fMathVec ? fMathVec->data : NULL;}
00306                 void SetArray(const double *orig, size_t size);
00310                 void Clear() {Resize(0);}
00314         void Consolidate();
00318         std::string sqlString() const;
00319 
00320     protected: 
00325         QVector (const gsl_vector* vec);
00326         QVector(const QVector& orig, bool dataOwner);
00332         void SetMathRange(size_t start, size_t size);
00333 
00335         gsl_vector* fVec;
00337         gsl_vector* fMathVec;
00339         bool fDataOwner;
00340 
00341    private:
00342         void InitCopy(const QVector& orig, bool copyData);
00343 
00344         friend class QVectorView;
00345         friend class QVectorConstView;
00346         friend class QMatrix;
00347 };
00348 
00349 // operations other than member functions
00350 QVector operator*(double t, const QVector&v);
00351 // formatted printout
00352 std::ostream& operator<<(std::ostream&s,const QVector&v);
00353 
00354 Q_END_NAMESPACE
00355 
00356 #endif

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