#ifndef ___DIST_PLUS_CATEGORY #define ___DIST_PLUS_CATEGORY #include "definitions.h" #include "distribution.h" #include "logFile.h" #include "errorMsg.h" class distributionPlusCategory : public distribution { public: explicit distributionPlusCategory(const distribution* pBaseDist, MDOUBLE baseDistProb,MDOUBLE categoryVal,MDOUBLE globalRate=1); explicit distributionPlusCategory(); explicit distributionPlusCategory(const distributionPlusCategory& other); virtual ~distributionPlusCategory(); virtual distributionPlusCategory& operator=(const distributionPlusCategory &other); virtual distribution* clone() const { return new distributionPlusCategory(*this); } distribution* getBaseDistribution() {return _pBaseDist;} virtual const int categories() const; virtual const MDOUBLE rates(const int category) const; virtual const MDOUBLE ratesProb(const int category) const; virtual void setGlobalRate(const MDOUBLE x) {_globalRate=x;} virtual MDOUBLE getGlobalRate()const {return _globalRate;} virtual const MDOUBLE getCumulativeProb(const MDOUBLE x) const; virtual void change_number_of_categories(int in_number_of_categories); virtual MDOUBLE getCategoryVal() const {return _categoryVal;} virtual MDOUBLE getBaseDistProb() const {return _baseDistProb;} virtual void setCategoryVal(MDOUBLE categoryVal) { _categoryVal = categoryVal;} virtual void setBaseDistProb(MDOUBLE baseDistProb); protected: MDOUBLE _globalRate; distribution* _pBaseDist; MDOUBLE _categoryVal; MDOUBLE _baseDistProb; }; #endif // ___DIST_PLUS_CATEGORY