StrobeDelayDisplayer.cpp

00001 #include "StrobeDelayDisplayer.h"
00002 #include "DisplayManager.h"
00003 #include "DisplayInfo.h"
00004 
00005 #include "Sct/IS/IOManagerIS.h"
00006 #include "Sct/Archive/IONameArchiveFile.h"
00007 #include "Sct/Archive/IOManagerArchiveFile.h"
00008 #include "SctData/StrobeDelayTestResult.h"
00009 #include "SctData/FitScanResult.h"
00010 #include "SctData/ConfigurationVariable.h"
00011 #include "FitDisplayer.h"
00012 #include <TCanvas.h>
00013 #include <string>
00014 #include <iomanip>
00015 #include <boost/scoped_ptr.hpp>
00016 
00017 using namespace Sct;
00018 using namespace SctData;
00019 using namespace std;
00020 using namespace boost;
00021 
00022 namespace SctDataDisplay {
00023 
00024 bool StrobeDelayDisplayer::inMap = DisplayManager::addToMap("SctData::StrobeDelayTestResult", shared_ptr<Displayer>(new StrobeDelayDisplayer()));    
00025     
00026 shared_ptr<DisplayData> StrobeDelayDisplayer::display(shared_ptr<const Sct::Serializable> data, const DisplayInfo& info, std::ostream& os) {
00027     shared_ptr<const StrobeDelayTestResult> result = dynamic_pointer_cast<const StrobeDelayTestResult>(data);
00028     
00029     os << "Module: " << result->getModuleName() << endl;
00030 
00031     //Now print out defects:
00032     os << "Defects: " << endl;
00033     printDefectList(result->getDefects(), os);
00034     
00035     for (unsigned int ichip=0; ichip<result->getNOptima(); ++ichip) {
00036     os << "StrobeDelay for chip: " << ichip << "  " << setprecision(2) << (int) (result->getOptimum(ichip)+0.5) << endl;
00037     }
00038     shared_ptr<const SctData::FitScanResult> fit;
00039     try {
00040       string fitName = result->getHeader().getUniqueID();
00041       shared_ptr<Serializable> ob = Sct::IS::IOManagerIS::instance().read("FittedData.SctData::FitScanResult."+ fitName);
00042     fit = dynamic_pointer_cast<const FitScanResult>(ob);
00043     } catch (Sct::IoException& e){
00044     }
00045     if (fit.get()==0) try {
00046        Sct::Archive::IONameArchiveFile name(result->getHeader().getUniqueID(),"SctData::FitScanResult");
00047        shared_ptr<Serializable> ob = Sct::Archive::IOManagerArchiveFile::instance().read(name.getIOName());
00048        fit = dynamic_pointer_cast<const FitScanResult>(ob);
00049     } catch (Sct::IoException& e) {
00050     }
00051     if (fit.get()==0) {
00052       return shared_ptr<DisplayData>();
00053     }else{
00054       return DisplayManager::instance().display(fit, info, os);
00055     }
00056 }
00057 }

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