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

ModuleDefectList.cpp

Go to the documentation of this file.
00001 #include "ModuleDefectList.h"
00002 #include "ModuleDefect.h"
00003 #include <iomanip>
00004 
00005 namespace SctData {
00006 
00007 ModuleDefectList::ModuleDefectList() throw() {}
00008 
00009 //Delete all defects done by auto_ptr
00010 ModuleDefectList::~ModuleDefectList() throw() {}
00011     
00012     void ModuleDefectList::addDefect(const ModuleDefect& defect, const ModuleElement& element) throw() {
00013     defectList.push_back(shared_ptr<const ModuleDefect>(new ModuleDefect(defect, element)));
00014     }
00015     
00016     void ModuleDefectList::add( shared_ptr<const ModuleDefect> defect) throw() {
00017         defectList.push_back(defect);
00018     }
00019     
00020     ModuleDefectList& ModuleDefectList::operator+=(const ModuleDefectList& toadd) throw() {
00021         for (unsigned i=0; i<toadd.defectList.size(); ++i) {
00022         this->add(toadd.defectList[i]);
00023     }
00024     return *this;
00025     }
00026 
00027     ostream& ModuleDefectList::print(ostream& out) const throw() {
00028     for (unsigned int i=0; i<defectList.size(); ++i) {
00029         out << setfill(' ') << setw(20) << defectList[i]->getName() 
00030         <<  "\tStart channel: " << defectList[i]->getModuleElement().getFirst() 
00031         << "\t# of channels: " << defectList[i]->getModuleElement().getNChannels() 
00032         << "\t" << defectList[i]->getDescription() << endl;
00033     }
00034     out << "[ total number of defects = " <<  defectList.size() << " ]" << endl;
00035     out << endl;
00036     return out;
00037     }
00038 
00039     const vector< shared_ptr<const ModuleDefect> >& ModuleDefectList::getAllDefects() const throw() {
00040     return defectList;
00041     }
00042 
00043     int ModuleDefectList::getNDefectsAffectingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00044     int count = 0;
00045     for (unsigned i=0; i<defectList.size(); ++i) {
00046         if (defectList[i]->getModuleElement().overlaps(el)) count++;
00047     }
00048     return count;
00049     }
00050     int ModuleDefectList::getNDefectsEncompassingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00051     int count = 0;
00052     for (unsigned i=0; i<defectList.size(); ++i) {
00053         if (defectList[i]->getModuleElement().contains(el)) count++;
00054     }
00055     return count;
00056     }
00057 
00058     bool ModuleDefectList::severeDefectAffectingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00059     for (unsigned int i=0; i<defectList.size(); ++i) {
00060         if (defectList[i]->getModuleElement().overlaps(el) && defectList[i]->isSevere()) return true;
00061     }
00062     return false;
00063     }
00064 
00065     bool ModuleDefectList::severeDefectEncompassingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00066     for (unsigned int i=0; i<defectList.size(); ++i) {
00067         if (defectList[i]->getModuleElement().contains(el) && defectList[i]->isSevere()) return true;
00068     }
00069     return false;
00070     }
00071     
00072     bool ModuleDefectList::defectAffectingElement(const ModuleElement& el, const ModuleDefect& defect) const throw(Sct::LogicError) {
00073     for (unsigned int i=0; i<defectList.size(); ++i) {
00074         if ( defectList[i]->isOfTheSameTypeAs(defect) && 
00075          defectList[i]->getModuleElement().overlaps(el) ) return true;
00076     }
00077     return false;
00078     }
00079 
00080      bool ModuleDefectList::defectEncompassingElement(const ModuleElement& el, const ModuleDefect& defect) const throw(Sct::LogicError) {
00081     for (unsigned int i=0; i<defectList.size(); ++i) {
00082         if ( defectList[i]->isOfTheSameTypeAs(defect) && 
00083          defectList[i]->getModuleElement().contains(el) ) return true;
00084     }
00085     return false;
00086     }
00087     
00088     bool ModuleDefectList::defectAffectingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00089     for (unsigned int i=0; i<defectList.size(); ++i) {
00090         if ( defectList[i]->getModuleElement().overlaps(el) ) return true;
00091     }
00092     return false;
00093     }
00094 
00095     bool ModuleDefectList::defectEncompassingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00096     for (unsigned int i=0; i<defectList.size(); ++i) {
00097         if ( defectList[i]->getModuleElement().contains(el) ) return true;
00098     }
00099     return false;
00100     }
00101 
00102     shared_ptr<ModuleDefectList> ModuleDefectList::getDefectsAffectingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00103     shared_ptr<ModuleDefectList> newDefects(new ModuleDefectList());
00104     for (unsigned int i=0; i<defectList.size(); ++i) {
00105         if (defectList[i]->getModuleElement().overlaps(el)) newDefects->add(defectList[i]);
00106     }
00107     return newDefects;
00108     }
00109     
00110     shared_ptr<ModuleDefectList> ModuleDefectList::getDefectsEncompassingElement(const ModuleElement& el) const throw(Sct::LogicError) {
00111      shared_ptr<ModuleDefectList> newList(new ModuleDefectList()) ;
00112      for (unsigned int i=0; i<defectList.size(); ++i) {
00113          if (defectList[i]->getModuleElement().contains(el)) newList->add(defectList[i]);
00114      }
00115      return newList;
00116      }
00117 
00118     string ModuleDefectList::getClassName() const throw() {
00119     return "SctData::ModuleDefectList";
00120     }
00121 
00122     
00123 }

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