ModuleData.cpp

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 }

Generated on Mon Feb 6 14:01:23 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6