00001 #ifndef OCCUPANCY_PROJECTOR_H 00002 #define OCCUPANCY_PROJECTOR_H 00003 #include "Sct/Exception.h" 00004 #include "RawScanResult.h" 00005 #include "ModuleElement.h" 00006 00007 class TH1; 00008 namespace SctData{ 00009 using Sct::LogicError; 00010 00011 class ModuleConfiguration; 00012 class DefectList; 00018 class OccupancyProjector{ 00019 public: 00021 OccupancyProjector(const RawScanResult& r) throw(); 00023 ~OccupancyProjector() throw() ; 00025 00031 std::auto_ptr<TH1> getOccupancy(const char* name, const ModuleElement& element) const throw(LogicError); 00033 void vetoMaskedChannels(const ModuleConfiguration&) throw(); 00035 void vetoAllDefects(const DefectList&) throw(); 00037 void vetoSeriousDefects(const DefectList&) throw(); 00039 void unsetVetos() throw(); 00040 private: 00041 //void setRawScanResult(const RawScanResult&) throw(); 00042 OccupancyProjector() throw() ; //< don't do this: require a rawScanResult 00043 bool m_vetoAllDefects; 00044 const RawScanResult* raw; 00045 const ModuleConfiguration* config; 00046 const DefectList* defects; 00047 }; 00048 } // end of namespace SctData 00049 #endif //#ifndef OCCUPANCY_PROJECTOR_H