Main Page   Modules   Namespace List   Class Hierarchy   Data Structures   File List   Namespace Members   Data Fields   Globals   Related Pages  

TestResult.cpp

Go to the documentation of this file.
00001 #include "TestResult.h"
00002 #include "FitScanResult.h"
00003 #include "RawScanResult.h"
00004 #include "ConfigurationVariable.h"
00005 #include "NullVariable.h"
00006 #include "Sct/SctNames.h"
00007 #include "Sct/IS/IOManagerIS.h"
00008 #include "Sct/IS/IONameIS.h"
00009 #include <algorithm>
00010 #include <sstream>
00011 
00012 using namespace std;
00013 using namespace Sct;
00014 using namespace Sct::IS;
00015 using namespace boost;
00016 
00017 namespace SctData {
00018 
00019 TestResult::TestResult(const unsigned int runNumber, const string & moduleName,
00020                const ConfigurationVariable& testVariable, const ConfigurationVariable& scanVariable) throw ()
00021                        : runNumber(runNumber), moduleName(moduleName), testVariable(&testVariable),
00022                scanVariable(&scanVariable), passed(false), problem(false) {
00023 }
00024 
00025 
00026 TestResult::TestResult() throw() : runNumber(0), moduleName(""), testVariable(&NullVariable::instance()),
00027     scanVariable(&NullVariable::instance()), passed(false), problem(false) {
00028 
00029 }
00030 
00031 void TestResult::setRunNumber(unsigned int runNumber) throw() {
00032     this->runNumber = runNumber;
00033 }
00034 
00035 void TestResult::setModuleName(string name) throw() {
00036     this->moduleName = name;
00037 }
00038 
00039 const ModuleDefectList& TestResult::getDefects() const throw() {
00040     return defects;
00041 }
00042 
00043 ModuleDefectList& TestResult::getDefects() throw() {
00044     return defects;
00045 }
00046 
00047 const ConfigurationVariable& TestResult::getScanVariable() const throw() {
00048     return *scanVariable;
00049 }
00050 
00051 void TestResult::setScanVariable(const ConfigurationVariable& scanVariable) throw() {
00052     this->scanVariable = &scanVariable;
00053 }
00054 
00055 const ConfigurationVariable& TestResult::getTestVariable() const throw() {
00056     return *testVariable;
00057 }
00058 
00059 void TestResult::setTestVariable(const ConfigurationVariable& testVariable) throw() {
00060     this->testVariable = &testVariable;
00061 }
00062 
00063 bool TestResult::getPassed() const throw() {
00064     return passed;
00065 }
00066     
00067 void TestResult::setPassed(bool passed) throw() {
00068     this->passed = passed;
00069 }
00070     
00071 bool TestResult::getProblem() const throw() {
00072     return problem;
00073 }
00074     
00075 void TestResult::setProblem(bool problem) throw() {
00076     this->problem = problem;
00077 }
00078 
00079 vector<string> TestResult::getComments() const throw() {
00080     return comments;
00081 }
00082     
00083 void TestResult::addComment(string comment) throw() {
00084     comments.push_back(comment);
00085 }
00086 
00087 void TestResult::addScan(const unsigned int scanNumber, const double testPoint) throw(LogicError) {
00088     data.push_back(ScanData(scanNumber, testPoint));
00089     sort(data.begin(), data.end());
00090 }
00091 
00092 string TestResult::getUniqueID() const throw(LogicError) {
00093     if (data.size() > 0) {
00094         return ScanHeader::getUniqueID(runNumber, data[0].scanNumber, moduleName);
00095     }
00096     throw IllegalStateError("TestResult::getUniqueID() : empty test result", __FILE__, __LINE__);
00097 }
00098 
00099 unsigned TestResult::getScanNumberAt(unsigned int i) const throw(LogicError) {
00100     if ( i>=data.size() )
00101         throw OutOfRangeError<unsigned>("TestPoint::getScanNumberAt", __FILE__, __LINE__,i,0,data.size()-1);
00102     return data[i].scanNumber;
00103 }
00104 
00105 double TestResult::getTestPointAt(unsigned int i) const throw(LogicError) {
00106     if ( i>=data.size() )
00107         throw OutOfRangeError<unsigned>("TestPoint::getTestPointAt", __FILE__, __LINE__,i,0,data.size()-1);
00108     return data[i].testPoint;
00109 }
00110 
00111 const ModuleConfiguration& TestResult::getUpdatedConfiguration() const throw() {
00112     return updatedConfig;
00113 }
00114 
00115 ModuleConfiguration& TestResult::getUpdatedConfiguration() throw() {
00116     return updatedConfig;
00117 }
00118 
00119 shared_ptr<const FitScanResult> TestResult::getFit(unsigned int index) const throw(LogicError,IoError) {
00120     return data[index].fit;
00121 }
00122 
00123 shared_ptr<const RawScanResult> TestResult::getRaw(unsigned int index) const throw(LogicError,IoError) {
00124     return data[index].raw;
00125 }
00126 
00127 void TestResult::addFit(shared_ptr<const FitScanResult> fit) throw (LogicError){
00128     unsigned index = getIndex( fit->getHeader().getScanNumber() );
00129     data[index].fit=fit;
00130 }
00131 
00132 void TestResult::addRaw(shared_ptr<const RawScanResult> raw) throw (LogicError){
00133     unsigned index = getIndex( raw->getHeader().getScanNumber() );
00134     data[index].raw=raw;
00135 }
00136 
00137 bool TestResult::hasAllFits() const throw() {
00138     for (unsigned i=0; i<data.size(); ++i){
00139     if (data[i].fit.get()==0) return false;
00140     }
00141     return true;
00142 }
00143 
00144 bool TestResult::hasAllRaws() const throw() {
00145     for (unsigned i=0; i<data.size(); ++i){
00146     if (data[i].raw.get()==0) return false;
00147     }
00148     return true;
00149 }
00150 
00151 unsigned int TestResult::getIndex(unsigned int scanNumber) const throw(LogicError) {
00152     vector<ScanData>::const_iterator i=find(data.begin(), data.end(), scanNumber);
00153     if (i==data.end() ) {
00154         ostringstream text;
00155         text << "TestResult::findScanData scan not found scanNumber="<< scanNumber;
00156         throw InvalidArgumentError( text.str(), __FILE__, __LINE__ );
00157     }
00158     return i-data.begin();
00159 }
00160 
00162 TestResult::ScanData::ScanData(const unsigned int scanNumber, const double testPoint,
00163                                shared_ptr<const RawScanResult> raw, shared_ptr<const FitScanResult> fit ) throw()
00164         : scanNumber(scanNumber), testPoint(testPoint), raw(raw), fit(fit) {}
00165 
00166 TestResult::ScanData::ScanData(const unsigned int scanNumber, const double testPoint) throw()
00167         : scanNumber(scanNumber), testPoint(testPoint) {}
00168 
00169 bool TestResult::ScanData::operator<(const ScanData& s) const throw() {
00170     if (this->scanNumber<s.scanNumber)
00171         return true;
00172     return false;
00173 }
00174 
00175 bool TestResult::ScanData::operator>(const ScanData& s) const throw() {
00176     if (this->scanNumber>s.scanNumber)
00177         return true;
00178     return false;
00179 }
00180 
00181 bool TestResult::ScanData::operator==(const unsigned int aScanNumber) const throw() {
00182     if (this->scanNumber==aScanNumber)
00183         return true;
00184     return false;
00185 }
00186 }

Generated on Mon Dec 15 19:36:20 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3