00001 #ifndef TXCURRENTTESTRESULT_H 00002 #define TXCURRENTTESTRESULT_H 00003 00004 #include "TestResult.h" 00005 #include "Sct/RangedVector.h" 00006 00007 namespace SctData{ 00012 class TxCurrentTestResult : public TestResult { 00013 public: 00014 TxCurrentTestResult() throw(); 00015 00019 TxCurrentTestResult(unsigned int runNumber, const string& moduleName) throw(); 00020 00024 virtual ~TxCurrentTestResult() throw(); 00025 00026 //Override 00027 virtual string getClassName() const throw(); 00028 00029 class StreamResult { 00030 public: 00031 typedef int ThresholdType; 00032 StreamResult() { 00033 setInvalid(); 00034 } 00035 void setInvalid() { 00036 m_minErrorFreeTxCurrent = NOT_YET_SET_OR_INVALID; 00037 m_maxErrorFreeTxCurrent = NOT_YET_SET_OR_INVALID; 00038 m_bestTxCurrent = NOT_YET_SET_OR_INVALID; 00039 }; 00040 bool isInvalid() const { 00041 return 00042 m_minErrorFreeTxCurrent == NOT_YET_SET_OR_INVALID || 00043 m_maxErrorFreeTxCurrent == NOT_YET_SET_OR_INVALID || 00044 m_bestTxCurrent == NOT_YET_SET_OR_INVALID; 00045 }; 00046 int minErrorFreeTxCurrent() const { return m_minErrorFreeTxCurrent; }; 00047 int maxErrorFreeTxCurrent() const { return m_maxErrorFreeTxCurrent; }; 00048 int bestTxCurrent() const { return m_bestTxCurrent; }; 00049 void setMinErrorFreeTxCurrent(int val) { 00050 m_minErrorFreeTxCurrent = (this->isAllowableTxCurrentPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID; 00051 }; 00052 void setMaxErrorFreeTxCurrent(int val) { 00053 m_maxErrorFreeTxCurrent = (this->isAllowableTxCurrentPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID; 00054 }; 00055 void setBestTxCurrent(int val) { 00056 m_bestTxCurrent = (this->isAllowableTxCurrentPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID; 00057 }; 00058 private: 00059 static bool isAllowableTxCurrentPrivateVar(const int val) { 00060 return val == NOT_YET_SET_OR_INVALID || (val>=MIN_LEGITIMATE_TX_CURRENT && val <= MAX_LEGITIMATE_TX_CURRENT); 00061 }; 00062 public: 00063 static bool isGoodPhysicalTxCurrent(const int val) { 00064 return val != NOT_YET_SET_OR_INVALID && val>=MIN_LEGITIMATE_TX_CURRENT && val <= MAX_LEGITIMATE_TX_CURRENT; 00065 }; 00066 private: 00067 int m_minErrorFreeTxCurrent; 00068 int m_maxErrorFreeTxCurrent; 00069 int m_bestTxCurrent; 00070 static const int NOT_YET_SET_OR_INVALID=-1; 00071 static const int MIN_LEGITIMATE_TX_CURRENT=0; 00072 static const int MAX_LEGITIMATE_TX_CURRENT=255; 00073 }; 00074 00078 StreamResult& getStreamResult(const unsigned index); 00082 const StreamResult& getStreamResult(const unsigned index) const; 00083 private: 00084 RangedVector<StreamResult> streamResults; 00085 00086 }; 00087 }// end of namespace SctData 00088 #endif //#ifndef TIMEWALKTESTRESULT_H