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

NoiseOccupancyDisplayer.cpp

00001 #include "NoiseOccupancyDisplayer.h"
00002 #include "DisplayManager.h"
00003 #include "DisplayInfo.h"
00004 
00005 #include "SctData/NoiseOccupancyTestResult.h"
00006 #include "SctData/DefectList.h"
00007 
00008 #include "TF1.h"
00009 #include "TGraph.h"
00010 #include "TCanvas.h"
00011 
00012 #include <iostream>
00013 #include <string>
00014 #include <boost/shared_ptr.hpp>
00015 
00016 using namespace std;
00017 using namespace SctData;
00018 using namespace Sct;
00019 using namespace boost;
00020 
00021 namespace SctDataDisplay {
00022 
00023 
00024 class NoiseOccupancyDisplayData : public DisplayData {
00025 public:
00026     vector<shared_ptr<TCanvas> > canvas;
00027     shared_ptr<const NoiseOccupancyTestResult> test;
00028 };        
00029     
00030 bool NoiseOccupancyDisplayer::inMap = DisplayManager::addToMap("SctData::NoiseOccupancyTestResult", shared_ptr<Displayer>(new NoiseOccupancyDisplayer()));
00031     
00032     
00033 shared_ptr<DisplayData> NoiseOccupancyDisplayer::display(shared_ptr<const Sct::Serializable> serial, const DisplayInfo& info, std::ostream& os) { 
00034     shared_ptr<NoiseOccupancyDisplayData> data (new NoiseOccupancyDisplayData());    
00035     data->test = dynamic_pointer_cast<const NoiseOccupancyTestResult>(serial);
00036     
00037     //Now print out defects:
00038     os << endl << "Defects: " << endl;
00039     printDefectList(data->test->getDefects(), os);
00040     os << endl;
00041 
00042     if (info.displayChips.size() > 0) displayChips(*data, info, os);
00043     
00044     return data;
00045 }
00046 
00047 void NoiseOccupancyDisplayer::displayChips(NoiseOccupancyDisplayData& data, const DisplayInfo& info, std::ostream& os) {
00048     shared_ptr<TCanvas> c = createCanvas(data.test->getModuleName() + "_NO", "Noise Occupancy plots for " + data.test->getModuleName());
00049     data.canvas.push_back(c);
00050     divideCanvas(info.displayChips.size(), *c);
00051     
00052     for (unsigned int i=0; i<info.displayChips.size(); ++i) {
00053         const ChipNOResult& r = data.test->getChipResult(info.displayChips[i]);
00054     os << "Chip " << i << " noise: " << r.getNoise() << "  Fit params: ";
00055     for (int j=0; j<r.fit->GetNpar(); ++j) os << r.fit->GetParameter(j) << "   ";
00056     os << endl;
00057         c->cd(i+1);
00058     if (r.graph.get()){
00059       if (r.graph->GetN()!=0){
00060         r.graph->Draw("ap");
00061         if (r.graph->GetHistogram()){
00062           r.graph->GetHistogram()->SetXTitle("Q^2");
00063           r.graph->GetHistogram()->SetYTitle("Log Occ");
00064         }
00065       }
00066     }
00067     if (r.fit.get()) {
00068       r.fit->SetLineWidth(1);
00069       r.fit->SetLineColor(2);
00070       r.fit->SetFillStyle(0);
00071       r.fit->Draw("lsame");
00072     }   
00073     }
00074 
00075 }
00076 }

Generated on Thu Jul 8 11:41:12 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5