00001 #include "ModuleData.h" 00002 #include "ModuleDataFile.h" 00003 #include "Exceptions.h" 00004 #include "Sct/Env.h" 00005 00006 using namespace Sct; 00007 00008 namespace SctTest { 00009 00010 TestInfo::TestInfo() : runNumber(0), scanNumber(0) {} 00011 00012 ModuleData::ModuleData() { 00013 00014 } 00015 00016 ModuleData::ModuleData(string fileName) { 00017 load(fileName); 00018 } 00019 00020 void ModuleData::load(string fileName) { 00021 string temp = Env::substituteVariables(fileName); 00022 00023 dataMap.clear(); 00024 00025 ModuleDataFile mdf(temp); 00026 while (mdf.hasMoreRecords()) { 00027 ModuleDataRecord mdr = mdf.getNextRecord(); 00028 int index = -1; 00029 if (mdr.testName == "FullBypassTest") index = 0; 00030 if (mdr.testName == "PipelineTest") index = 1; 00031 if (mdr.testName == "StrobeDelay") index = 2; 00032 if (mdr.testName == "ThreePointGain") index = 3; 00033 if (mdr.testName == "Trim") index = 4; 00034 if (mdr.testName == "ResponseCurve") index = 5; 00035 if (mdr.testName == "NO") index = 6; 00036 if (mdr.testName == "Timewalk") index = 7; 00037 00038 if (index >= 0) { 00039 dataMap[mdr.serialNumber].infos[index].path = mdr.dataPath; 00040 dataMap[mdr.serialNumber].infos[index].runNumber = mdr.runNumber; 00041 dataMap[mdr.serialNumber].infos[index].scanNumber = mdr.scanNumber; 00042 } 00043 } 00044 00045 this->fileName = temp; 00046 } 00047 00048 string ModuleData::getFileName() const { 00049 return fileName; 00050 } 00051 00052 bool ModuleData::dataExists(string serialNumber) const { 00053 if (dataMap.find(serialNumber) == dataMap.end()) return false; 00054 else return true; 00055 } 00056 00057 TestInfo ModuleData::getInfo(string serialNumber, unsigned int index) const { 00058 if (dataMap.find(serialNumber) == dataMap.end()) throw NoDataException("No data for " + serialNumber, __FILE__, __LINE__); 00059 else return dataMap.find(serialNumber)->second.infos[index]; 00060 } 00061 00062 TestInfo ModuleData::getResponseCurveInfo(string serialNumber) const { 00063 return getInfo(serialNumber, 5); 00064 } 00065 00066 TestInfo ModuleData::getStrobeDelayInfo(string serialNumber) const { 00067 return getInfo(serialNumber, 2); 00068 } 00069 00070 TestInfo ModuleData::get3PtGainInfo(string serialNumber) const { 00071 return getInfo(serialNumber, 3); 00072 } 00073 00074 TestInfo ModuleData::getTrimInfo(string serialNumber) const { 00075 return getInfo(serialNumber, 4); 00076 } 00077 00078 TestInfo ModuleData::getPipelineInfo(string serialNumber) const { 00079 return getInfo(serialNumber, 1); 00080 } 00081 00082 TestInfo ModuleData::getFullBypassInfo(string serialNumber) const { 00083 return getInfo(serialNumber, 0); 00084 } 00085 00086 TestInfo ModuleData::getNoiseOccupancyInfo(string serialNumber) const { 00087 return getInfo(serialNumber, 6); 00088 } 00089 00090 TestInfo ModuleData::getTimeWalkInfo(string serialNumber) const { 00091 return getInfo(serialNumber, 7); 00092 } 00093 00094 }